TF-4383 Handle read only labels

This commit is contained in:
dab246
2026-03-25 18:36:10 +07:00
committed by Dat H. Pham
parent c17782bfd4
commit eb017b54b1
10 changed files with 97 additions and 7 deletions
@@ -7,19 +7,18 @@ import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/state.dart';
import 'package:labels/extensions/list_label_extension.dart';
import 'package:labels/model/label.dart';
import 'package:labels/utils/labels_constants.dart';
import 'package:labels/labels.dart';
import 'package:model/mailbox/expand_mode.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/home/data/exceptions/session_exceptions.dart';
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
import 'package:tmail_ui_user/features/labels/domain/state/create_new_label_state.dart';
import 'package:tmail_ui_user/features/labels/domain/state/edit_label_state.dart';
import 'package:tmail_ui_user/features/labels/domain/state/delete_a_label_state.dart';
import 'package:tmail_ui_user/features/labels/domain/state/edit_label_state.dart';
import 'package:tmail_ui_user/features/labels/domain/state/get_all_label_state.dart';
import 'package:tmail_ui_user/features/labels/domain/usecases/create_new_label_interactor.dart';
import 'package:tmail_ui_user/features/labels/domain/usecases/edit_label_interactor.dart';
import 'package:tmail_ui_user/features/labels/domain/usecases/delete_a_label_interactor.dart';
import 'package:tmail_ui_user/features/labels/domain/usecases/edit_label_interactor.dart';
import 'package:tmail_ui_user/features/labels/domain/usecases/get_all_label_interactor.dart';
import 'package:tmail_ui_user/features/labels/domain/usecases/get_label_changes_interactor.dart';
import 'package:tmail_ui_user/features/labels/presentation/extensions/handle_label_action_type_extension.dart';
@@ -53,6 +52,7 @@ class LabelController extends BaseController with LabelContextMenuMixin {
State? _currentLabelState;
AccountId? _accountId;
Session? _session;
LabelsCapability? _labelsCapability;
@override
void onInit() {
@@ -64,9 +64,17 @@ class LabelController extends BaseController with LabelContextMenuMixin {
return LabelsConstants.labelsCapability.isSupported(session, accountId);
}
LabelsCapability? get labelsCapability => _labelsCapability;
bool get shouldAskReadOnly {
final labelVersion = labelsCapability?.version;
return labelVersion != null && labelVersion >= 1;
}
void checkLabelSettingState(Session session, AccountId accountId) {
_session = session;
_accountId = accountId;
_labelsCapability = _session?.getLabelsCapability(accountId);
_getLabelSettingStateInteractor =
getBinding<GetLabelSettingStateInteractor>();
if (_getLabelSettingStateInteractor != null) {
@@ -245,6 +253,7 @@ class LabelController extends BaseController with LabelContextMenuMixin {
_currentLabelState = null;
_accountId = null;
_session = null;
_labelsCapability = null;
super.onClose();
}
}