diff --git a/app/src/main/java/org/stepic/droid/ui/activities/MainFeedActivity.kt b/app/src/main/java/org/stepic/droid/ui/activities/MainFeedActivity.kt index 9b5c0119e5..4d5ae8df49 100644 --- a/app/src/main/java/org/stepic/droid/ui/activities/MainFeedActivity.kt +++ b/app/src/main/java/org/stepic/droid/ui/activities/MainFeedActivity.kt @@ -30,7 +30,8 @@ import org.stepic.droid.ui.fragments.NotificationsFragment import org.stepic.droid.util.AppConstants import org.stepic.droid.util.DateTimeHelper import org.stepic.droid.util.commit -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toAnalyticEvent import org.stepik.android.domain.course.analytic.CourseViewSource import org.stepik.android.domain.streak.interactor.StreakInteractor import org.stepik.android.model.Course @@ -76,8 +77,6 @@ class MainFeedActivity : BackToExitActivityWithSmartLockBase(), const val NOTIFICATIONS_INDEX: Int = 4 const val DEBUG_INDEX: Int = 5 - const val EXTRA_PARCELABLE_ANALYTIC_EVENT = "parcelable_analytic_event" - fun launchAfterLogin(sourceActivity: Activity, course: Course?) { val intent = Intent(sourceActivity, MainFeedActivity::class.java) if (course != null) { @@ -176,7 +175,10 @@ class MainFeedActivity : BackToExitActivityWithSmartLockBase(), if (savedInstanceState == null) { checkShortcutAction(intent) checkNotificationClick(intent) - val analyticEvent = intent.getParcelableExtra(EXTRA_PARCELABLE_ANALYTIC_EVENT) + val analyticEvent = intent + .getBundleExtra(BUNDLEABLE_ANALYTIC_EVENT) + ?.toAnalyticEvent() + if (analyticEvent != null) { analytic.report(analyticEvent) } diff --git a/app/src/main/java/org/stepic/droid/ui/activities/SplashActivity.kt b/app/src/main/java/org/stepic/droid/ui/activities/SplashActivity.kt index be36cdea37..d34fa12a96 100644 --- a/app/src/main/java/org/stepic/droid/ui/activities/SplashActivity.kt +++ b/app/src/main/java/org/stepic/droid/ui/activities/SplashActivity.kt @@ -23,7 +23,8 @@ import org.stepic.droid.core.presenters.SplashPresenter import org.stepic.droid.core.presenters.contracts.SplashView import org.stepic.droid.util.AppConstants import org.stepic.droid.util.defaultLocale -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toAnalyticEvent import org.stepik.android.view.routing.deeplink.BranchRoute import java.util.Arrays import javax.inject.Inject @@ -31,8 +32,6 @@ import javax.inject.Inject class SplashActivity : BackToExitActivityBase(), SplashView { companion object { - const val EXTRA_PARCELABLE_ANALYTIC_EVENT = "parcelable_analytic_event" - private const val RUSSIAN_LANGUAGE_CODE = "ru" } @@ -59,7 +58,10 @@ class SplashActivity : BackToExitActivityBase(), SplashView { // return // } if (savedInstanceState == null) { - val analyticEvent = intent.getParcelableExtra(EXTRA_PARCELABLE_ANALYTIC_EVENT) + val analyticEvent = intent + .getBundleExtra(BUNDLEABLE_ANALYTIC_EVENT) + ?.toAnalyticEvent() + if (analyticEvent != null) { analytics.report(analyticEvent) } diff --git a/app/src/main/java/org/stepik/android/domain/base/analytic/AnalyticEventExtensions.kt b/app/src/main/java/org/stepik/android/domain/base/analytic/AnalyticEventExtensions.kt new file mode 100644 index 0000000000..2b8fc942cb --- /dev/null +++ b/app/src/main/java/org/stepik/android/domain/base/analytic/AnalyticEventExtensions.kt @@ -0,0 +1,36 @@ +package org.stepik.android.domain.base.analytic + +import android.os.Bundle +import androidx.core.os.bundleOf + +const val BUNDLEABLE_ANALYTIC_EVENT = "bundleable_analytic_event" + +private const val BUNDLEABLE_EVENT_NAME = "bundleable_event_name" +private const val BUNDLEABLE_EVENT_PARAMS = "bundleable_event_params" + +fun AnalyticEvent.toBundle(): Bundle = + bundleOf( + BUNDLEABLE_EVENT_NAME to name, + BUNDLEABLE_EVENT_PARAMS to bundleOf(*params.map { (a, b) -> a to b }.toTypedArray()) + ) + +fun Bundle.toAnalyticEvent(): AnalyticEvent? { + val eventName = getString(BUNDLEABLE_EVENT_NAME) + val eventParams = getBundle(BUNDLEABLE_EVENT_PARAMS) + return if (eventName == null) { + null + } else { + object : AnalyticEvent { + override val name: String = + eventName + + override val params: Map = + eventParams?.let { bundle -> + bundle + .keySet() + .mapNotNull { key -> bundle[key]?.let { value -> key to value } } + .toMap() + } ?: emptyMap() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/org/stepik/android/domain/base/analytic/ParcelableAnalyticEvent.kt b/app/src/main/java/org/stepik/android/domain/base/analytic/ParcelableAnalyticEvent.kt deleted file mode 100644 index 7454170e1a..0000000000 --- a/app/src/main/java/org/stepik/android/domain/base/analytic/ParcelableAnalyticEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.stepik.android.domain.base.analytic - -import android.os.Parcelable - -interface ParcelableAnalyticEvent : AnalyticEvent, Parcelable \ No newline at end of file diff --git a/app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationClicked.kt b/app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationClicked.kt index 2e77dc53e1..b58bc1f181 100644 --- a/app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationClicked.kt +++ b/app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationClicked.kt @@ -1,13 +1,11 @@ package org.stepik.android.domain.personal_deadlines.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -data class DeadlinesNotificationClicked( - val course: Long, - val hours: Long -) : ParcelableAnalyticEvent { +class DeadlinesNotificationClicked( + course: Long, + hours: Long +) : AnalyticEvent { companion object { private const val PARAM_COURSE = "course" private const val PARAM_HOURS = "hours" diff --git a/app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationDismissed.kt b/app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationDismissed.kt index 22893e00d6..93afc5adb6 100644 --- a/app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationDismissed.kt +++ b/app/src/main/java/org/stepik/android/domain/personal_deadlines/analytic/DeadlinesNotificationDismissed.kt @@ -1,13 +1,11 @@ package org.stepik.android.domain.personal_deadlines.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -data class DeadlinesNotificationDismissed( - val course: Long, - val hours: Long -) : ParcelableAnalyticEvent { +class DeadlinesNotificationDismissed( + course: Long, + hours: Long +) : AnalyticEvent { companion object { private const val PARAM_COURSE = "course" private const val PARAM_HOURS = "hours" diff --git a/app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationClicked.kt b/app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationClicked.kt index 28f3ebed20..1b8975909f 100644 --- a/app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationClicked.kt +++ b/app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationClicked.kt @@ -1,10 +1,8 @@ package org.stepik.android.domain.purchase_notification.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -data class PurchaseNotificationClicked(val courseId: Long) : ParcelableAnalyticEvent { +class PurchaseNotificationClicked(courseId: Long) : AnalyticEvent { companion object { private const val PARAM_COURSE = "course" } diff --git a/app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationDismissed.kt b/app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationDismissed.kt index 9e66e4afee..61072ebd6e 100644 --- a/app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationDismissed.kt +++ b/app/src/main/java/org/stepik/android/domain/purchase_notification/analytic/PurchaseNotificationDismissed.kt @@ -1,10 +1,8 @@ package org.stepik.android.domain.purchase_notification.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -data class PurchaseNotificationDismissed(val courseId: Long) : ParcelableAnalyticEvent { +class PurchaseNotificationDismissed(courseId: Long) : AnalyticEvent { companion object { private const val PARAM_COURSE = "course" } diff --git a/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindAppNotificationClicked.kt b/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindAppNotificationClicked.kt index 4bf873ddb4..aaa2966d69 100644 --- a/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindAppNotificationClicked.kt +++ b/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindAppNotificationClicked.kt @@ -1,10 +1,8 @@ package org.stepik.android.domain.remind.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -object RemindAppNotificationClicked : ParcelableAnalyticEvent { +object RemindAppNotificationClicked : AnalyticEvent { override val name: String = "Remind app notification clicked" } \ No newline at end of file diff --git a/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindAppNotificationDismissed.kt b/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindAppNotificationDismissed.kt index 62ecc363f1..61c1840755 100644 --- a/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindAppNotificationDismissed.kt +++ b/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindAppNotificationDismissed.kt @@ -1,10 +1,8 @@ package org.stepik.android.domain.remind.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -object RemindAppNotificationDismissed : ParcelableAnalyticEvent { +object RemindAppNotificationDismissed : AnalyticEvent { override val name: String = "Remind app notification dismissed" } \ No newline at end of file diff --git a/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindRegistrationNotificationClicked.kt b/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindRegistrationNotificationClicked.kt index 0928b4543b..1529712d58 100644 --- a/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindRegistrationNotificationClicked.kt +++ b/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindRegistrationNotificationClicked.kt @@ -1,10 +1,8 @@ package org.stepik.android.domain.remind.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -object RemindRegistrationNotificationClicked : ParcelableAnalyticEvent { +object RemindRegistrationNotificationClicked : AnalyticEvent { override val name: String = "Remind registration notification clicked" } \ No newline at end of file diff --git a/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindRegistrationNotificationDismissed.kt b/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindRegistrationNotificationDismissed.kt index f6638b6625..d635ac23e0 100644 --- a/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindRegistrationNotificationDismissed.kt +++ b/app/src/main/java/org/stepik/android/domain/remind/analytic/RemindRegistrationNotificationDismissed.kt @@ -1,10 +1,8 @@ package org.stepik.android.domain.remind.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -object RemindRegistrationNotificationDismissed : ParcelableAnalyticEvent { +object RemindRegistrationNotificationDismissed : AnalyticEvent { override val name: String = "Remind registration notification dismissed" } \ No newline at end of file diff --git a/app/src/main/java/org/stepik/android/domain/retention/analytic/RetentionNotificationClicked.kt b/app/src/main/java/org/stepik/android/domain/retention/analytic/RetentionNotificationClicked.kt index b76fb84338..bbe022be21 100644 --- a/app/src/main/java/org/stepik/android/domain/retention/analytic/RetentionNotificationClicked.kt +++ b/app/src/main/java/org/stepik/android/domain/retention/analytic/RetentionNotificationClicked.kt @@ -1,14 +1,12 @@ package org.stepik.android.domain.retention.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -data class RetentionNotificationClicked( - val day: Int -) : ParcelableAnalyticEvent { +class RetentionNotificationClicked( + day: Int +) : AnalyticEvent { companion object { - private const val PARAM_DAY = "day" + const val PARAM_DAY = "day" } override val name: String = diff --git a/app/src/main/java/org/stepik/android/domain/retention/analytic/RetentionNotificationDismissed.kt b/app/src/main/java/org/stepik/android/domain/retention/analytic/RetentionNotificationDismissed.kt index 9b5f946aea..d43b638de2 100644 --- a/app/src/main/java/org/stepik/android/domain/retention/analytic/RetentionNotificationDismissed.kt +++ b/app/src/main/java/org/stepik/android/domain/retention/analytic/RetentionNotificationDismissed.kt @@ -1,14 +1,12 @@ package org.stepik.android.domain.retention.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -data class RetentionNotificationDismissed( - val day: Int -) : ParcelableAnalyticEvent { +class RetentionNotificationDismissed( + day: Int +) : AnalyticEvent { companion object { - private const val PARAM_DAY = "day" + const val PARAM_DAY = "day" } override val name: String = diff --git a/app/src/main/java/org/stepik/android/domain/streak/analytic/StreakNotificationClicked.kt b/app/src/main/java/org/stepik/android/domain/streak/analytic/StreakNotificationClicked.kt index 0ee57ba520..2659cc30f1 100644 --- a/app/src/main/java/org/stepik/android/domain/streak/analytic/StreakNotificationClicked.kt +++ b/app/src/main/java/org/stepik/android/domain/streak/analytic/StreakNotificationClicked.kt @@ -1,12 +1,10 @@ package org.stepik.android.domain.streak.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -data class StreakNotificationClicked( - val type: String -) : ParcelableAnalyticEvent { +class StreakNotificationClicked( + type: String +) : AnalyticEvent { companion object { private const val PARAM_TYPE = "type" } diff --git a/app/src/main/java/org/stepik/android/domain/streak/analytic/StreakNotificationDismissed.kt b/app/src/main/java/org/stepik/android/domain/streak/analytic/StreakNotificationDismissed.kt index b47c19424f..2e07efb25a 100644 --- a/app/src/main/java/org/stepik/android/domain/streak/analytic/StreakNotificationDismissed.kt +++ b/app/src/main/java/org/stepik/android/domain/streak/analytic/StreakNotificationDismissed.kt @@ -1,12 +1,10 @@ package org.stepik.android.domain.streak.analytic -import kotlinx.android.parcel.Parcelize -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.AnalyticEvent -@Parcelize -data class StreakNotificationDismissed( - val type: String -) : ParcelableAnalyticEvent { +class StreakNotificationDismissed( + type: String +) : AnalyticEvent { companion object { private const val PARAM_TYPE = "type" } diff --git a/app/src/main/java/org/stepik/android/view/base/receiver/DismissedNotificationReceiver.kt b/app/src/main/java/org/stepik/android/view/base/receiver/DismissedNotificationReceiver.kt index 9ddb7b2b33..9271caec49 100644 --- a/app/src/main/java/org/stepik/android/view/base/receiver/DismissedNotificationReceiver.kt +++ b/app/src/main/java/org/stepik/android/view/base/receiver/DismissedNotificationReceiver.kt @@ -3,11 +3,12 @@ package org.stepik.android.view.base.receiver import android.content.BroadcastReceiver import android.content.Context import android.content.Intent +import android.os.Bundle import org.stepic.droid.analytic.Analytic import org.stepic.droid.base.App import org.stepic.droid.preferences.SharedPreferenceHelper -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent -import org.stepik.android.domain.streak.analytic.StreakNotificationDismissed +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toAnalyticEvent import java.util.concurrent.ThreadPoolExecutor import javax.inject.Inject @@ -16,12 +17,17 @@ class DismissedNotificationReceiver : BroadcastReceiver() { const val REQUEST_CODE = 13202 private const val NOTIFICATION_DISMISSED = "notification_dismissed" - private const val EXTRA_PARCELABLE_ANALYTIC_EVENT = "parcelable_analytic_event" + private const val STREAK_NOTIFICATION_DISMISSED = "streak_notification_dismissed" - fun createIntent(context: Context, analyticEvent: ParcelableAnalyticEvent): Intent = + fun createIntent(context: Context, bundleableAnalyticEvent: Bundle): Intent = Intent(context, DismissedNotificationReceiver::class.java) .setAction(NOTIFICATION_DISMISSED) - .putExtra(EXTRA_PARCELABLE_ANALYTIC_EVENT, analyticEvent) + .putExtra(BUNDLEABLE_ANALYTIC_EVENT, bundleableAnalyticEvent) + + fun createStreakNotificationIntent(context: Context, bundleableAnalyticEvent: Bundle): Intent = + Intent(context, DismissedNotificationReceiver::class.java) + .setAction(STREAK_NOTIFICATION_DISMISSED) + .putExtra(BUNDLEABLE_ANALYTIC_EVENT, bundleableAnalyticEvent) } @Inject @@ -39,16 +45,25 @@ class DismissedNotificationReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { val action = intent?.action ?: return - if (action == NOTIFICATION_DISMISSED) { - val analyticEvent = intent.getParcelableExtra(EXTRA_PARCELABLE_ANALYTIC_EVENT) - if (analyticEvent != null) { - analytic.report(analyticEvent) - } - if (analyticEvent is StreakNotificationDismissed) { + when (action) { + NOTIFICATION_DISMISSED -> + logAnalyticEvent(intent) + STREAK_NOTIFICATION_DISMISSED -> { + logAnalyticEvent(intent) threadPool.execute { sharedPreferences.resetNumberOfStreakNotifications() } } } } + + private fun logAnalyticEvent(intent: Intent) { + val analyticEvent = intent + .getBundleExtra(BUNDLEABLE_ANALYTIC_EVENT) + ?.toAnalyticEvent() + + if (analyticEvent != null) { + analytic.report(analyticEvent) + } + } } \ No newline at end of file diff --git a/app/src/main/java/org/stepik/android/view/course/ui/activity/CourseActivity.kt b/app/src/main/java/org/stepik/android/view/course/ui/activity/CourseActivity.kt index 21aefd1466..499e7c5083 100644 --- a/app/src/main/java/org/stepik/android/view/course/ui/activity/CourseActivity.kt +++ b/app/src/main/java/org/stepik/android/view/course/ui/activity/CourseActivity.kt @@ -33,7 +33,8 @@ import org.stepic.droid.ui.dialogs.UnauthorizedDialogFragment import org.stepic.droid.ui.util.snackbar import org.stepic.droid.util.ProgressHelper import org.stepic.droid.util.resolveColorAttribute -import org.stepik.android.domain.base.analytic.ParcelableAnalyticEvent +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toAnalyticEvent import org.stepik.android.domain.course.analytic.CourseJoinedEvent import org.stepik.android.domain.course.analytic.CourseViewSource import org.stepik.android.domain.course_news.analytic.CourseNewsScreenOpenedAnalyticEvent @@ -83,8 +84,6 @@ class CourseActivity : private const val EXTRA_DEEPLINK_PROMO_CODE = "deeplink_promo_code" private const val EXTRA_CONTINUE_LEARNING = "continue_learning" - const val EXTRA_PARCELABLE_ANALYTIC_EVENT = "parcelable_analytic_event" - private const val NO_ID = -1L private const val NO_TITLE = "" @@ -213,7 +212,10 @@ class CourseActivity : injectComponent(courseId) if (savedInstanceState == null) { - val analyticEvent = intent.getParcelableExtra(EXTRA_PARCELABLE_ANALYTIC_EVENT) + val analyticEvent = intent + .getBundleExtra(BUNDLEABLE_ANALYTIC_EVENT) + ?.toAnalyticEvent() + if (analyticEvent != null) { analytic.report(analyticEvent) } diff --git a/app/src/main/java/org/stepik/android/view/course_list/notification/RemindAppNotificationDelegate.kt b/app/src/main/java/org/stepik/android/view/course_list/notification/RemindAppNotificationDelegate.kt index 6ed267dfbe..61cf68066a 100644 --- a/app/src/main/java/org/stepik/android/view/course_list/notification/RemindAppNotificationDelegate.kt +++ b/app/src/main/java/org/stepik/android/view/course_list/notification/RemindAppNotificationDelegate.kt @@ -7,9 +7,10 @@ import org.stepic.droid.R import org.stepic.droid.analytic.Analytic import org.stepic.droid.core.ScreenManager import org.stepic.droid.preferences.SharedPreferenceHelper -import org.stepic.droid.ui.activities.MainFeedActivity import org.stepic.droid.util.AppConstants import org.stepic.droid.util.DateTimeHelper +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toBundle import org.stepik.android.domain.course_list.interactor.RemindAppNotificationInteractor import org.stepik.android.domain.remind.analytic.RemindAppNotificationClicked import org.stepik.android.domain.remind.analytic.RemindAppNotificationDismissed @@ -43,13 +44,13 @@ constructor( return } - val deleteIntent = DismissedNotificationReceiver.createIntent(context, RemindAppNotificationDismissed) + val deleteIntent = DismissedNotificationReceiver.createIntent(context, RemindAppNotificationDismissed.toBundle()) val deletePendingIntent = PendingIntent.getBroadcast(context, 0, deleteIntent, PendingIntent.FLAG_CANCEL_CURRENT) // now we can show notification val intent = screenManager.getCatalogIntent(context) intent.action = REMIND_APP_NOTIFICATION_CLICKED - intent.putExtra(MainFeedActivity.EXTRA_PARCELABLE_ANALYTIC_EVENT, RemindAppNotificationClicked) + intent.putExtra(BUNDLEABLE_ANALYTIC_EVENT, RemindAppNotificationClicked.toBundle()) val taskBuilder: TaskStackBuilder = TaskStackBuilder .create(context) diff --git a/app/src/main/java/org/stepik/android/view/personal_deadlines/notification/DeadlinesNotificationDelegate.kt b/app/src/main/java/org/stepik/android/view/personal_deadlines/notification/DeadlinesNotificationDelegate.kt index 5cda3e862e..b3c957b6e6 100644 --- a/app/src/main/java/org/stepik/android/view/personal_deadlines/notification/DeadlinesNotificationDelegate.kt +++ b/app/src/main/java/org/stepik/android/view/personal_deadlines/notification/DeadlinesNotificationDelegate.kt @@ -12,6 +12,8 @@ import org.stepic.droid.util.AppConstants import org.stepic.droid.util.DateTimeHelper import org.stepic.droid.util.resolveColorAttribute import org.stepik.android.cache.personal_deadlines.model.DeadlineEntity +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toBundle import org.stepik.android.domain.course.analytic.CourseViewSource import org.stepik.android.domain.personal_deadlines.analytic.DeadlinesNotificationClicked import org.stepik.android.domain.personal_deadlines.analytic.DeadlinesNotificationDismissed @@ -86,7 +88,7 @@ constructor( val hoursDiff = (deadline.deadline.time - DateTimeHelper.nowUtc()) / AppConstants.MILLIS_IN_1HOUR + 1 val intent = CourseActivity.createIntent(context, course, source = CourseViewSource.Notification) - intent.putExtra(CourseActivity.EXTRA_PARCELABLE_ANALYTIC_EVENT, DeadlinesNotificationClicked(course.id, hoursDiff)) + intent.putExtra(BUNDLEABLE_ANALYTIC_EVENT, DeadlinesNotificationClicked(course.id, hoursDiff).toBundle()) intent.putExtra(Analytic.Deadlines.Params.BEFORE_DEADLINE, hoursDiff) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) @@ -94,7 +96,7 @@ constructor( taskBuilder.addParentStack(CourseActivity::class.java) taskBuilder.addNextIntent(intent) - val deleteIntent = DismissedNotificationReceiver.createIntent(context, DeadlinesNotificationDismissed(course.id, hoursDiff)) + val deleteIntent = DismissedNotificationReceiver.createIntent(context, DeadlinesNotificationDismissed(course.id, hoursDiff).toBundle()) val deletePendingIntent = PendingIntent.getBroadcast(context, deadline.sectionId.toInt(), deleteIntent, PendingIntent.FLAG_CANCEL_CURRENT) val title = context.getString(R.string.app_name) diff --git a/app/src/main/java/org/stepik/android/view/purchase_notification/notification/PurchaseNotificationDelegate.kt b/app/src/main/java/org/stepik/android/view/purchase_notification/notification/PurchaseNotificationDelegate.kt index 09eabc8b2e..53b90475d6 100644 --- a/app/src/main/java/org/stepik/android/view/purchase_notification/notification/PurchaseNotificationDelegate.kt +++ b/app/src/main/java/org/stepik/android/view/purchase_notification/notification/PurchaseNotificationDelegate.kt @@ -10,6 +10,8 @@ import org.stepic.droid.analytic.Analytic import org.stepic.droid.notifications.model.StepikNotificationChannel import org.stepic.droid.util.resolveColorAttribute import org.stepik.android.data.purchase_notification.model.PurchaseNotificationScheduled +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toBundle import org.stepik.android.domain.course.analytic.CourseViewSource import org.stepik.android.domain.purchase_notification.analytic.PurchaseNotificationClicked import org.stepik.android.domain.purchase_notification.analytic.PurchaseNotificationDismissed @@ -62,14 +64,14 @@ constructor( course, CourseViewSource.PurchaseReminderNotification ) - intent.putExtra(CourseActivity.EXTRA_PARCELABLE_ANALYTIC_EVENT, PurchaseNotificationClicked(course.id)) + intent.putExtra(BUNDLEABLE_ANALYTIC_EVENT, PurchaseNotificationClicked(course.id).toBundle()) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) val taskBuilder: TaskStackBuilder = TaskStackBuilder.create(context) taskBuilder.addParentStack(CourseActivity::class.java) taskBuilder.addNextIntent(intent) - val deleteIntent = DismissedNotificationReceiver.createIntent(context, PurchaseNotificationDismissed(course.id)) + val deleteIntent = DismissedNotificationReceiver.createIntent(context, PurchaseNotificationDismissed(course.id).toBundle()) val deletePendingIntent = PendingIntent.getBroadcast(context, DismissedNotificationReceiver.REQUEST_CODE, deleteIntent, PendingIntent.FLAG_CANCEL_CURRENT) val largeIcon = notificationHelper.getPictureByCourse(course) diff --git a/app/src/main/java/org/stepik/android/view/splash/notification/RemindRegistrationNotificationDelegate.kt b/app/src/main/java/org/stepik/android/view/splash/notification/RemindRegistrationNotificationDelegate.kt index 4f89dd37b1..99d72c9df4 100644 --- a/app/src/main/java/org/stepik/android/view/splash/notification/RemindRegistrationNotificationDelegate.kt +++ b/app/src/main/java/org/stepik/android/view/splash/notification/RemindRegistrationNotificationDelegate.kt @@ -10,6 +10,8 @@ import org.stepic.droid.preferences.SharedPreferenceHelper import org.stepic.droid.ui.activities.SplashActivity import org.stepic.droid.util.AppConstants import org.stepic.droid.util.DateTimeHelper +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toBundle import org.stepik.android.domain.remind.analytic.RemindRegistrationNotificationClicked import org.stepik.android.domain.remind.analytic.RemindRegistrationNotificationDismissed import org.stepik.android.domain.remind.analytic.RemindRegistrationNotificationShown @@ -37,12 +39,12 @@ constructor( if (sharedPreferenceHelper.isEverLogged) return val intent = Intent(context, SplashActivity::class.java) - intent.putExtra(SplashActivity.EXTRA_PARCELABLE_ANALYTIC_EVENT, RemindRegistrationNotificationClicked) + intent.putExtra(BUNDLEABLE_ANALYTIC_EVENT, RemindRegistrationNotificationClicked.toBundle()) val taskBuilder = TaskStackBuilder .create(context) .addNextIntent(intent) - val deleteIntent = DismissedNotificationReceiver.createIntent(context, RemindRegistrationNotificationDismissed) + val deleteIntent = DismissedNotificationReceiver.createIntent(context, RemindRegistrationNotificationDismissed.toBundle()) val deletePendingIntent = PendingIntent.getBroadcast(context, DismissedNotificationReceiver.REQUEST_CODE, deleteIntent, PendingIntent.FLAG_CANCEL_CURRENT) val title = context.getString(R.string.stepik_free_courses_title) diff --git a/app/src/main/java/org/stepik/android/view/splash/notification/RetentionNotificationDelegate.kt b/app/src/main/java/org/stepik/android/view/splash/notification/RetentionNotificationDelegate.kt index b411a3ae1d..8787638f98 100644 --- a/app/src/main/java/org/stepik/android/view/splash/notification/RetentionNotificationDelegate.kt +++ b/app/src/main/java/org/stepik/android/view/splash/notification/RetentionNotificationDelegate.kt @@ -11,6 +11,8 @@ import org.stepic.droid.ui.activities.SplashActivity import org.stepic.droid.util.AppConstants import org.stepic.droid.util.DateTimeHelper import org.stepik.android.domain.base.DataSourceType +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toBundle import org.stepik.android.domain.retention.analytic.RetentionNotificationClicked import org.stepik.android.domain.retention.analytic.RetentionNotificationDismissed import org.stepik.android.domain.retention.analytic.RetentionNotificationShown @@ -56,14 +58,14 @@ constructor( RetentionNotificationType.DAY1 } - val deleteIntent = DismissedNotificationReceiver.createIntent(context, RetentionNotificationDismissed(notificationType.dayValue)) + val deleteIntent = DismissedNotificationReceiver.createIntent(context, RetentionNotificationDismissed(notificationType.dayValue).toBundle()) val deletePendingIntent = PendingIntent.getBroadcast(context, 0, deleteIntent, PendingIntent.FLAG_CANCEL_CURRENT) val title = context.getString(notificationType.titleRes) val message = context.getString(notificationType.messageRes) val intent = Intent(context, SplashActivity::class.java) - intent.putExtra(SplashActivity.EXTRA_PARCELABLE_ANALYTIC_EVENT, RetentionNotificationClicked(notificationType.dayValue)) + intent.putExtra(BUNDLEABLE_ANALYTIC_EVENT, RetentionNotificationClicked(notificationType.dayValue).toBundle()) val taskBuilder = TaskStackBuilder .create(context) .addNextIntent(intent) diff --git a/app/src/main/java/org/stepik/android/view/streak/notification/StreakNotificationDelegate.kt b/app/src/main/java/org/stepik/android/view/streak/notification/StreakNotificationDelegate.kt index af3d5d0cd3..14a8b140b5 100644 --- a/app/src/main/java/org/stepik/android/view/streak/notification/StreakNotificationDelegate.kt +++ b/app/src/main/java/org/stepik/android/view/streak/notification/StreakNotificationDelegate.kt @@ -7,10 +7,11 @@ import org.stepic.droid.R import org.stepic.droid.analytic.Analytic import org.stepic.droid.core.ScreenManager import org.stepic.droid.preferences.SharedPreferenceHelper -import org.stepic.droid.ui.activities.MainFeedActivity import org.stepic.droid.util.AppConstants import org.stepic.droid.util.DateTimeHelper import org.stepic.droid.util.StepikUtil +import org.stepik.android.domain.base.analytic.BUNDLEABLE_ANALYTIC_EVENT +import org.stepik.android.domain.base.analytic.toBundle import org.stepik.android.domain.streak.analytic.StreakNotificationClicked import org.stepik.android.domain.streak.analytic.StreakNotificationDismissed import org.stepik.android.domain.streak.analytic.StreakNotificationShown @@ -130,7 +131,7 @@ constructor( val taskBuilder: TaskStackBuilder = TaskStackBuilder.create(context) val myCoursesIntent = screenManager.getMyCoursesIntent(context) // This opens MainFeedActivity myCoursesIntent.action = STREAK_NOTIFICATION_CLICKED - myCoursesIntent.putExtra(MainFeedActivity.EXTRA_PARCELABLE_ANALYTIC_EVENT, StreakNotificationClicked(notificationType.type)) + myCoursesIntent.putExtra(BUNDLEABLE_ANALYTIC_EVENT, StreakNotificationClicked(notificationType.type).toBundle()) taskBuilder.addNextIntent(myCoursesIntent) return taskBuilder } @@ -151,7 +152,7 @@ constructor( } private fun getDeleteIntentForStreaks(notificationType: StreakNotificationType): PendingIntent { - val deleteIntent = DismissedNotificationReceiver.createIntent(context, StreakNotificationDismissed(notificationType.type)) + val deleteIntent = DismissedNotificationReceiver.createStreakNotificationIntent(context, StreakNotificationDismissed(notificationType.type).toBundle()) return PendingIntent.getBroadcast(context, 0, deleteIntent, PendingIntent.FLAG_CANCEL_CURRENT) } } \ No newline at end of file diff --git a/dependencies.gradle b/dependencies.gradle index 00d08d03d2..6257169c00 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,6 +1,6 @@ ext.versions = [ - code : 2243, - name : '1.212', + code : 2244, + name : '1.213', minSdk : 21, targetSdk : 30,