diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6361f9453..71d4e09a0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -10,6 +10,7 @@ plugins { id("com.google.devtools.ksp") id("androidx.room") alias(libs.plugins.compose.compiler) + id("com.google.gms.google-services") } repositories { diff --git a/app/src/main/kotlin/com/gemwallet/android/di/BuildInfoModule.kt b/app/src/main/kotlin/com/gemwallet/android/di/BuildInfoModule.kt index e5e20ed44..82243c556 100644 --- a/app/src/main/kotlin/com/gemwallet/android/di/BuildInfoModule.kt +++ b/app/src/main/kotlin/com/gemwallet/android/di/BuildInfoModule.kt @@ -1,6 +1,7 @@ package com.gemwallet.android.di import android.content.Context +import com.gemwallet.android.cases.device.RequestPushToken import com.gemwallet.android.cases.pushes.ShowSystemNotification import com.gemwallet.android.flavors.StoreRequestPushToken import com.gemwallet.android.flavors.isNotificationsAvailable @@ -20,14 +21,23 @@ object BuildInfoModule { @Provides @Singleton - fun provideBuildInfo(platformStore: PlatformStore): BuildInfo { + fun provideBuildInfo( + platformStore: PlatformStore, + requestPushToken: RequestPushToken, + ): BuildInfo { return BuildInfo( platformStore = platformStore, versionName = com.gemwallet.android.BuildConfig.VERSION_NAME, - requestPushToken = StoreRequestPushToken(), + requestPushToken = requestPushToken, ) } + @Provides + @Singleton + fun provideRequestPushToken(): RequestPushToken { + return StoreRequestPushToken() + } + @Provides @Singleton fun provideShowSystemNotification(@ApplicationContext context: Context): ShowSystemNotification { diff --git a/data/repositories/src/main/kotlin/com/gemwallet/android/data/repositoreis/device/DeviceRepository.kt b/data/repositories/src/main/kotlin/com/gemwallet/android/data/repositoreis/device/DeviceRepository.kt index c1eacf01d..94f7ba479 100644 --- a/data/repositories/src/main/kotlin/com/gemwallet/android/data/repositoreis/device/DeviceRepository.kt +++ b/data/repositories/src/main/kotlin/com/gemwallet/android/data/repositoreis/device/DeviceRepository.kt @@ -54,13 +54,13 @@ class DeviceRepository( override suspend fun syncDeviceInfo() { val pushToken = getPushToken() - val pushEnabled = pushToken.isNotEmpty() + val pushEnabled = getPushEnabled() val deviceId = getDeviceIdCase.getDeviceId() val device = Device( id = deviceId, platform = Platform.Android, platformStore = platformStore, - token = "", + token = pushToken, locale = getLocale(Locale.getDefault()), isPushEnabled = pushEnabled, isPriceAlertsEnabled = enablePriceAlert.isPriceAlertEnabled(), @@ -74,7 +74,7 @@ class DeviceRepository( } } if (pushEnabled && pushToken.isEmpty()) { - requestPushToken.invoke { pushToken -> + requestPushToken.requestToken { pushToken -> setPushToken(pushToken) register() } diff --git a/flavors/fcm/src/main/kotlin/com/gemwallet/android/flavors/RequestrPushToken.kt b/flavors/fcm/src/main/kotlin/com/gemwallet/android/flavors/RequestrPushToken.kt index 2bfcb0b23..16df46bb6 100644 --- a/flavors/fcm/src/main/kotlin/com/gemwallet/android/flavors/RequestrPushToken.kt +++ b/flavors/fcm/src/main/kotlin/com/gemwallet/android/flavors/RequestrPushToken.kt @@ -1,10 +1,17 @@ package com.gemwallet.android.flavors +import android.content.Context import com.gemwallet.android.cases.device.RequestPushToken +import com.google.firebase.FirebaseApp import com.google.firebase.messaging.FirebaseMessaging class StoreRequestPushToken : RequestPushToken { - override suspend fun invoke(callback: (String) -> Unit) { + + override fun initRequester(context: Context) { + FirebaseApp.initializeApp(context) + } + + override suspend fun requestToken(callback: (String) -> Unit) { try { FirebaseMessaging.getInstance().token.addOnCompleteListener { task -> val token = if (task.isSuccessful) { task.result } else { "" } @@ -14,6 +21,7 @@ class StoreRequestPushToken : RequestPushToken { callback("") } } + } diff --git a/flavors/pushes-stub/src/main/kotlin/com/gemwallet/android/flavors/RequestrPushToken.kt b/flavors/pushes-stub/src/main/kotlin/com/gemwallet/android/flavors/RequestPushToken.kt similarity index 58% rename from flavors/pushes-stub/src/main/kotlin/com/gemwallet/android/flavors/RequestrPushToken.kt rename to flavors/pushes-stub/src/main/kotlin/com/gemwallet/android/flavors/RequestPushToken.kt index eae97edb1..267fab584 100644 --- a/flavors/pushes-stub/src/main/kotlin/com/gemwallet/android/flavors/RequestrPushToken.kt +++ b/flavors/pushes-stub/src/main/kotlin/com/gemwallet/android/flavors/RequestPushToken.kt @@ -1,9 +1,13 @@ package com.gemwallet.android.flavors +import android.content.Context import com.gemwallet.android.cases.device.RequestPushToken class StoreRequestPushToken : RequestPushToken { - override suspend fun invoke(callback: (String) -> Unit) { + + override fun initRequester(context: Context) {} + + override suspend fun requestToken(callback: (String) -> Unit) { callback("") } } diff --git a/gemcore/src/main/kotlin/com/gemwallet/android/cases/device/RequestPushToken.kt b/gemcore/src/main/kotlin/com/gemwallet/android/cases/device/RequestPushToken.kt index 5ed431752..2b1f9141f 100644 --- a/gemcore/src/main/kotlin/com/gemwallet/android/cases/device/RequestPushToken.kt +++ b/gemcore/src/main/kotlin/com/gemwallet/android/cases/device/RequestPushToken.kt @@ -1,5 +1,10 @@ package com.gemwallet.android.cases.device -fun interface RequestPushToken { - suspend fun invoke(callback: (String) -> Unit) +import android.content.Context + +interface RequestPushToken { + + fun initRequester(context: Context) + + suspend fun requestToken(callback: (String) -> Unit) } \ No newline at end of file