Skip to content

Commit

Permalink
Add challengeId to analytic events
Browse files Browse the repository at this point in the history
  • Loading branch information
ivan-magda committed Nov 18, 2023
1 parent 8587b68 commit 3979c98
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package org.hyperskill.app.challenges.widget.domain.analytic

internal object ChallengeWidgetAnalyticParams {
const val PARAM_URL = "url"
const val PARAM_CHALLENGE_ID = "challenge_id"
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticEve
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticPart
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticRoute
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticTarget
import ru.nobird.app.core.model.mapOfNotNull

/**
* Represents a click analytic event on the "Collect Reward" button.
Expand All @@ -15,15 +16,26 @@ import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticTar
* "route": "/home",
* "action": "click",
* "part": "challenge_card",
* "target": "collect_reward"
* "target": "collect_reward",
* "context":
* {
* "challenge_id": 1
* }
* }
* ```
*
* @see HyperskillAnalyticEvent
*/
object ChallengeWidgetClickedCollectRewardHyperskillAnalyticEvent : HyperskillAnalyticEvent(
class ChallengeWidgetClickedCollectRewardHyperskillAnalyticEvent(
val challengeId: Long?
) : HyperskillAnalyticEvent(
HyperskillAnalyticRoute.Home(),
HyperskillAnalyticAction.CLICK,
HyperskillAnalyticPart.CHALLENGE_CARD,
HyperskillAnalyticTarget.COLLECT_REWARD
)
) {
override val params: Map<String, Any>
get() = super.params + mapOf(
PARAM_CONTEXT to mapOfNotNull(ChallengeWidgetAnalyticParams.PARAM_CHALLENGE_ID to challengeId)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticEve
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticPart
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticRoute
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticTarget
import ru.nobird.app.core.model.mapOfNotNull

/**
* Represents a click analytic event on the "Reload" button.
Expand All @@ -15,15 +16,26 @@ import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticTar
* "route": "/home",
* "action": "click",
* "part": "challenge_card",
* "target": "deadline_reload"
* "target": "deadline_reload",
* "context":
* {
* "challenge_id": 1
* }
* }
* ```
*
* @see HyperskillAnalyticEvent
*/
object ChallengeWidgetClickedDeadlineReloadHyperskillAnalyticEvent : HyperskillAnalyticEvent(
class ChallengeWidgetClickedDeadlineReloadHyperskillAnalyticEvent(
val challengeId: Long?
) : HyperskillAnalyticEvent(
HyperskillAnalyticRoute.Home(),
HyperskillAnalyticAction.CLICK,
HyperskillAnalyticPart.CHALLENGE_CARD,
HyperskillAnalyticTarget.DEADLINE_RELOAD
)
) {
override val params: Map<String, Any>
get() = super.params + mapOf(
PARAM_CONTEXT to mapOfNotNull(ChallengeWidgetAnalyticParams.PARAM_CHALLENGE_ID to challengeId)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticEve
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticPart
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticRoute
import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticTarget
import ru.nobird.app.core.model.mapOfNotNull

/**
* Represents a click analytic event on a link in the description block.
Expand All @@ -18,27 +19,28 @@ import org.hyperskill.app.analytic.domain.model.hyperskill.HyperskillAnalyticTar
* "target": "link"
* "context":
* {
* "url": "https://sample.com/"
* "url": "https://sample.com/",
* "challenge_id": 1
* }
* }
* ```
*
* @see HyperskillAnalyticEvent
*/
class ChallengeWidgetClickedLinkInTheDescriptionHyperskillAnalyticEvent(
val challengeId: Long?,
val url: String
) : HyperskillAnalyticEvent(
HyperskillAnalyticRoute.Home(),
HyperskillAnalyticAction.CLICK,
HyperskillAnalyticPart.CHALLENGE_CARD,
HyperskillAnalyticTarget.LINK
) {
companion object {
private const val PARAM_URL = "url"
}

override val params: Map<String, Any>
get() = super.params + mapOf(
PARAM_CONTEXT to mapOf(PARAM_URL to url)
PARAM_CONTEXT to mapOfNotNull(
ChallengeWidgetAnalyticParams.PARAM_CHALLENGE_ID to challengeId,
ChallengeWidgetAnalyticParams.PARAM_URL to url
)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,10 @@ class ChallengeWidgetReducer : StateReducer<State, Message, Action> {
state to setOf(
Action.ViewAction.OpenUrl(url = message.url, shouldOpenInApp = true),
InternalAction.LogAnalyticEvent(
ChallengeWidgetClickedLinkInTheDescriptionHyperskillAnalyticEvent(url = message.url)
ChallengeWidgetClickedLinkInTheDescriptionHyperskillAnalyticEvent(
challengeId = state.getCurrentChallenge()?.id,
url = message.url
)
)
)
} else {
Expand All @@ -117,7 +120,11 @@ class ChallengeWidgetReducer : StateReducer<State, Message, Action> {
}

newState to setOf(
InternalAction.LogAnalyticEvent(ChallengeWidgetClickedDeadlineReloadHyperskillAnalyticEvent)
InternalAction.LogAnalyticEvent(
ChallengeWidgetClickedDeadlineReloadHyperskillAnalyticEvent(
challengeId = state.getCurrentChallenge()?.id
)
)
)
} else {
null
Expand All @@ -128,7 +135,13 @@ class ChallengeWidgetReducer : StateReducer<State, Message, Action> {
state.getCurrentChallenge()?.rewardLink?.let {
add(InternalAction.CreateMagicLink(nextUrl = it))
}
add(InternalAction.LogAnalyticEvent(ChallengeWidgetClickedCollectRewardHyperskillAnalyticEvent))
add(
InternalAction.LogAnalyticEvent(
ChallengeWidgetClickedCollectRewardHyperskillAnalyticEvent(
challengeId = state.getCurrentChallenge()?.id
)
)
)
}

private fun handleCreateMagicLinkFailureMessage(state: State): ChallengeWidgetReducerResult? =
Expand Down

0 comments on commit 3979c98

Please sign in to comment.