diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt index 4d357add91..42df77c07d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt @@ -96,17 +96,17 @@ object PreferencesKeys { fun getStart2CoinTOSAcceptedKey(region: String?) = booleanPreferencesKey(name = "start2Coin_tos_accepted_$region") // region Permission - fun getShouldShowPermission(permission: Int) = booleanPreferencesKey("shouldShowPushPermission_$permission") + fun getShouldShowPermission(permission: String) = booleanPreferencesKey("shouldShowPushPermission_$permission") - fun getShouldShowInitialPermissionScreen(permission: Int) = + fun getShouldShowInitialPermissionScreen(permission: String) = booleanPreferencesKey("shouldShowInitialPushPermissionScreen_$permission") - fun getIsFirstTimeAskingPermission(permission: Int) = + fun getIsFirstTimeAskingPermission(permission: String) = booleanPreferencesKey("shouldAskInitialPushPermission_$permission") - fun getPermissionLaunchCount(permission: Int) = intPreferencesKey("pushPermissionLaunchCount_$permission") + fun getPermissionLaunchCount(permission: String) = intPreferencesKey("pushPermissionLaunchCount_$permission") - fun getPermissionDaysCount(permission: Int) = longPreferencesKey("pushPermissionDaysCount_$permission") + fun getPermissionDaysCount(permission: String) = longPreferencesKey("pushPermissionDaysCount_$permission") // endregion } diff --git a/data/settings/src/main/java/com/tangem/data/settings/DefaultPermissionRepository.kt b/data/settings/src/main/java/com/tangem/data/settings/DefaultPermissionRepository.kt index c2f07bae1c..b73d5d069f 100644 --- a/data/settings/src/main/java/com/tangem/data/settings/DefaultPermissionRepository.kt +++ b/data/settings/src/main/java/com/tangem/data/settings/DefaultPermissionRepository.kt @@ -16,26 +16,27 @@ internal class DefaultPermissionRepository( private val appPreferencesStore: AppPreferencesStore, ) : PermissionRepository { - override suspend fun shouldInitiallyShowPermissionScreen(permission: Int): Boolean { + override suspend fun shouldInitiallyShowPermissionScreen(permission: String): Boolean { val key = getShouldShowInitialPermissionScreen(permission) val initialPermissionScreen = appPreferencesStore.getSyncOrDefault(key = key, default = true) if (initialPermissionScreen) appPreferencesStore.store(key = key, value = false) return initialPermissionScreen } - override suspend fun isFirstTimeAskingPermission(permission: Int): Boolean = appPreferencesStore.getSyncOrDefault( - key = getIsFirstTimeAskingPermission(permission), - default = true, - ) + override suspend fun isFirstTimeAskingPermission(permission: String): Boolean = + appPreferencesStore.getSyncOrDefault( + key = getIsFirstTimeAskingPermission(permission), + default = true, + ) - override suspend fun setFirstTimeAskingPermission(permission: Int, value: Boolean) { + override suspend fun setFirstTimeAskingPermission(permission: String, value: Boolean) { appPreferencesStore.store( key = getIsFirstTimeAskingPermission(permission), value = value, ) } - override suspend fun shouldAskPermission(permission: Int): Boolean { + override suspend fun shouldAskPermission(permission: String): Boolean { val shouldAskPermission = appPreferencesStore.getSyncOrDefault(getShouldShowPermission(permission), true) val delayedLaunches = appPreferencesStore.getSyncOrDefault(getPermissionLaunchCount(permission), 0) val delayedDays = appPreferencesStore.getSyncOrDefault(getPermissionDaysCount(permission), 0) @@ -47,11 +48,11 @@ internal class DefaultPermissionRepository( return shouldAskPermission && isDaysDelayed && isLaunchesDelayed } - override suspend fun neverAskPermission(permission: Int) { + override suspend fun neverAskPermission(permission: String) { appPreferencesStore.store(key = getShouldShowPermission(permission), value = false) } - override suspend fun delayPermissionAsking(permission: Int) { + override suspend fun delayPermissionAsking(permission: String) { appPreferencesStore.editData { val appLaunchCounter = it.getOrDefault(PreferencesKeys.APP_LAUNCH_COUNT_KEY, 0) val nowMillis = SystemClock.elapsedRealtime() diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/DelayPermissionRequestUseCase.kt b/domain/settings/src/main/java/com/tangem/domain/settings/DelayPermissionRequestUseCase.kt index 7c4c74baba..bf300cb779 100644 --- a/domain/settings/src/main/java/com/tangem/domain/settings/DelayPermissionRequestUseCase.kt +++ b/domain/settings/src/main/java/com/tangem/domain/settings/DelayPermissionRequestUseCase.kt @@ -7,7 +7,7 @@ class DelayPermissionRequestUseCase( private val repository: PermissionRepository, ) { - suspend operator fun invoke(permission: Int): Either = Either.catch { + suspend operator fun invoke(permission: String): Either = Either.catch { repository.delayPermissionAsking(permission) } } \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/IsFirstTimeAskingPermissionUseCase.kt b/domain/settings/src/main/java/com/tangem/domain/settings/IsFirstTimeAskingPermissionUseCase.kt index f6b9f562d8..000bfd7ed1 100644 --- a/domain/settings/src/main/java/com/tangem/domain/settings/IsFirstTimeAskingPermissionUseCase.kt +++ b/domain/settings/src/main/java/com/tangem/domain/settings/IsFirstTimeAskingPermissionUseCase.kt @@ -5,7 +5,7 @@ import com.tangem.domain.settings.repositories.PermissionRepository class IsFirstTimeAskingPermissionUseCase(private val repository: PermissionRepository) { - suspend operator fun invoke(permission: Int): Either = Either.catch { + suspend operator fun invoke(permission: String): Either = Either.catch { repository.isFirstTimeAskingPermission(permission) } } \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/NeverRequestPermissionUseCase.kt b/domain/settings/src/main/java/com/tangem/domain/settings/NeverRequestPermissionUseCase.kt index 7b9f0219b5..84d654dc42 100644 --- a/domain/settings/src/main/java/com/tangem/domain/settings/NeverRequestPermissionUseCase.kt +++ b/domain/settings/src/main/java/com/tangem/domain/settings/NeverRequestPermissionUseCase.kt @@ -7,7 +7,7 @@ class NeverRequestPermissionUseCase( private val repository: PermissionRepository, ) { - suspend operator fun invoke(permission: Int): Either = Either.catch { + suspend operator fun invoke(permission: String): Either = Either.catch { repository.neverAskPermission(permission) } } \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/SetFirstTimeAskingPermissionUseCase.kt b/domain/settings/src/main/java/com/tangem/domain/settings/SetFirstTimeAskingPermissionUseCase.kt index 6a82495cf4..fa5d057e77 100644 --- a/domain/settings/src/main/java/com/tangem/domain/settings/SetFirstTimeAskingPermissionUseCase.kt +++ b/domain/settings/src/main/java/com/tangem/domain/settings/SetFirstTimeAskingPermissionUseCase.kt @@ -5,7 +5,7 @@ import com.tangem.domain.settings.repositories.PermissionRepository class SetFirstTimeAskingPermissionUseCase(private val repository: PermissionRepository) { - suspend operator fun invoke(permission: Int): Either = Either.catch { + suspend operator fun invoke(permission: String): Either = Either.catch { repository.setFirstTimeAskingPermission(permission, false) } } \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/ShouldAskPermissionUseCase.kt b/domain/settings/src/main/java/com/tangem/domain/settings/ShouldAskPermissionUseCase.kt index 2cf3378e84..44f063119a 100644 --- a/domain/settings/src/main/java/com/tangem/domain/settings/ShouldAskPermissionUseCase.kt +++ b/domain/settings/src/main/java/com/tangem/domain/settings/ShouldAskPermissionUseCase.kt @@ -6,5 +6,5 @@ class ShouldAskPermissionUseCase( private val repository: PermissionRepository, ) { - suspend operator fun invoke(permission: Int): Boolean = repository.shouldAskPermission(permission) + suspend operator fun invoke(permission: String): Boolean = repository.shouldAskPermission(permission) } \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/ShouldInitiallyAskPermissionUseCase.kt b/domain/settings/src/main/java/com/tangem/domain/settings/ShouldInitiallyAskPermissionUseCase.kt index b020fc8c9e..b7d5a6f1ca 100644 --- a/domain/settings/src/main/java/com/tangem/domain/settings/ShouldInitiallyAskPermissionUseCase.kt +++ b/domain/settings/src/main/java/com/tangem/domain/settings/ShouldInitiallyAskPermissionUseCase.kt @@ -5,7 +5,7 @@ import com.tangem.domain.settings.repositories.PermissionRepository class ShouldInitiallyAskPermissionUseCase(private val repository: PermissionRepository) { - suspend operator fun invoke(permission: Int): Either = Either.catch { + suspend operator fun invoke(permission: String): Either = Either.catch { repository.shouldInitiallyShowPermissionScreen(permission) } } \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/repositories/PermissionRepository.kt b/domain/settings/src/main/java/com/tangem/domain/settings/repositories/PermissionRepository.kt index 390868c8d4..fd136cf651 100644 --- a/domain/settings/src/main/java/com/tangem/domain/settings/repositories/PermissionRepository.kt +++ b/domain/settings/src/main/java/com/tangem/domain/settings/repositories/PermissionRepository.kt @@ -6,34 +6,34 @@ interface PermissionRepository { * Return true if should display screen ONCE asking to allow [permission]. * False otherwise or screen already was displayed */ - suspend fun shouldInitiallyShowPermissionScreen(permission: Int): Boolean + suspend fun shouldInitiallyShowPermissionScreen(permission: String): Boolean /** * Indicates which time [permission] was asked via platform dialog. * NOTE: Use this method to indicate either reroute to settings or display platform dialog. */ - suspend fun isFirstTimeAskingPermission(permission: Int): Boolean + suspend fun isFirstTimeAskingPermission(permission: String): Boolean /** * Sets value indicating that [permission] was asked via platform dialog. * NOTE: Use this method to indicate either reroute to settings or display platform dialog. */ - suspend fun setFirstTimeAskingPermission(permission: Int, value: Boolean) + suspend fun setFirstTimeAskingPermission(permission: String, value: Boolean) /** * Is clear to ask [permission]. * User could already granted or permanently denied permission * Or there is an active delay before next request */ - suspend fun shouldAskPermission(permission: Int): Boolean + suspend fun shouldAskPermission(permission: String): Boolean /** * Permanently deny [permission] and never request again */ - suspend fun neverAskPermission(permission: Int) + suspend fun neverAskPermission(permission: String) /** * Delay next [permission] request for some time or active sessions */ - suspend fun delayPermissionAsking(permission: Int) + suspend fun delayPermissionAsking(permission: String) } \ No newline at end of file