diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 1094a3f88a..e5a1e6a705 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -208,10 +208,12 @@ dependencies {
implementation(deps.androidx.paging.runtime)
implementation(deps.androidx.swipeRefreshLayout)
implementation(deps.androidx.fragment.compose)
+ implementation(deps.androidx.workmanager)
implementation(deps.lifecycle.runtime.ktx)
implementation(deps.lifecycle.common.java8)
implementation(deps.lifecycle.viewModel.ktx)
implementation(deps.lifecycle.compose)
+ implementation(deps.hilt.work)
/** Compose libraries */
implementation(deps.compose.constraintLayout)
@@ -250,6 +252,7 @@ dependencies {
implementation(deps.hilt.android)
kapt(deps.hilt.kapt)
+ kapt(deps.hilt.compilerx)
/** Other libraries */
implementation(deps.kotlin.immutable.collections)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1ebb3c801a..b9e46866c1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -27,8 +27,7 @@
-
+
@@ -145,6 +144,13 @@
+
+
+
+
lateinit var foregroundActivityObserver: ForegroundActivityObserver
internal lateinit var derivationsFinder: DerivationsFinder
-abstract class TangemApplication : Application(), ImageLoaderFactory {
+abstract class TangemApplication : Application(), ImageLoaderFactory, Configuration.Provider {
// region DI
private val entryPoint: ApplicationEntryPoint
@@ -210,6 +212,14 @@ abstract class TangemApplication : Application(), ImageLoaderFactory {
private val uiMessageSender: UiMessageSender
get() = entryPoint.getUiMessageSender()
+ private val workerFactory: HiltWorkerFactory
+ get() = entryPoint.getWorkerFactory()
+
+ override val workManagerConfiguration: Configuration
+ get() = Configuration.Builder()
+ .setWorkerFactory(workerFactory)
+ .build()
+
// endregion
override fun onCreate() {
diff --git a/data/common/src/main/kotlin/com/tangem/data/common/cache/DefaultCacheRegistry.kt b/data/common/src/main/kotlin/com/tangem/data/common/cache/DefaultCacheRegistry.kt
index d0938c6718..3ad4dfe46c 100644
--- a/data/common/src/main/kotlin/com/tangem/data/common/cache/DefaultCacheRegistry.kt
+++ b/data/common/src/main/kotlin/com/tangem/data/common/cache/DefaultCacheRegistry.kt
@@ -19,11 +19,10 @@ internal class DefaultCacheRegistry(
private val mutexes = ConcurrentHashMap()
override suspend fun isExpired(key: String): Boolean {
- val cacheKey = cacheKeysStore.getSyncOrNull(key) ?: return true
+ cacheKeysStore.getSyncOrNull(key) ?: return true
- return cacheKey.updatedAt
- .plus(cacheKey.expiresIn)
- .isBefore(LocalDateTime.now())
+ // disabled cache expiration by time, update always using refresh flag
+ return false
}
override suspend fun invalidate(key: String) {
diff --git a/data/settings/src/main/java/com/tangem/data/settings/DefaultSettingsRepository.kt b/data/settings/src/main/java/com/tangem/data/settings/DefaultSettingsRepository.kt
index 789406f504..1fdbc68282 100644
--- a/data/settings/src/main/java/com/tangem/data/settings/DefaultSettingsRepository.kt
+++ b/data/settings/src/main/java/com/tangem/data/settings/DefaultSettingsRepository.kt
@@ -71,14 +71,6 @@ internal class DefaultSettingsRepository(
)
}
- override suspend fun wasApplicationStopped(): Boolean {
- return appPreferencesStore.getSyncOrDefault(key = PreferencesKeys.WAS_APPLICATION_STOPPED_KEY, default = false)
- }
-
- override suspend fun setWasApplicationStopped(value: Boolean) {
- appPreferencesStore.store(key = PreferencesKeys.WAS_APPLICATION_STOPPED_KEY, value = value)
- }
-
override suspend fun shouldOpenWelcomeScreenOnResume(): Boolean {
return appPreferencesStore.getSyncOrDefault(
key = PreferencesKeys.SHOULD_OPEN_WELCOME_ON_RESUME_KEY,
diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/repositories/SettingsRepository.kt b/domain/settings/src/main/java/com/tangem/domain/settings/repositories/SettingsRepository.kt
index 8670f0ce4f..047947701d 100644
--- a/domain/settings/src/main/java/com/tangem/domain/settings/repositories/SettingsRepository.kt
+++ b/domain/settings/src/main/java/com/tangem/domain/settings/repositories/SettingsRepository.kt
@@ -20,10 +20,6 @@ interface SettingsRepository {
suspend fun setSendTapHelpPreviewAvailability(isEnabled: Boolean)
- suspend fun wasApplicationStopped(): Boolean
-
- suspend fun setWasApplicationStopped(value: Boolean)
-
suspend fun shouldOpenWelcomeScreenOnResume(): Boolean
suspend fun setShouldOpenWelcomeScreenOnResume(value: Boolean)
diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml
index 03c21fccac..461c560532 100644
--- a/gradle/dependencies.toml
+++ b/gradle/dependencies.toml
@@ -24,6 +24,7 @@ androidx-paging = "3.1.1"
androidx-palette = "1.0.0"
androidx-datastore = "1.0.0"
androidxWindowManager = "1.3.0"
+androidxWorkManager = "2.9.0"
# endregion AndroidX
# region Compose
@@ -53,6 +54,8 @@ googlePlayReviewKtx = "2.0.1"
googlePlayServicesWallet = "19.1.0"
hilt = "2.55"
hilt-navigation = "1.0.0"
+hilt-work = "1.0.0"
+hilt-compilerx = "1.0.0"
jodatime = "2.12.1"
kotlin-immutable-collections = "0.3.5"
kotsonGsonExt = "2.5.0"
@@ -149,6 +152,8 @@ lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", v
lifecycle-viewModel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidxLifecycle" }
lifecycle-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "compose-lifecycle-runtime" }
androidx-datastore = { module = "androidx.datastore:datastore-preferences", version.ref = "androidx-datastore" }
+androidx-workmanager = { module = "androidx.work:work-runtime", version.ref = "androidxWorkManager" }
+hilt-work = { module = "androidx.hilt:hilt-work", version.ref = "hilt-work" }
# region AndroidX
# region Compose
@@ -218,6 +223,7 @@ googlePlay-services-wallet = { module = "com.google.android.gms:play-services-wa
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" }
hilt-core = { module = "com.google.dagger:hilt-core", version.ref = "hilt" }
hilt-kapt = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" }
+hilt-compilerx = { module = "androidx.hilt:hilt-compiler", version.ref = "hilt-compilerx" }
jodatime = { module = "joda-time:joda-time", version.ref = "jodatime" }
kotsonGson = { module = "com.github.salomonbrys.kotson:kotson", version.ref = "kotsonGsonExt" }
lottie = { module = "com.airbnb.android:lottie", version.ref = "lottie" }