refactor: fetch settings when Authenticated frame arrives
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
b08aaec999
commit
9bbc8f513c
|
|
@ -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.AuthorizationFrame
|
||||||
import chat.revolt.api.realtime.frames.sendable.PingFrame
|
import chat.revolt.api.realtime.frames.sendable.PingFrame
|
||||||
import chat.revolt.api.routes.server.fetchMember
|
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.client.plugins.websocket.ws
|
||||||
import io.ktor.websocket.CloseReason
|
import io.ktor.websocket.CloseReason
|
||||||
import io.ktor.websocket.Frame
|
import io.ktor.websocket.Frame
|
||||||
|
|
@ -446,7 +448,8 @@ object RealtimeSocket {
|
||||||
}
|
}
|
||||||
|
|
||||||
"Authenticated" -> {
|
"Authenticated" -> {
|
||||||
/* no-op */
|
SyncedSettings.fetch()
|
||||||
|
GlobalState.hydrateWithSettings(SyncedSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
|
|
|
||||||
|
|
@ -38,15 +38,13 @@ import chat.revolt.api.RevoltAPI
|
||||||
import chat.revolt.api.RevoltHttp
|
import chat.revolt.api.RevoltHttp
|
||||||
import chat.revolt.api.internals.WebChallenge
|
import chat.revolt.api.internals.WebChallenge
|
||||||
import chat.revolt.api.routes.onboard.needsOnboarding
|
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.components.screens.splash.DisconnectedScreen
|
||||||
import chat.revolt.persistence.KVStorage
|
import chat.revolt.persistence.KVStorage
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import io.ktor.client.request.get
|
import io.ktor.client.request.get
|
||||||
import javax.inject.Inject
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
@SuppressLint("StaticFieldLeak")
|
@SuppressLint("StaticFieldLeak")
|
||||||
|
|
@ -130,19 +128,11 @@ class SplashScreenViewModel @Inject constructor(
|
||||||
|
|
||||||
RevoltAPI.loginAs(token)
|
RevoltAPI.loginAs(token)
|
||||||
RevoltAPI.setSessionId(id)
|
RevoltAPI.setSessionId(id)
|
||||||
loadSettings()
|
|
||||||
setNavigateTo("home")
|
setNavigateTo("home")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun loadSettings() {
|
|
||||||
viewModelScope.launch {
|
|
||||||
SyncedSettings.fetch()
|
|
||||||
GlobalState.hydrateWithSettings(SyncedSettings)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
checkLoggedInState()
|
checkLoggedInState()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,15 +42,13 @@ import chat.revolt.api.RevoltAPI
|
||||||
import chat.revolt.api.routes.account.EmailPasswordAssessment
|
import chat.revolt.api.routes.account.EmailPasswordAssessment
|
||||||
import chat.revolt.api.routes.account.negotiateAuthentication
|
import chat.revolt.api.routes.account.negotiateAuthentication
|
||||||
import chat.revolt.api.routes.onboard.needsOnboarding
|
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.AnyLink
|
||||||
import chat.revolt.components.generic.FormTextField
|
import chat.revolt.components.generic.FormTextField
|
||||||
import chat.revolt.components.generic.Weblink
|
import chat.revolt.components.generic.Weblink
|
||||||
import chat.revolt.persistence.KVStorage
|
import chat.revolt.persistence.KVStorage
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import javax.inject.Inject
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class LoginViewModel @Inject constructor(
|
class LoginViewModel @Inject constructor(
|
||||||
|
|
@ -76,11 +74,6 @@ class LoginViewModel @Inject constructor(
|
||||||
val mfaResponse: EmailPasswordAssessment?
|
val mfaResponse: EmailPasswordAssessment?
|
||||||
get() = _mfaResponse
|
get() = _mfaResponse
|
||||||
|
|
||||||
private suspend fun loadSettings(token: String) {
|
|
||||||
SyncedSettings.fetch(token)
|
|
||||||
GlobalState.hydrateWithSettings(SyncedSettings)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun doLogin() {
|
fun doLogin() {
|
||||||
_error = null
|
_error = null
|
||||||
|
|
||||||
|
|
@ -115,7 +108,6 @@ class LoginViewModel @Inject constructor(
|
||||||
|
|
||||||
RevoltAPI.loginAs(token)
|
RevoltAPI.loginAs(token)
|
||||||
RevoltAPI.setSessionId(response.firstUserHints.token)
|
RevoltAPI.setSessionId(response.firstUserHints.token)
|
||||||
loadSettings(token)
|
|
||||||
|
|
||||||
_navigateTo = "home"
|
_navigateTo = "home"
|
||||||
} catch (e: Error) {
|
} catch (e: Error) {
|
||||||
|
|
|
||||||
|
|
@ -42,14 +42,12 @@ import chat.revolt.api.routes.account.MfaResponseRecoveryCode
|
||||||
import chat.revolt.api.routes.account.MfaResponseTotpCode
|
import chat.revolt.api.routes.account.MfaResponseTotpCode
|
||||||
import chat.revolt.api.routes.account.authenticateWithMfaRecoveryCode
|
import chat.revolt.api.routes.account.authenticateWithMfaRecoveryCode
|
||||||
import chat.revolt.api.routes.account.authenticateWithMfaTotpCode
|
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.CollapsibleCard
|
||||||
import chat.revolt.components.generic.FormTextField
|
import chat.revolt.components.generic.FormTextField
|
||||||
import chat.revolt.persistence.KVStorage
|
import chat.revolt.persistence.KVStorage
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import javax.inject.Inject
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class MfaScreenViewModel @Inject constructor(
|
class MfaScreenViewModel @Inject constructor(
|
||||||
|
|
@ -79,11 +77,6 @@ class MfaScreenViewModel @Inject constructor(
|
||||||
_recoveryCode = code
|
_recoveryCode = code
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun loadSettings(token: String) {
|
|
||||||
SyncedSettings.fetch(token)
|
|
||||||
GlobalState.hydrateWithSettings(SyncedSettings)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun tryAuthorizeTotp(mfaTicket: String) {
|
fun tryAuthorizeTotp(mfaTicket: String) {
|
||||||
_error = null
|
_error = null
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
|
|
@ -102,7 +95,6 @@ class MfaScreenViewModel @Inject constructor(
|
||||||
|
|
||||||
RevoltAPI.loginAs(token)
|
RevoltAPI.loginAs(token)
|
||||||
RevoltAPI.setSessionId(id)
|
RevoltAPI.setSessionId(id)
|
||||||
loadSettings(token)
|
|
||||||
kvStorage.set("sessionToken", token)
|
kvStorage.set("sessionToken", token)
|
||||||
kvStorage.set("sessionId", id)
|
kvStorage.set("sessionId", id)
|
||||||
|
|
||||||
|
|
@ -133,7 +125,6 @@ class MfaScreenViewModel @Inject constructor(
|
||||||
|
|
||||||
RevoltAPI.loginAs(token)
|
RevoltAPI.loginAs(token)
|
||||||
RevoltAPI.setSessionId(id)
|
RevoltAPI.setSessionId(id)
|
||||||
loadSettings(token)
|
|
||||||
kvStorage.set("sessionToken", token)
|
kvStorage.set("sessionToken", token)
|
||||||
kvStorage.set("sessionId", id)
|
kvStorage.set("sessionId", id)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue