From 3af41dc69e5563a6daa64aebe1f897f2c20f5f55 Mon Sep 17 00:00:00 2001 From: klockky Date: Wed, 10 Jun 2026 11:35:17 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BD=D0=B0=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D1=85=D1=8D=D0=BD=D0=B4=D1=88=D0=B5=D0=B9=D0=BA=D0=B5?= =?UTF-8?q?=20+=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20FCM-=D1=82=D0=BE=D0=BA=D0=B5=D0=BD=D0=B0=20(push?= =?UTF-8?q?Options)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/backend/api.dart | 21 ++++++++++++++------- lib/backend/modules/account.dart | 1 + lib/main.dart | 13 +++++++------ 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/lib/backend/api.dart b/lib/backend/api.dart index 43234f8..b732b07 100644 --- a/lib/backend/api.dart +++ b/lib/backend/api.dart @@ -119,14 +119,21 @@ class Api { if (response.isOk) { _callsSeed = response.payload['callsSeed'] as int?; _registrationCountries = _parseRegistrationCountries(response.payload); - _setSessionState(SessionState.online); + _sessionState = SessionState.online; _startPinging(); logger.i('Сессия онлайн, хэндшейк ок'); - _handshakeSuccessController.add( - response.payload['device_name'] as String? ?? 'Unknown', - ); if (_onReconnectCallback != null) { - _onReconnectCallback!(); + try { + await _onReconnectCallback!(); + } catch (e) { + logger.w('Авто-логин при хэндшейке не удался: $e'); + } + } + if (_sessionState == SessionState.online) { + _stateController.add(SessionState.online); + _handshakeSuccessController.add( + response.payload['device_name'] as String? ?? 'Unknown', + ); } } else { logger.e('Хэндшейк отклонён: ${response.payload}'); @@ -364,9 +371,9 @@ class Api { await connect(); } - void Function()? _onReconnectCallback; + Future Function()? _onReconnectCallback; - void setReconnectCallback(void Function() callback) { + void setReconnectCallback(Future Function() callback) { _onReconnectCallback = callback; } diff --git a/lib/backend/modules/account.dart b/lib/backend/modules/account.dart index a71307d..f9beb37 100644 --- a/lib/backend/modules/account.dart +++ b/lib/backend/modules/account.dart @@ -493,6 +493,7 @@ class AccountModule { _ensureOnline(); final packet = await _api.sendRequest(Opcode.config, { 'pushToken': pushToken, + 'pushOptions': 131072, }); if (packet.isError) { final msg = messageFromErrorPayload(packet.payload).toUpperCase(); diff --git a/lib/main.dart b/lib/main.dart index 6734b46..91cf87a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -56,6 +56,8 @@ final fileUploader = FileUploader(api: api, messages: messagesModule); final RouteObserver> appRouteObserver = RouteObserver>(); +bool isOnemeFlavor = false; + Future _loadInitialLocale() async { final prefs = await SharedPreferences.getInstance(); final code = prefs.getString('app_locale'); @@ -98,9 +100,7 @@ void main() async { final digitalIdNativeFuture = AppDigitalIdNative.load(); final packageInfo = await packageInfoFuture; - if (packageInfo.packageName == 'ru.oneme.app') { - await PushService.instance.init(api: api, account: accountModule); - } + isOnemeFlavor = packageInfo.packageName == 'ru.oneme.app'; final initialLocale = await localeFuture; @@ -232,9 +232,10 @@ class KometAppState extends State } catch (_) {} }); - _loginStatusSub = accountModule.loginStatusStream.listen((status) { - if (status == LoginStatus.success) { - PushService.instance.onLoginSuccess(); + _loginStatusSub = accountModule.loginStatusStream.listen((status) async { + if (status == LoginStatus.success && isOnemeFlavor) { + await PushService.instance.init(api: api, account: accountModule); + await PushService.instance.onLoginSuccess(); } });