diff --git a/app/src/main/java/org/openedx/app/AppViewModel.kt b/app/src/main/java/org/openedx/app/AppViewModel.kt index c15d3faba..20b3b0c97 100644 --- a/app/src/main/java/org/openedx/app/AppViewModel.kt +++ b/app/src/main/java/org/openedx/app/AppViewModel.kt @@ -69,23 +69,8 @@ class AppViewModel( notifier.notifier.collect { event -> if (event is SignInEvent && config.getFirebaseConfig().isCloudMessagingEnabled) { SyncFirebaseTokenWorker.schedule(context) - } else if (event is LogoutEvent && System.currentTimeMillis() - logoutHandledAt > 5000) { - if (event.isForced) { - logoutHandledAt = System.currentTimeMillis() - preferencesManager.clear() - withContext(dispatcher) { - room.clearAllTables() - } - analytics.logoutEvent(true) - _logoutUser.value = Unit - } - if (config.getFirebaseConfig().isCloudMessagingEnabled) { - RefreshFirebaseTokenWorker.schedule(context) - val notificationManager = context.getSystemService( - Context.NOTIFICATION_SERVICE - ) as NotificationManager - notificationManager.cancelAll() - } + } else if (event is LogoutEvent) { + handleLogoutEvent(event) } } } @@ -114,4 +99,25 @@ class AppViewModel( analytics.setUserIdForSession(it.id) } } + + private suspend fun handleLogoutEvent(event: LogoutEvent) { + if (System.currentTimeMillis() - logoutHandledAt > 5000) { + if (event.isForced) { + logoutHandledAt = System.currentTimeMillis() + preferencesManager.clear() + withContext(dispatcher) { + room.clearAllTables() + } + analytics.logoutEvent(true) + _logoutUser.value = Unit + } + + if (config.getFirebaseConfig().isCloudMessagingEnabled) { + RefreshFirebaseTokenWorker.schedule(context) + val notificationManager = + context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + notificationManager.cancelAll() + } + } + } } diff --git a/app/src/main/java/org/openedx/app/data/api/NotificationsApi.kt b/app/src/main/java/org/openedx/app/data/api/NotificationsApi.kt index 3be52a66a..9106944c3 100644 --- a/app/src/main/java/org/openedx/app/data/api/NotificationsApi.kt +++ b/app/src/main/java/org/openedx/app/data/api/NotificationsApi.kt @@ -5,12 +5,10 @@ import retrofit2.http.FormUrlEncoded import retrofit2.http.POST interface NotificationsApi { - @POST("/api/mobile/v4/notifications/create-token/") @FormUrlEncoded suspend fun syncFirebaseToken( @Field("registration_id") token: String, @Field("active") active: Boolean = true ) - } diff --git a/app/src/main/java/org/openedx/app/deeplink/DeepLink.kt b/app/src/main/java/org/openedx/app/deeplink/DeepLink.kt index 99296401b..ac494df06 100644 --- a/app/src/main/java/org/openedx/app/deeplink/DeepLink.kt +++ b/app/src/main/java/org/openedx/app/deeplink/DeepLink.kt @@ -2,8 +2,8 @@ package org.openedx.app.deeplink class DeepLink(params: Map) { - val screenName = params[Keys.SCREEN_NAME.value] - val notificationType = params[Keys.NOTIFICATION_TYPE.value] + private val screenName = params[Keys.SCREEN_NAME.value] + private val notificationType = params[Keys.NOTIFICATION_TYPE.value] val courseId = params[Keys.COURSE_ID.value] val pathId = params[Keys.PATH_ID.value] val componentId = params[Keys.COMPONENT_ID.value] diff --git a/app/src/main/java/org/openedx/app/system/push/OpenEdXFirebaseMessagingService.kt b/app/src/main/java/org/openedx/app/system/push/OpenEdXFirebaseMessagingService.kt index bf30bc40a..60917940e 100644 --- a/app/src/main/java/org/openedx/app/system/push/OpenEdXFirebaseMessagingService.kt +++ b/app/src/main/java/org/openedx/app/system/push/OpenEdXFirebaseMessagingService.kt @@ -92,5 +92,4 @@ class OpenEdXFirebaseMessagingService : FirebaseMessagingService() { private fun createId(): Int { return SystemClock.uptimeMillis().toInt() } - }