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
|
@Serializable
|
||||||
data class SyncedSetting(val timestamp: Long, val value: String)
|
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") {
|
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"]}
|
// format: {"keys": ["key1", "key2"]}
|
||||||
setBody(
|
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) {
|
suspend fun setKey(key: String, value: String) {
|
||||||
RevoltHttp.post("/sync/settings/set") {
|
RevoltHttp.post("/sync/settings/set") {
|
||||||
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
|
headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package chat.revolt.api.settings
|
package chat.revolt.api.settings
|
||||||
|
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
import chat.revolt.api.RevoltAPI
|
||||||
import chat.revolt.api.RevoltJson
|
import chat.revolt.api.RevoltJson
|
||||||
import chat.revolt.api.routes.sync.getKeys
|
import chat.revolt.api.routes.sync.getKeys
|
||||||
import chat.revolt.api.routes.sync.setKey
|
import chat.revolt.api.routes.sync.setKey
|
||||||
|
|
@ -16,9 +17,9 @@ object SyncedSettings {
|
||||||
val android: AndroidSpecificSettings
|
val android: AndroidSpecificSettings
|
||||||
get() = _android.value
|
get() = _android.value
|
||||||
|
|
||||||
suspend fun fetch() {
|
suspend fun fetch(revoltToken: String = RevoltAPI.sessionToken) {
|
||||||
try {
|
try {
|
||||||
val settings = getKeys("ordering", "android")
|
val settings = getKeys("ordering", "android", revoltToken = revoltToken)
|
||||||
|
|
||||||
settings["ordering"]?.let {
|
settings["ordering"]?.let {
|
||||||
_ordering.value = RevoltJson.decodeFromString(
|
_ordering.value = RevoltJson.decodeFromString(
|
||||||
|
|
|
||||||
|
|
@ -76,8 +76,8 @@ class LoginViewModel @Inject constructor(
|
||||||
val mfaResponse: EmailPasswordAssessment?
|
val mfaResponse: EmailPasswordAssessment?
|
||||||
get() = _mfaResponse
|
get() = _mfaResponse
|
||||||
|
|
||||||
private suspend fun loadSettings() {
|
private suspend fun loadSettings(token: String) {
|
||||||
SyncedSettings.fetch()
|
SyncedSettings.fetch(token)
|
||||||
GlobalState.hydrateWithSettings(SyncedSettings)
|
GlobalState.hydrateWithSettings(SyncedSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -111,8 +111,8 @@ class LoginViewModel @Inject constructor(
|
||||||
return@launch
|
return@launch
|
||||||
}
|
}
|
||||||
|
|
||||||
loadSettings()
|
|
||||||
RevoltAPI.loginAs(token)
|
RevoltAPI.loginAs(token)
|
||||||
|
loadSettings(token)
|
||||||
|
|
||||||
_navigateTo = "home"
|
_navigateTo = "home"
|
||||||
} catch (e: Error) {
|
} catch (e: Error) {
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,8 @@ class MfaScreenViewModel @Inject constructor(
|
||||||
_recoveryCode = code
|
_recoveryCode = code
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun loadSettings() {
|
private suspend fun loadSettings(token: String) {
|
||||||
SyncedSettings.fetch()
|
SyncedSettings.fetch(token)
|
||||||
GlobalState.hydrateWithSettings(SyncedSettings)
|
GlobalState.hydrateWithSettings(SyncedSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -93,9 +93,11 @@ class MfaScreenViewModel @Inject constructor(
|
||||||
)
|
)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
loadSettings()
|
val token = response.firstUserHints!!.token
|
||||||
RevoltAPI.loginAs(response.firstUserHints!!.token)
|
|
||||||
kvStorage.set("sessionToken", response.firstUserHints.token)
|
RevoltAPI.loginAs(token)
|
||||||
|
loadSettings(token)
|
||||||
|
kvStorage.set("sessionToken", token)
|
||||||
|
|
||||||
_navigateToHome = true
|
_navigateToHome = true
|
||||||
} catch (e: Error) {
|
} catch (e: Error) {
|
||||||
|
|
@ -119,9 +121,11 @@ class MfaScreenViewModel @Inject constructor(
|
||||||
)
|
)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
loadSettings()
|
val token = response.firstUserHints!!.token
|
||||||
RevoltAPI.loginAs(response.firstUserHints!!.token)
|
|
||||||
kvStorage.set("sessionToken", response.firstUserHints.token)
|
RevoltAPI.loginAs(token)
|
||||||
|
loadSettings(token)
|
||||||
|
kvStorage.set("sessionToken", token)
|
||||||
|
|
||||||
_navigateToHome = true
|
_navigateToHome = true
|
||||||
} catch (e: Error) {
|
} catch (e: Error) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue