feat(Label): Use capability-aware label availability in websocket injection.
This commit is contained in:
@@ -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}');
|
||||
|
||||
@@ -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 = <String>[
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<LabelController>();
|
||||
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<LabelController>();
|
||||
if (_labelController == null) {
|
||||
logWarning(
|
||||
'LabelChangeListener::_synchronizeLabelOnForegroundAction(): LabelController IS NOT REGISTERED',
|
||||
);
|
||||
return;
|
||||
}
|
||||
_labelController!.refreshLabelChanges(newState: newState);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-3
@@ -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();
|
||||
|
||||
+2
-1
@@ -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,
|
||||
|
||||
@@ -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>(mailboxDashboardController);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user