diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/network/DefaultNetworksStatusesStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/network/DefaultNetworksStatusesStore.kt index 276587c5f5..88b241c3ff 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/network/DefaultNetworksStatusesStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/network/DefaultNetworksStatusesStore.kt @@ -5,20 +5,26 @@ import com.tangem.datasource.local.datastore.core.StringKeyDataStoreDecorator import com.tangem.domain.tokens.model.NetworkStatus import com.tangem.domain.wallets.models.UserWalletId import com.tangem.utils.extensions.addOrReplace +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock internal class DefaultNetworksStatusesStore( dataStore: StringKeyDataStore>, ) : NetworksStatusesStore, StringKeyDataStoreDecorator>(dataStore) { + private val mutex = Mutex() + override fun provideStringKey(key: UserWalletId): String { return key.stringValue } override suspend fun store(key: UserWalletId, value: NetworkStatus) { - val newValues = getSyncOrNull(key) - ?.addOrReplace(value) { it.network == value.network } - ?: setOf(value) + mutex.withLock { + val newValues = getSyncOrNull(key) + ?.addOrReplace(value) { it.network == value.network } + ?: setOf(value) - store(key, newValues) + store(key, newValues) + } } } \ No newline at end of file