refactor: fetch settings when Authenticated frame arrives

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2023-10-31 20:46:09 +01:00
parent b08aaec999
commit 9bbc8f513c
4 changed files with 7 additions and 31 deletions

View File

@ -28,6 +28,8 @@ import chat.revolt.api.realtime.frames.receivable.UserUpdateFrame
import chat.revolt.api.realtime.frames.sendable.AuthorizationFrame
import chat.revolt.api.realtime.frames.sendable.PingFrame
import chat.revolt.api.routes.server.fetchMember
import chat.revolt.api.settings.GlobalState
import chat.revolt.api.settings.SyncedSettings
import io.ktor.client.plugins.websocket.ws
import io.ktor.websocket.CloseReason
import io.ktor.websocket.Frame
@ -446,7 +448,8 @@ object RealtimeSocket {
}
"Authenticated" -> {
/* no-op */
SyncedSettings.fetch()
GlobalState.hydrateWithSettings(SyncedSettings)
}
else -> {

View File

@ -38,15 +38,13 @@ import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltHttp
import chat.revolt.api.internals.WebChallenge
import chat.revolt.api.routes.onboard.needsOnboarding
import chat.revolt.api.settings.GlobalState
import chat.revolt.api.settings.SyncedSettings
import chat.revolt.components.screens.splash.DisconnectedScreen
import chat.revolt.persistence.KVStorage
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import io.ktor.client.request.get
import javax.inject.Inject
import kotlinx.coroutines.launch
import javax.inject.Inject
@HiltViewModel
@SuppressLint("StaticFieldLeak")
@ -130,19 +128,11 @@ class SplashScreenViewModel @Inject constructor(
RevoltAPI.loginAs(token)
RevoltAPI.setSessionId(id)
loadSettings()
setNavigateTo("home")
}
}
}
private fun loadSettings() {
viewModelScope.launch {
SyncedSettings.fetch()
GlobalState.hydrateWithSettings(SyncedSettings)
}
}
init {
checkLoggedInState()
}

View File

@ -42,15 +42,13 @@ import chat.revolt.api.RevoltAPI
import chat.revolt.api.routes.account.EmailPasswordAssessment
import chat.revolt.api.routes.account.negotiateAuthentication
import chat.revolt.api.routes.onboard.needsOnboarding
import chat.revolt.api.settings.GlobalState
import chat.revolt.api.settings.SyncedSettings
import chat.revolt.components.generic.AnyLink
import chat.revolt.components.generic.FormTextField
import chat.revolt.components.generic.Weblink
import chat.revolt.persistence.KVStorage
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import kotlinx.coroutines.launch
import javax.inject.Inject
@HiltViewModel
class LoginViewModel @Inject constructor(
@ -76,11 +74,6 @@ class LoginViewModel @Inject constructor(
val mfaResponse: EmailPasswordAssessment?
get() = _mfaResponse
private suspend fun loadSettings(token: String) {
SyncedSettings.fetch(token)
GlobalState.hydrateWithSettings(SyncedSettings)
}
fun doLogin() {
_error = null
@ -115,7 +108,6 @@ class LoginViewModel @Inject constructor(
RevoltAPI.loginAs(token)
RevoltAPI.setSessionId(response.firstUserHints.token)
loadSettings(token)
_navigateTo = "home"
} catch (e: Error) {

View File

@ -42,14 +42,12 @@ import chat.revolt.api.routes.account.MfaResponseRecoveryCode
import chat.revolt.api.routes.account.MfaResponseTotpCode
import chat.revolt.api.routes.account.authenticateWithMfaRecoveryCode
import chat.revolt.api.routes.account.authenticateWithMfaTotpCode
import chat.revolt.api.settings.GlobalState
import chat.revolt.api.settings.SyncedSettings
import chat.revolt.components.generic.CollapsibleCard
import chat.revolt.components.generic.FormTextField
import chat.revolt.persistence.KVStorage
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import kotlinx.coroutines.launch
import javax.inject.Inject
@HiltViewModel
class MfaScreenViewModel @Inject constructor(
@ -79,11 +77,6 @@ class MfaScreenViewModel @Inject constructor(
_recoveryCode = code
}
private suspend fun loadSettings(token: String) {
SyncedSettings.fetch(token)
GlobalState.hydrateWithSettings(SyncedSettings)
}
fun tryAuthorizeTotp(mfaTicket: String) {
_error = null
viewModelScope.launch {
@ -102,7 +95,6 @@ class MfaScreenViewModel @Inject constructor(
RevoltAPI.loginAs(token)
RevoltAPI.setSessionId(id)
loadSettings(token)
kvStorage.set("sessionToken", token)
kvStorage.set("sessionId", id)
@ -133,7 +125,6 @@ class MfaScreenViewModel @Inject constructor(
RevoltAPI.loginAs(token)
RevoltAPI.setSessionId(id)
loadSettings(token)
kvStorage.set("sessionToken", token)
kvStorage.set("sessionId", id)