Updated on 2026-08-14

This commit is contained in:
Tangem 2024-08-13 15:31:16 +03:00
parent f748b8539d
commit 434c459728
13 changed files with 103 additions and 114 deletions

View file

@ -5,12 +5,21 @@ import com.tangem.datasource.local.preferences.PreferencesKeys
import com.tangem.datasource.local.preferences.utils.getSyncOrDefault
import com.tangem.datasource.local.preferences.utils.store
import com.tangem.domain.settings.repositories.SettingsRepository
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import org.joda.time.DateTime
internal class DefaultSettingsRepository(
private val appPreferencesStore: AppPreferencesStore,
dispatchers: CoroutineDispatcherProvider,
) : SettingsRepository {
private val scope = CoroutineScope(dispatchers.io)
private val mutex = Mutex()
override suspend fun shouldShowSaveUserWalletScreen(): Boolean {
return appPreferencesStore.getSyncOrDefault(
key = PreferencesKeys.SHOULD_SHOW_SAVE_USER_WALLET_SCREEN_KEY,
@ -36,13 +45,17 @@ internal class DefaultSettingsRepository(
)
}
override suspend fun updateAppLogs(message: String) {
override fun saveLogMessage(message: String) {
val newLogs = DateTime.now().millis.toString() to message
appPreferencesStore.editData { preferences ->
val savedLogs = preferences.getObjectMap<String>(PreferencesKeys.APP_LOGS_KEY)
scope.launch {
mutex.withLock {
appPreferencesStore.editData { preferences ->
val savedLogs = preferences.getObjectMap<String>(PreferencesKeys.APP_LOGS_KEY)
preferences.setObjectMap(key = PreferencesKeys.APP_LOGS_KEY, value = savedLogs + newLogs)
preferences.setObjectMap(key = PreferencesKeys.APP_LOGS_KEY, value = savedLogs + newLogs)
}
}
}
}

View file

@ -9,6 +9,7 @@ import com.tangem.domain.settings.repositories.AppRatingRepository
import com.tangem.domain.settings.repositories.PermissionRepository
import com.tangem.domain.settings.repositories.PromoSettingsRepository
import com.tangem.domain.settings.repositories.SettingsRepository
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@ -21,8 +22,11 @@ internal object SettingsDataModule {
@Provides
@Singleton
fun provideSettingsRepository(appPreferencesStore: AppPreferencesStore): SettingsRepository {
return DefaultSettingsRepository(appPreferencesStore = appPreferencesStore)
fun provideSettingsRepository(
appPreferencesStore: AppPreferencesStore,
dispatchers: CoroutineDispatcherProvider,
): SettingsRepository {
return DefaultSettingsRepository(appPreferencesStore = appPreferencesStore, dispatchers = dispatchers)
}
@Provides