From 9f08e6ce621466a04d48ab9b1ab3baca93559e57 Mon Sep 17 00:00:00 2001 From: Nutcake Date: Sat, 21 Oct 2023 12:39:09 +0200 Subject: [PATCH] Fix online status not being restored properly Closes #11 --- lib/clients/messaging_client.dart | 11 ++++++++--- lib/main.dart | 1 + pubspec.yaml | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/clients/messaging_client.dart b/lib/clients/messaging_client.dart index fc53a8d..fc54cdb 100644 --- a/lib/clients/messaging_client.dart +++ b/lib/clients/messaging_client.dart @@ -6,6 +6,7 @@ import 'package:recon/apis/session_api.dart'; import 'package:recon/apis/user_api.dart'; import 'package:recon/clients/api_client.dart'; import 'package:recon/clients/notification_client.dart'; +import 'package:recon/clients/settings_client.dart'; import 'package:recon/crypto_helper.dart'; import 'package:recon/hub_manager.dart'; import 'package:recon/models/hub_events.dart'; @@ -37,6 +38,7 @@ class MessagingClient extends ChangeNotifier { final HubManager _hubManager = HubManager(); final Map _sessionMap = {}; final Set _knownSessionKeys = {}; + final SettingsClient _settingsClient; Friend? selectedFriend; Timer? _statusHeartbeat; @@ -47,9 +49,11 @@ class MessagingClient extends ChangeNotifier { UserStatus get userStatus => _userStatus; - MessagingClient({required ApiClient apiClient, required NotificationClient notificationClient}) + MessagingClient({required ApiClient apiClient, required NotificationClient notificationClient, required SettingsClient settingsClient}) : _apiClient = apiClient, - _notificationClient = notificationClient { + _notificationClient = notificationClient, + _settingsClient = settingsClient + { debugPrint("mClient created: $hashCode"); Hive.openBox(_messageBoxKey).then((box) async { await box.delete(_lastUpdateKey); @@ -276,7 +280,8 @@ class MessagingClient extends ChangeNotifier { await _refreshUnreads(); _unreadSafeguard = Timer.periodic(_unreadSafeguardDuration, (timer) => _refreshUnreads()); _hubManager.send("RequestStatus", arguments: [null, false]); - await setOnlineStatus(OnlineStatus.online); + final lastOnline = OnlineStatus.values.elementAtOrNull(_settingsClient.currentSettings.lastOnlineStatus.valueOrDefault); + await setOnlineStatus(lastOnline ?? OnlineStatus.online); _statusHeartbeat = Timer.periodic(_statusHeartbeatDuration, (timer) { setOnlineStatus(_userStatus.onlineStatus); }); diff --git a/lib/main.dart b/lib/main.dart index ddf6bee..c940b2e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -164,6 +164,7 @@ class _ReConState extends State { ChangeNotifierProvider( create: (context) => MessagingClient( apiClient: clientHolder.apiClient, + settingsClient: clientHolder.settingsClient, notificationClient: clientHolder.notificationClient, ), ), diff --git a/pubspec.yaml b/pubspec.yaml index 0da794f..014ffa9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 0.9.2-beta+1 +version: 0.9.3-beta+1 environment: sdk: '>=3.0.1'