From 255c962d8fcdd2ed40d6add4d1f01e759ec6185a Mon Sep 17 00:00:00 2001 From: b-dev-mobile Date: Mon, 13 Jul 2026 10:15:12 +0000 Subject: [PATCH] =?UTF-8?q?logout:=20=D1=81=D0=BD=D1=8F=D1=82=D0=B8=D0=B5?= =?UTF-8?q?=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2=D0=B0?= =?UTF-8?q?=20=D1=81=20f7push=20(unregisterBlocking)=20best-effort=20?= =?UTF-8?q?=D0=BD=D0=B0=20IO,=20=D1=80=D1=8F=D0=B4=D0=BE=D0=BC=20=D1=81=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B2=D0=BE=D0=BA=D0=B0=D1=86=D0=B8=D0=B5=D0=B9=20?= =?UTF-8?q?app-password=20(mail/112=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/forbion/f7cloud/mobile/ui/MainViewModel.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ru/forbion/f7cloud/mobile/ui/MainViewModel.kt b/app/src/main/java/ru/forbion/f7cloud/mobile/ui/MainViewModel.kt index 2aa2208..048159c 100644 --- a/app/src/main/java/ru/forbion/f7cloud/mobile/ui/MainViewModel.kt +++ b/app/src/main/java/ru/forbion/f7cloud/mobile/ui/MainViewModel.kt @@ -5,11 +5,14 @@ import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import ru.forbion.f7cloud.core.auth.AppPasswordRevoker import ru.forbion.f7cloud.core.auth.AuthSession 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.mobile.OfficeWebViewPool @@ -29,9 +32,16 @@ class MainViewModel(app: Application) : AndroidViewModel(app) { } fun logout() { - // Best-effort ревокация app password на сервере ДО очистки локальной сессии. + // Best-effort ревокация app password + снятие устройства с push ДО очистки локальной сессии. _session.value?.let { current -> viewModelScope.launch { runCatching { AppPasswordRevoker.revoke(current) } } + viewModelScope.launch { + runCatching { + withContext(Dispatchers.IO) { + F7PushRegistrar.unregisterBlocking(getApplication(), current) + } + } + } } OfficeWarmup.clear() OfficeWebViewPool.dispose()