diff --git a/app/src/main/java/chat/revolt/api/routes/sync/SettingsSync.kt b/app/src/main/java/chat/revolt/api/routes/sync/SettingsSync.kt index 1866627e..d286f63b 100644 --- a/app/src/main/java/chat/revolt/api/routes/sync/SettingsSync.kt +++ b/app/src/main/java/chat/revolt/api/routes/sync/SettingsSync.kt @@ -16,9 +16,9 @@ import kotlinx.serialization.json.JsonArray @Serializable data class SyncedSetting(val timestamp: Long, val value: String) -suspend fun getKeys(vararg keys: String): Map { +suspend fun getKeys(vararg keys: String, revoltToken: String): Map { val response = RevoltHttp.post("/sync/settings/fetch") { - headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken) + headers.append(RevoltAPI.TOKEN_HEADER_NAME, revoltToken) // format: {"keys": ["key1", "key2"]} setBody( @@ -50,6 +50,10 @@ suspend fun getKeys(vararg keys: String): Map { } } +suspend fun getKeys(vararg keys: String): Map { + return getKeys(*keys, revoltToken = RevoltAPI.sessionToken) +} + suspend fun setKey(key: String, value: String) { RevoltHttp.post("/sync/settings/set") { headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken) diff --git a/app/src/main/java/chat/revolt/api/settings/SyncedSettings.kt b/app/src/main/java/chat/revolt/api/settings/SyncedSettings.kt index 5b070e63..fdedeea9 100644 --- a/app/src/main/java/chat/revolt/api/settings/SyncedSettings.kt +++ b/app/src/main/java/chat/revolt/api/settings/SyncedSettings.kt @@ -1,6 +1,7 @@ package chat.revolt.api.settings import androidx.compose.runtime.mutableStateOf +import chat.revolt.api.RevoltAPI import chat.revolt.api.RevoltJson import chat.revolt.api.routes.sync.getKeys import chat.revolt.api.routes.sync.setKey @@ -16,9 +17,9 @@ object SyncedSettings { val android: AndroidSpecificSettings get() = _android.value - suspend fun fetch() { + suspend fun fetch(revoltToken: String = RevoltAPI.sessionToken) { try { - val settings = getKeys("ordering", "android") + val settings = getKeys("ordering", "android", revoltToken = revoltToken) settings["ordering"]?.let { _ordering.value = RevoltJson.decodeFromString( diff --git a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt index 470140b8..b25ecc93 100644 --- a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt @@ -76,8 +76,8 @@ class LoginViewModel @Inject constructor( val mfaResponse: EmailPasswordAssessment? get() = _mfaResponse - private suspend fun loadSettings() { - SyncedSettings.fetch() + private suspend fun loadSettings(token: String) { + SyncedSettings.fetch(token) GlobalState.hydrateWithSettings(SyncedSettings) } @@ -111,8 +111,8 @@ class LoginViewModel @Inject constructor( return@launch } - loadSettings() RevoltAPI.loginAs(token) + loadSettings(token) _navigateTo = "home" } catch (e: Error) { diff --git a/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt b/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt index 896445d9..e7e9e7c0 100644 --- a/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt @@ -75,8 +75,8 @@ class MfaScreenViewModel @Inject constructor( _recoveryCode = code } - private suspend fun loadSettings() { - SyncedSettings.fetch() + private suspend fun loadSettings(token: String) { + SyncedSettings.fetch(token) GlobalState.hydrateWithSettings(SyncedSettings) } @@ -93,9 +93,11 @@ class MfaScreenViewModel @Inject constructor( ) try { - loadSettings() - RevoltAPI.loginAs(response.firstUserHints!!.token) - kvStorage.set("sessionToken", response.firstUserHints.token) + val token = response.firstUserHints!!.token + + RevoltAPI.loginAs(token) + loadSettings(token) + kvStorage.set("sessionToken", token) _navigateToHome = true } catch (e: Error) { @@ -119,9 +121,11 @@ class MfaScreenViewModel @Inject constructor( ) try { - loadSettings() - RevoltAPI.loginAs(response.firstUserHints!!.token) - kvStorage.set("sessionToken", response.firstUserHints.token) + val token = response.firstUserHints!!.token + + RevoltAPI.loginAs(token) + loadSettings(token) + kvStorage.set("sessionToken", token) _navigateToHome = true } catch (e: Error) {