Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions lib/features/email/presentation/action/email_ui_action.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
import 'package:labels/model/label.dart';
import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart';
Expand Down Expand Up @@ -127,3 +128,22 @@ class RemoveLabelFromEmailAction extends EmailUIAction {
@override
List<Object?> get props => [emailId, label];
}

class SyncUpdateLabelForEmailOnMemory extends EmailUIAction {
final EmailId emailId;
final KeyWordIdentifier labelKeyword;
final bool shouldRemove;

SyncUpdateLabelForEmailOnMemory({
required this.emailId,
required this.labelKeyword,
required this.shouldRemove,
});

@override
List<Object?> get props => [
emailId,
labelKeyword,
shouldRemove,
];
}
4 changes: 0 additions & 4 deletions lib/features/email/presentation/bindings/email_bindings.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/add_a_label_to_an_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/print_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/remove_a_label_from_an_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_interactor.dart';
import 'package:tmail_ui_user/features/email/presentation/bindings/email_interactor_bindings.dart';
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
Expand All @@ -25,8 +23,6 @@ class EmailBindings extends Bindings {
Get.find<MarkAsStarEmailInteractor>(),
Get.find<GetAllIdentitiesInteractor>(),
Get.find<StoreOpenedEmailInteractor>(),
Get.find<AddALabelToAnEmailInteractor>(),
Get.find<RemoveALabelFromAnEmailInteractor>(),
Get.find<PrintEmailInteractor>(),
currentEmailId: currentEmailId,
), tag: tag);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,13 @@ import 'package:tmail_ui_user/features/email/data/local/html_analyzer.dart';
import 'package:tmail_ui_user/features/email/data/network/email_api.dart';
import 'package:tmail_ui_user/features/email/data/repository/email_repository_impl.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/add_a_label_to_an_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/get_email_content_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/get_entire_message_as_document_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/get_stored_email_state_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/move_to_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/print_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/remove_a_label_from_an_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
import 'package:tmail_ui_user/features/mailbox/data/datasource/state_datasource.dart';
Expand All @@ -37,6 +35,7 @@ import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.dart';
import 'package:tmail_ui_user/features/mailbox/data/repository/mailbox_repository_impl.dart';
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/bindings/email_action_interactor_bindings.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/identities/identity_interactors_bindings.dart';
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_manager.dart';
import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_worker_queue.dart';
Expand Down Expand Up @@ -119,12 +118,7 @@ class EmailInteractorBindings extends InteractorsBindings {
Get.find<EmailRepository>(),
));
}
Get.lazyPut<AddALabelToAnEmailInteractor>(
() => AddALabelToAnEmailInteractor(Get.find<EmailRepository>()),
);
Get.lazyPut<RemoveALabelFromAnEmailInteractor>(
() => RemoveALabelFromAnEmailInteractor(Get.find<EmailRepository>()),
);
EmailActionInteractorBindings(Get.find<EmailRepository>()).dependencies();
}

@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import 'package:tmail_ui_user/features/email/domain/model/event_action.dart';
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
import 'package:tmail_ui_user/features/email/domain/model/send_receipt_to_sender_request.dart';
import 'package:tmail_ui_user/features/email/domain/model/view_entire_message_request.dart';
import 'package:tmail_ui_user/features/email/domain/state/add_a_label_to_an_email_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/calendar_event_accept_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/calendar_event_counter_accept_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/calendar_event_maybe_state.dart';
Expand All @@ -47,10 +46,8 @@ import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_sta
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_star_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/parse_calendar_event_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/print_email_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/remove_a_label_from_an_email_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/send_receipt_to_sender_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/unsubscribe_email_state.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/add_a_label_to_an_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/calendar_event_accept_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/calendar_event_counter_accept_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/calendar_event_reject_interactor.dart';
Expand All @@ -61,7 +58,6 @@ import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_star_email_
import 'package:tmail_ui_user/features/email/domain/usecases/maybe_calendar_event_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/parse_calendar_event_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/print_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/remove_a_label_from_an_email_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/send_receipt_to_sender_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_interactor.dart';
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
Expand Down Expand Up @@ -120,8 +116,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
final StoreOpenedEmailInteractor _storeOpenedEmailInteractor;
final PrintEmailInteractor _printEmailInteractor;
final AddALabelToAnEmailInteractor addALabelToAnEmailInteractor;
final RemoveALabelFromAnEmailInteractor removeALabelFromAnEmailInteractor;
final EmailId? _currentEmailId;

