fix: sync settings on login correctly
Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
parent
2a37f406c3
commit
c7d5db8b7c
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue