diff --git a/lib/features/labels/data/network/label_api.dart b/lib/features/labels/data/network/label_api.dart index 75a57cc65..26b8b0074 100644 --- a/lib/features/labels/data/network/label_api.dart +++ b/lib/features/labels/data/network/label_api.dart @@ -236,7 +236,7 @@ class LabelApi log('LabelAPI::getChanges: ' 'newStateChanges=${changes.newState} | ' 'newStateLabel=$newStateLabel | ' - 'hasMore=${changes.hasMoreChanges}' + 'hasMore=${changes.hasMoreChanges} | ' 'updatedFetched=${updatedResult.labels?.length} | ' 'createdFetched=${createdResult.labels?.length} | ' 'totalDestroyed=${allDestroyedIds.length}'); diff --git a/lib/features/labels/presentation/extensions/handle_label_websocket_extension.dart b/lib/features/labels/presentation/extensions/handle_label_websocket_extension.dart index 71addc667..9cc700382 100644 --- a/lib/features/labels/presentation/extensions/handle_label_websocket_extension.dart +++ b/lib/features/labels/presentation/extensions/handle_label_websocket_extension.dart @@ -10,12 +10,17 @@ import 'package:tmail_ui_user/features/push_notification/presentation/websocket/ extension HandleLabelWebsocketExtension on LabelController { void refreshLabelChanges({required jmap.State newState}) { - if (accountId == null || - session == null || - currentLabelState == null || - currentLabelState == newState || - isLabelSettingEnabled.isFalse) { - logWarning('HandleLabelWebsocketExtension::refreshLabelChanges: accountId or session or currentLabelState or newState or isLabelSettingEnabled is null'); + final skipReasons = [ + if (accountId == null) 'accountId is null', + if (session == null) 'session is null', + if (currentLabelState == null) 'currentLabelState is null', + if (currentLabelState == newState) 'state unchanged', + if (isLabelSettingEnabled.isFalse) 'label setting disabled', + ]; + if (skipReasons.isNotEmpty) { + logWarning( + 'HandleLabelWebsocketExtension::refreshLabelChanges: skip (${skipReasons.join(', ')})', + ); return; } diff --git a/lib/features/mailbox_dashboard/presentation/extensions/labels/handle_logic_label_extension.dart b/lib/features/mailbox_dashboard/presentation/extensions/labels/handle_logic_label_extension.dart index 27e520c80..2ae272b87 100644 --- a/lib/features/mailbox_dashboard/presentation/extensions/labels/handle_logic_label_extension.dart +++ b/lib/features/mailbox_dashboard/presentation/extensions/labels/handle_logic_label_extension.dart @@ -28,10 +28,11 @@ extension HandleLogicLabelExtension on MailboxDashBoardController { void _onLabelSettingEnabledChanged(bool isEnabled) { log('$runtimeType::_onLabelSettingEnabledChanged: isEnabled is $isEnabled'); + final isLabelAvailable = isEnabled && isLabelCapabilitySupported; injectWebSocket( session: sessionCurrent, accountId: accountId.value, - isLabelAvailable: isEnabled, + isLabelAvailable: isLabelAvailable, ); } } diff --git a/lib/features/push_notification/presentation/listener/label_change_listener.dart b/lib/features/push_notification/presentation/listener/label_change_listener.dart index 9b854c064..f11378581 100644 --- a/lib/features/push_notification/presentation/listener/label_change_listener.dart +++ b/lib/features/push_notification/presentation/listener/label_change_listener.dart @@ -10,17 +10,7 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class LabelChangeListener extends ChangeListener { LabelController? _labelController; - LabelChangeListener._internal() { - try { - _labelController = getBinding(); - if (_labelController == null) { - logWarning( - 'LabelChangeListener::_internal(): LabelController IS NOT REGISTERED'); - } - } catch (e) { - logWarning('LabelChangeListener::_internal(): $e'); - } - } + LabelChangeListener._internal(); static final LabelChangeListener _instance = LabelChangeListener._internal(); @@ -36,6 +26,13 @@ class LabelChangeListener extends ChangeListener { } void _synchronizeLabelOnForegroundAction(jmap.State newState) { - _labelController?.refreshLabelChanges(newState: newState); + _labelController ??= getBinding(); + if (_labelController == null) { + logWarning( + 'LabelChangeListener::_synchronizeLabelOnForegroundAction(): LabelController IS NOT REGISTERED', + ); + return; + } + _labelController!.refreshLabelChanges(newState: newState); } } diff --git a/test/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller_test.dart b/test/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller_test.dart index 96015cff0..c5a0a16c2 100644 --- a/test/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller_test.dart +++ b/test/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller_test.dart @@ -404,7 +404,8 @@ void main() { when(emailReceiveManager.pendingSharedFileInfo).thenAnswer((_) => BehaviorSubject.seeded([])); when(downloadController.downloadUIAction).thenAnswer((_) => Rxn(DownloadUIAction.idle)); - when(labelController.isLabelSettingEnabled).thenAnswer((_) => RxBool(false)); + final isLabelSettingEnabled = RxBool(false); + when(labelController.isLabelSettingEnabled).thenReturn(isLabelSettingEnabled); Get.put(mailboxDashboardController); mailboxDashboardController.onReady(); @@ -452,7 +453,8 @@ void main() { when(context.owner).thenReturn(BuildOwner(focusManager: FocusManager())); when(context.mounted).thenReturn(true); when(downloadController.downloadUIAction).thenAnswer((_) => Rxn(DownloadUIAction.idle)); - when(labelController.isLabelSettingEnabled).thenAnswer((_) => RxBool(false)); + final isLabelSettingEnabled = RxBool(false); + when(labelController.isLabelSettingEnabled).thenReturn(isLabelSettingEnabled); // expect query in search controller update as expected mailboxDashboardController.searchEmailByQueryString(queryString); @@ -637,7 +639,8 @@ void main() { when(emailReceiveManager.pendingSharedFileInfo).thenAnswer((_) => BehaviorSubject.seeded([])); when(downloadController.downloadUIAction).thenAnswer((_) => Rxn(DownloadUIAction.idle)); - when(labelController.isLabelSettingEnabled).thenAnswer((_) => RxBool(false)); + final isLabelSettingEnabled = RxBool(false); + when(labelController.isLabelSettingEnabled).thenReturn(isLabelSettingEnabled); Get.put(mailboxDashboardController); mailboxDashboardController.onReady(); diff --git a/test/features/mailbox_dashboard/presentation/view/mailbox_dashboard_view_widget_test.dart b/test/features/mailbox_dashboard/presentation/view/mailbox_dashboard_view_widget_test.dart index 2be593b2f..484ef911b 100644 --- a/test/features/mailbox_dashboard/presentation/view/mailbox_dashboard_view_widget_test.dart +++ b/test/features/mailbox_dashboard/presentation/view/mailbox_dashboard_view_widget_test.dart @@ -365,7 +365,8 @@ void main() { when(emailReceiveManager.pendingSharedFileInfo).thenAnswer((_) => BehaviorSubject.seeded([])); when(downloadController.downloadUIAction).thenAnswer((_) => Rxn(DownloadUIAction.idle)); - when(labelController.isLabelSettingEnabled).thenAnswer((_) => RxBool(false)); + final isLabelSettingEnabled = RxBool(false); + when(labelController.isLabelSettingEnabled).thenReturn(isLabelSettingEnabled); searchController = SearchController( quickSearchEmailInteractor, diff --git a/test/features/search/verify_before_time_in_search_email_filter_test.dart b/test/features/search/verify_before_time_in_search_email_filter_test.dart index cb343b608..cf5f2de12 100644 --- a/test/features/search/verify_before_time_in_search_email_filter_test.dart +++ b/test/features/search/verify_before_time_in_search_email_filter_test.dart @@ -394,7 +394,8 @@ void main() { when(emailReceiveManager.pendingSharedFileInfo).thenAnswer((_) => BehaviorSubject.seeded([])); when(downloadController.downloadUIAction).thenAnswer((_) => Rxn(DownloadUIAction.idle)); - when(labelController.isLabelSettingEnabled).thenAnswer((_) => RxBool(false)); + final isLabelSettingEnabled = RxBool(false); + when(labelController.isLabelSettingEnabled).thenReturn(isLabelSettingEnabled); Get.put(mailboxDashboardController);