File tree Expand file tree Collapse file tree 2 files changed +10
-4
lines changed
fullscreenintent/impl/src/main/kotlin/io/element/android/libraries/fullscreenintent/impl
preferences/impl/src/main/kotlin/io/element/android/libraries/preferences/impl/store Expand file tree Collapse file tree 2 files changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -21,8 +21,6 @@ import androidx.datastore.preferences.core.booleanPreferencesKey
21
21
import androidx.datastore.preferences.core.edit
22
22
import io.element.android.libraries.architecture.Presenter
23
23
import io.element.android.libraries.core.meta.BuildMeta
24
- import io.element.android.libraries.di.AppScope
25
- import io.element.android.libraries.di.SingleIn
26
24
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsEvents
27
25
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
28
26
import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory
@@ -32,7 +30,6 @@ import kotlinx.coroutines.flow.map
32
30
import kotlinx.coroutines.launch
33
31
import javax.inject.Inject
34
32
35
- @SingleIn(AppScope ::class )
36
33
class FullScreenIntentPermissionsPresenter @Inject constructor(
37
34
private val buildVersionSdkIntProvider : BuildVersionSdkIntProvider ,
38
35
private val externalIntentLauncher : ExternalIntentLauncher ,
Original file line number Diff line number Diff line change @@ -14,18 +14,27 @@ import androidx.datastore.preferences.preferencesDataStore
14
14
import com.squareup.anvil.annotations.ContributesBinding
15
15
import io.element.android.libraries.di.AppScope
16
16
import io.element.android.libraries.di.ApplicationContext
17
+ import io.element.android.libraries.di.SingleIn
17
18
import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory
19
+ import java.util.concurrent.ConcurrentHashMap
18
20
import javax.inject.Inject
19
21
22
+ @SingleIn(AppScope ::class )
20
23
@ContributesBinding(AppScope ::class )
21
24
class DefaultPreferencesDataStoreFactory @Inject constructor(
22
25
@ApplicationContext private val context : Context ,
23
26
) : PreferenceDataStoreFactory {
27
+ private val dataStoreHolders = ConcurrentHashMap <String , DataStoreHolder >()
28
+
24
29
private class DataStoreHolder (name : String ) {
25
30
val Context .dataStore: DataStore <Preferences > by preferencesDataStore(name = name)
26
31
}
32
+
27
33
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) {
29
38
context.dataStore
30
39
}
31
40
}
You can’t perform that action at this time.
0 commit comments