Skip to content

Commit 44d0111

Browse files
authored
Merge pull request #5198 from element-hq/fix/fixCrashOnPro
Ensure that only one DataStore is active for the same file.
2 parents 0796cf9 + a9c01a8 commit 44d0111

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

libraries/fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl/FullScreenIntentPermissionsPresenter.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ import androidx.datastore.preferences.core.booleanPreferencesKey
2121
import androidx.datastore.preferences.core.edit
2222
import io.element.android.libraries.architecture.Presenter
2323
import io.element.android.libraries.core.meta.BuildMeta
24-
import io.element.android.libraries.di.AppScope
25-
import io.element.android.libraries.di.SingleIn
2624
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsEvents
2725
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
2826
import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory
@@ -32,7 +30,6 @@ import kotlinx.coroutines.flow.map
3230
import kotlinx.coroutines.launch
3331
import javax.inject.Inject
3432

35-
@SingleIn(AppScope::class)
3633
class FullScreenIntentPermissionsPresenter @Inject constructor(
3734
private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider,
3835
private val externalIntentLauncher: ExternalIntentLauncher,

libraries/preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store/DefaultPreferencesDataStoreFactory.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,27 @@ import androidx.datastore.preferences.preferencesDataStore
1414
import com.squareup.anvil.annotations.ContributesBinding
1515
import io.element.android.libraries.di.AppScope
1616
import io.element.android.libraries.di.ApplicationContext
17+
import io.element.android.libraries.di.SingleIn
1718
import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory
19+
import java.util.concurrent.ConcurrentHashMap
1820
import javax.inject.Inject
1921

22+
@SingleIn(AppScope::class)
2023
@ContributesBinding(AppScope::class)
2124
class DefaultPreferencesDataStoreFactory @Inject constructor(
2225
@ApplicationContext private val context: Context,
2326
) : PreferenceDataStoreFactory {
27+
private val dataStoreHolders = ConcurrentHashMap<String, DataStoreHolder>()
28+
2429
private class DataStoreHolder(name: String) {
2530
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = name)
2631
}
32+
2733
override fun create(name: String): DataStore<Preferences> {
28-
return with(DataStoreHolder(name)) {
34+
val holder = dataStoreHolders.getOrPut(name) {
35+
DataStoreHolder(name)
36+
}
37+
return with(holder) {
2938
context.dataStore
3039
}
3140
}

0 commit comments

Comments
 (0)