Skip to content

Commit a6a49ec

Browse files
Merge pull request #958 from StepicOrg/release/1.213
Release/1.213
2 parents d04078e + 3e24713 commit a6a49ec

25 files changed

+146
-108
lines changed

app/src/main/java/org/stepic/droid/ui/activities/MainFeedActivity.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ import org.stepic.droid.ui.fragments.NotificationsFragment
3030
import org.stepic.droid.util.AppConstants
3131
import org.stepic.droid.util.DateTimeHelper
3232
import org.stepic.droid.util.commit
33-
import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent
33+
import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT
34+
import org.stepik.android.domain.base.analytic.toAnalyticEvent
3435
import org.stepik.android.domain.course.analytic.CourseViewSource
3536
import org.stepik.android.domain.streak.interactor.StreakInteractor
3637
import org.stepik.android.model.Course
@@ -76,8 +77,6 @@ class MainFeedActivity : BackToExitActivityWithSmartLockBase(),
7677
const val NOTIFICATIONS_INDEX: Int = 4
7778
const val DEBUG_INDEX: Int = 5
7879

79-
const val EXTRA_PARCELABLE_ANALYTIC_EVENT = "parcelable_analytic_event"
80-
8180
fun launchAfterLogin(sourceActivity: Activity, course: Course?) {
8281
val intent = Intent(sourceActivity, MainFeedActivity::class.java)
8382
if (course != null) {
@@ -176,7 +175,10 @@ class MainFeedActivity : BackToExitActivityWithSmartLockBase(),
176175
if (savedInstanceState == null) {
177176
checkShortcutAction(intent)
178177
checkNotificationClick(intent)
179-
val analyticEvent = intent.getParcelableExtra<ParcelableAnalyticEvent>(EXTRA_PARCELABLE_ANALYTIC_EVENT)
178+
val analyticEvent = intent
179+
.getBundleExtra(BUNDLEABLE_ANALYTIC_EVENT)
180+
?.toAnalyticEvent()
181+
180182
if (analyticEvent != null) {
181183
analytic.report(analyticEvent)
182184
}

app/src/main/java/org/stepic/droid/ui/activities/SplashActivity.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,15 @@ import org.stepic.droid.core.presenters.SplashPresenter
2323
import org.stepic.droid.core.presenters.contracts.SplashView
2424
import org.stepic.droid.util.AppConstants
2525
import org.stepic.droid.util.defaultLocale
26-
import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent
26+
import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT
27+
import org.stepik.android.domain.base.analytic.toAnalyticEvent
2728
import org.stepik.android.view.routing.deeplink.BranchRoute
2829
import java.util.Arrays
2930
import javax.inject.Inject
3031

3132
class SplashActivity : BackToExitActivityBase(), SplashView {
3233

3334
companion object {
34-
const val EXTRA_PARCELABLE_ANALYTIC_EVENT = "parcelable_analytic_event"
35-
3635
private const val RUSSIAN_LANGUAGE_CODE = "ru"
3736
}
3837

@@ -59,7 +58,10 @@ class SplashActivity : BackToExitActivityBase(), SplashView {
5958
// return
6059
// }
6160
if (savedInstanceState == null) {
62-
val analyticEvent = intent.getParcelableExtra<ParcelableAnalyticEvent>(EXTRA_PARCELABLE_ANALYTIC_EVENT)
61+
val analyticEvent = intent
62+
.getBundleExtra(BUNDLEABLE_ANALYTIC_EVENT)
63+
?.toAnalyticEvent()
64+
6365
if (analyticEvent != null) {
6466
analytics.report(analyticEvent)
6567
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.stepik.android.domain.base.analytic
2+
3+
import android.os.Bundle
4+
import androidx.core.os.bundleOf
5+
6+
const val BUNDLEABLE_ANALYTIC_EVENT = "bundleable_analytic_event"
7+
8+
private const val BUNDLEABLE_EVENT_NAME = "bundleable_event_name"
9+
private const val BUNDLEABLE_EVENT_PARAMS = "bundleable_event_params"
10+
11+
fun AnalyticEvent.toBundle(): Bundle =
12+
bundleOf(
13+
BUNDLEABLE_EVENT_NAME to name,
14+
BUNDLEABLE_EVENT_PARAMS to bundleOf(*params.map { (a, b) -> a to b }.toTypedArray())
15+
)
16+
17+
fun Bundle.toAnalyticEvent(): AnalyticEvent? {
18+
val eventName = getString(BUNDLEABLE_EVENT_NAME)
19+
val eventParams = getBundle(BUNDLEABLE_EVENT_PARAMS)
20+
return if (eventName == null) {
21+
null
22+
} else {
23+
object : AnalyticEvent {
24+
override val name: String =
25+
eventName
26+
27+
override val params: Map<String, Any> =
28+
eventParams?.let { bundle ->
29+
bundle
30+
.keySet()
31+
.mapNotNull { key -> bundle[key]?.let { value -> key to value } }
32+
.toMap()
33+
} ?: emptyMap()
34+
}
35+
}
36+
}

app/src/main/java/org/stepik/android/domain/base/analytic/ParcelableAnalyticEvent.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationClicked.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package org.stepik.android.domain.personal_deadlines.analytic
22

3-
import kotlinx.android.parcel.Parcelize
4-
import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent
3+
import org.stepik.android.domain.base.analytic.AnalyticEvent
54

6-
@Parcelize
7-
data class DeadlinesNotificationClicked(
8-
val course: Long,
9-
val hours: Long
10-
) : ParcelableAnalyticEvent {
5+
class DeadlinesNotificationClicked(
6+
course: Long,
7+
hours: Long
8+
) : AnalyticEvent {
119
companion object {
1210
private const val PARAM_COURSE = "course"
1311
private const val PARAM_HOURS = "hours"

app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationDismissed.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package org.stepik.android.domain.personal_deadlines.analytic
22

3-
import kotlinx.android.parcel.Parcelize
4-
import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent
3+
import org.stepik.android.domain.base.analytic.AnalyticEvent
54

6-
@Parcelize
7-
data class DeadlinesNotificationDismissed(
8-
val course: Long,
9-
val hours: Long
10-
) : ParcelableAnalyticEvent {
5+
class DeadlinesNotificationDismissed(
6+
course: Long,
7+
hours: Long
8+
) : AnalyticEvent {
119
companion object {
1210
private const val PARAM_COURSE = "course"
1311
private const val PARAM_HOURS = "hours"

app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationClicked.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package org.stepik.android.domain.purchase_notification.analytic
22

3-
import kotlinx.android.parcel.Parcelize
4-
import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent
3+
import org.stepik.android.domain.base.analytic.AnalyticEvent
54

6-
@Parcelize
7-
data class PurchaseNotificationClicked(val courseId: Long) : ParcelableAnalyticEvent {
5+
class PurchaseNotificationClicked(courseId: Long) : AnalyticEvent {
86
companion object {
97
private const val PARAM_COURSE = "course"
108
}

app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationDismissed.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package org.stepik.android.domain.purchase_notification.analytic
22

3-
import kotlinx.android.parcel.Parcelize
4-
import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent
3+
import org.stepik.android.domain.base.analytic.AnalyticEvent
54

6-
@Parcelize
7-
data class PurchaseNotificationDismissed(val courseId: Long) : ParcelableAnalyticEvent {
5+
class PurchaseNotificationDismissed(courseId: Long) : AnalyticEvent {
86
companion object {
97
private const val PARAM_COURSE = "course"
108
}
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package org.stepik.android.domain.remind.analytic
22

3-
import kotlinx.android.parcel.Parcelize
4-
import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent
3+
import org.stepik.android.domain.base.analytic.AnalyticEvent
54

6-
@Parcelize
7-
object RemindAppNotificationClicked : ParcelableAnalyticEvent {
5+
object RemindAppNotificationClicked : AnalyticEvent {
86
override val name: String =
97
"Remind app notification clicked"
108
}
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package org.stepik.android.domain.remind.analytic
22

3-
import kotlinx.android.parcel.Parcelize
4-
import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent
3+
import org.stepik.android.domain.base.analytic.AnalyticEvent
54

6-
@Parcelize
7-
object RemindAppNotificationDismissed : ParcelableAnalyticEvent {
5+
object RemindAppNotificationDismissed : AnalyticEvent {
86
override val name: String =
97
"Remind app notification dismissed"
108
}

0 commit comments

Comments
 (0)