TF-313 Apply new ui for AppBar EmailView

This commit is contained in:
dab246
2022-03-09 14:32:21 +07:00
committed by Dat H. Pham
parent 6dcf9f9ea7
commit 11735ed1d7
63 changed files with 312 additions and 244 deletions
@@ -2,6 +2,7 @@ import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
@@ -54,6 +55,10 @@ class EmailController extends BaseController {
final attachments = <Attachment>[].obs;
EmailId? _currentEmailId;
PresentationMailbox? get currentMailbox => mailboxDashBoardController.selectedMailbox.value;
PresentationEmail? get currentEmail => mailboxDashBoardController.selectedEmail.value;
EmailController(
this._getEmailContentInteractor,
this._markAsEmailReadInteractor,
@@ -310,7 +315,7 @@ class EmailController extends BaseController {
popBack();
}
void openDestinationPickerView(PresentationEmail email) async {
void moveToMailboxAction(PresentationEmail email) async {
final currentMailbox = mailboxDashBoardController.selectedMailbox.value;
final accountId = mailboxDashBoardController.accountId.value;
@@ -365,11 +370,10 @@ class EmailController extends BaseController {
}
}
void markAsStarEmail(PresentationEmail presentationEmail) async {
void markAsStarEmail(PresentationEmail presentationEmail, MarkStarAction markStarAction) async {
final accountId = mailboxDashBoardController.accountId.value;
final mailboxCurrent = mailboxDashBoardController.selectedMailbox.value;
if (accountId != null && mailboxCurrent != null) {
final markStarAction = presentationEmail.isFlaggedEmail() ? MarkStarAction.unMarkStar : MarkStarAction.markStar;
consumeState(_markAsStarEmailInteractor.execute(accountId, presentationEmail.toEmail(), markStarAction));
}
}
@@ -381,6 +385,48 @@ class EmailController extends BaseController {
mailboxDashBoardController.dispatchState(Right(success));
}
void handleEmailAction(PresentationEmail presentationEmail, EmailActionType actionType) {
switch(actionType) {
case EmailActionType.markAsUnread:
markAsEmailRead(presentationEmail, ReadActions.markAsUnread);
break;
case EmailActionType.markAsStar:
markAsStarEmail(presentationEmail, MarkStarAction.markStar);
break;
case EmailActionType.markAsUnStar:
markAsStarEmail(presentationEmail, MarkStarAction.unMarkStar);
break;
case EmailActionType.move:
moveToMailboxAction(presentationEmail);
break;
case EmailActionType.delete:
break;
default:
break;
}
}
void openMoreMenuEmailAction(BuildContext context, List<Widget> actionTiles, {Widget? cancelButton}) {
(CupertinoActionSheetBuilder(context)
..addTiles(actionTiles)
..addCancelButton(cancelButton))
.show();
}
void openMoreMenuEmailActionForTablet(BuildContext context, RelativeRect? position, List<PopupMenuEntry> popupMenuItems) async {
await showMenu(
context: context,
position: position ?? RelativeRect.fromLTRB(16, 40, 16, 16),
color: Colors.white,
elevation: 5,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(14)),
items: popupMenuItems);
}
void closeMoreMenu() {
popBack();
}
bool canComposeEmail() => mailboxDashBoardController.sessionCurrent != null
&& mailboxDashBoardController.userProfile.value != null
&& mailboxDashBoardController.mapDefaultMailboxId.isNotEmpty