fix: sync settings on login correctly

Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
Infi 2023-07-13 17:55:37 +02:00
parent 2a37f406c3
commit c7d5db8b7c
4 changed files with 24 additions and 15 deletions

View File

@ -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<String, SyncedSetting> {
suspend fun getKeys(vararg keys: String, revoltToken: String): Map<String, SyncedSetting> {
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<String, SyncedSetting> {
}
}
suspend fun getKeys(vararg keys: String): Map<String, SyncedSetting> {
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)

View File

@ -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(

View File

@ -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) {

View File

@ -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) {