CreateNewEmailRuleFilterInteractor? _createNewEmailRuleFilterInteractor;
Expand Down Expand Up @@ -191,8 +185,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
this._markAsStarEmailInteractor,
this._getAllIdentitiesInteractor,
this._storeOpenedEmailInteractor,
this.addALabelToAnEmailInteractor,
this.removeALabelFromAnEmailInteractor,
this._printEmailInteractor, {
EmailId? currentEmailId,
}) : _currentEmailId = currentEmailId;
Expand Down Expand Up @@ -249,10 +241,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
_handlePrintEmailSuccess(success);
} else if (success is CalendarEventReplySuccess) {
calendarEventSuccess(success);
} else if (success is AddALabelToAnEmailSuccess) {
handleAddLabelToEmailSuccess(success);
} else if (success is RemoveALabelFromAnEmailSuccess) {
handleRemoveLabelFromEmailSuccess(success);
} else {
super.handleSuccessViewState(success);
}
Expand All @@ -270,10 +258,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
_showMessageWhenEmailPrintingFailed(failure);
} else if (failure is CalendarEventReplyFailure) {
_calendarEventFailure(failure);
} else if (failure is AddALabelToAnEmailFailure) {
handleAddLabelToEmailFailure(failure);
} else if (failure is RemoveALabelFromAnEmailFailure) {
handleRemoveLabelFromEmailFailure(failure);
} else {
super.handleFailureViewState(failure);
}
Expand Down Expand Up @@ -363,7 +347,23 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
action.emailId != _currentEmailId) {
return;
}
toggleLabelToEmail(action.emailId, action.label, false);
mailboxDashBoardController.toggleLabelToEmail(
action.emailId,
action.label,
false,
);
} else if (action is SyncUpdateLabelForEmailOnMemory) {
mailboxDashBoardController.clearEmailUIAction();
if (_currentEmailId == null ||
action.emailId != _currentEmailId) {
return;
}

syncLabelToSelectedEmailOnMemory(
emailId: action.emailId,
labelKeyword: action.labelKeyword,
remove: action.shouldRemove,
);
}
}));

Expand Down Expand Up @@ -913,7 +913,8 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
break;
case EmailActionType.labelAs:
if (!isLabelAvailable) return;
openAddLabelToEmailDialogModal(presentationEmail);
mailboxDashBoardController
.openAddLabelToEmailDialogModal(presentationEmail);
break;
default:
break;
Expand Down
12 changes: 6 additions & 6 deletions lib/features/email/presentation/email_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ class EmailView extends GetWidget<SingleEmailController> {
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
onSelectLabelAction: (label, isSelected) =>
controller.toggleLabelToEmail(
presentationEmail.id!,
controller.onToggleLabelAction(
presentationEmail.id,
label,
isSelected,
),
Expand Down Expand Up @@ -275,8 +275,8 @@ class EmailView extends GetWidget<SingleEmailController> {
imagePaths: controller.imagePaths,
isMobileResponsive: isMobileResponsive,
labels: emailLabels,
onDeleteLabelAction: (label) => controller.toggleLabelToEmail(
presentationEmail.id!,
onDeleteLabelAction: (label) => controller.onToggleLabelAction(
presentationEmail.id,
label,
false,
),
Expand Down Expand Up @@ -320,8 +320,8 @@ class EmailView extends GetWidget<SingleEmailController> {
openBottomSheetContextMenu: controller.mailboxDashBoardController.openBottomSheetContextMenu,
openPopupMenu: controller.mailboxDashBoardController.openPopupMenuActionGroup,
onSelectLabelAction: (label, isSelected) =>
controller.toggleLabelToEmail(
presentationEmail.id!,
controller.onToggleLabelAction(
presentationEmail.id,
label,
isSelected,
),
Expand Down
Loading
Loading