From ccd7a7dd1850627f5027f6491bfe7ae94362223b Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 13 Mar 2025 15:55:28 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/build.gradle.kts | 3 ++ app/src/main/AndroidManifest.xml | 10 +++- .../com/tangem/tap/ApplicationEntryPoint.kt | 3 ++ .../java/com/tangem/tap/LockTimerWorker.kt | 34 +++++++++++++ .../com/tangem/tap/LockUserWalletsTimer.kt | 48 +++++++++++-------- .../main/java/com/tangem/tap/MainActivity.kt | 2 +- .../java/com/tangem/tap/TangemApplication.kt | 12 ++++- .../data/common/cache/DefaultCacheRegistry.kt | 7 ++- .../settings/DefaultSettingsRepository.kt | 8 ---- .../repositories/SettingsRepository.kt | 4 -- gradle/dependencies.toml | 6 +++ 11 files changed, 98 insertions(+), 39 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/LockTimerWorker.kt 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" }