logout: снятие устройства с f7push (unregisterBlocking) best-effort на IO, рядом с ревокацией app-password (mail/112а)
This commit is contained in:
@@ -5,11 +5,14 @@ import androidx.lifecycle.AndroidViewModel
|
|||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
import ru.forbion.f7cloud.core.auth.AppPasswordRevoker
|
import ru.forbion.f7cloud.core.auth.AppPasswordRevoker
|
||||||
import ru.forbion.f7cloud.core.auth.AuthSession
|
import ru.forbion.f7cloud.core.auth.AuthSession
|
||||||
import ru.forbion.f7cloud.core.auth.AuthStore
|
import ru.forbion.f7cloud.core.auth.AuthStore
|
||||||
|
import ru.forbion.f7cloud.core.push.F7PushRegistrar
|
||||||
import ru.forbion.f7cloud.feature.files.OfficeWarmup
|
import ru.forbion.f7cloud.feature.files.OfficeWarmup
|
||||||
import ru.forbion.f7cloud.mobile.OfficeWebViewPool
|
import ru.forbion.f7cloud.mobile.OfficeWebViewPool
|
||||||
|
|
||||||
@@ -29,9 +32,16 @@ class MainViewModel(app: Application) : AndroidViewModel(app) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun logout() {
|
fun logout() {
|
||||||
// Best-effort ревокация app password на сервере ДО очистки локальной сессии.
|
// Best-effort ревокация app password + снятие устройства с push ДО очистки локальной сессии.
|
||||||
_session.value?.let { current ->
|
_session.value?.let { current ->
|
||||||
viewModelScope.launch { runCatching { AppPasswordRevoker.revoke(current) } }
|
viewModelScope.launch { runCatching { AppPasswordRevoker.revoke(current) } }
|
||||||
|
viewModelScope.launch {
|
||||||
|
runCatching {
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
F7PushRegistrar.unregisterBlocking(getApplication(), current)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
OfficeWarmup.clear()
|
OfficeWarmup.clear()
|
||||||
OfficeWebViewPool.dispose()
|
OfficeWebViewPool.dispose()
|
||||||
|
|||||||
Reference in New Issue
Block a user