1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID)2195 Multispaces | Tech | Space settings refactoring (#853)

This commit is contained in:
Evgenii Kozlov 2024-02-14 13:53:21 +01:00 committed by GitHub
parent dc19f96c93
commit c163c67312
Signed by: github
GPG key ID: B5690EEEBB952194
76 changed files with 379 additions and 270 deletions

View file

@ -92,18 +92,6 @@ class DefaultAuthCache(
encryptedPrefs.edit().putString(CURRENT_ACCOUNT_ID_KEY, id).apply()
}
override suspend fun saveLastOpenedObject(id: String) {
encryptedPrefs.edit().putString(LAST_OPENED_OBJECT_KEY, id).apply()
}
override suspend fun getLastOpenedObject(): String? {
return encryptedPrefs.getString(LAST_OPENED_OBJECT_KEY, null)
}
override suspend fun clearLastOpenedObject() {
encryptedPrefs.edit().remove(LAST_OPENED_OBJECT_KEY).apply()
}
override suspend fun getNetworkMode(): NetworkModeConfig = networkModeProvider.get()
override suspend fun setNetworkMode(modeConfig: NetworkModeConfig) {
networkModeProvider.set(modeConfig)

View file

@ -24,6 +24,7 @@ import com.anytypeio.anytype.persistence.model.asWallpaper
import com.anytypeio.anytype.persistence.preferences.SPACE_PREFERENCE_FILENAME
import com.anytypeio.anytype.persistence.preferences.SpacePrefSerializer
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
class DefaultUserSettingsCache(
@ -251,6 +252,54 @@ class DefaultUserSettingsCache(
}
}
override suspend fun setLastOpenedObject(id: Id, space: SpaceId) {
context.spacePrefsStore.updateData { existingPreferences ->
val givenSpacePreference = existingPreferences
.preferences
.getOrDefault(
key = space.id,
defaultValue = SpacePreference()
)
val updated = givenSpacePreference.copy(
lastOpenedObject = id
)
val result = buildMap {
putAll(existingPreferences.preferences)
put(key = space.id, updated)
}
SpacePreferences(preferences = result)
}
}
override suspend fun getLastOpenedObject(space: SpaceId): Id? {
return context.spacePrefsStore
.data
.map { preferences ->
preferences
.preferences[space.id]
?.lastOpenedObject
}
.first()
}
override suspend fun clearLastOpenedObject(space: SpaceId) {
context.spacePrefsStore.updateData { existingPreferences ->
val givenSpacePreference = existingPreferences
.preferences
.getOrDefault(key = space.id, defaultValue = SpacePreference())
val updated = givenSpacePreference.copy(
lastOpenedObject = null
)
val result = buildMap {
putAll(existingPreferences.preferences)
put(key = space.id, updated)
}
SpacePreferences(
preferences = result
)
}
}
companion object {
const val CURRENT_SPACE_KEY = "prefs.user_settings.current_space"
const val DEFAULT_OBJECT_TYPE_ID_KEY = "prefs.user_settings.default_object_type.id"

View file

@ -11,4 +11,5 @@ message SpacePreferences {
message SpacePreference {
optional string defaultObjectTypeKey = 1;
repeated string pinnedObjectTypeIds = 2;
optional string lastOpenedObject = 3;
}