TF-101 Show counter regular mailbox on app bar thread view

This commit is contained in:
dab246
2021-10-14 13:59:17 +07:00
committed by Dat H. Pham
parent f198f4ada0
commit eb8103d98f
5 changed files with 73 additions and 51 deletions
@@ -343,7 +343,7 @@ class EmailController extends BaseController {
bool canComposeEmail() => mailboxDashBoardController.sessionCurrent != null
&& mailboxDashBoardController.userProfile.value != null
&& mailboxDashBoardController.mapMailboxId.containsKey(PresentationMailbox.roleOutbox)
&& mailboxDashBoardController.mapDefaultMailboxId.containsKey(PresentationMailbox.roleOutbox)
&& mailboxDashBoardController.selectedEmail.value != null;
void backToThreadView() {
@@ -362,7 +362,7 @@ class EmailController extends BaseController {
mailboxRole: mailboxDashBoardController.selectedMailbox.value?.role,
session: mailboxDashBoardController.sessionCurrent!,
userProfile: mailboxDashBoardController.userProfile.value!,
mapMailboxId: mailboxDashBoardController.mapMailboxId));
mapMailboxId: mailboxDashBoardController.mapDefaultMailboxId));
}
}
}
@@ -84,7 +84,7 @@ class MailboxController extends BaseController {
if (success is GetAllMailboxSuccess) {
currentMailboxState = success.currentMailboxState;
defaultMailboxList.value = success.defaultMailboxList;
_setUpMapMailboxIdDefault(success.defaultMailboxList);
_setUpMapMailboxIdDefault(success.defaultMailboxList, success.folderMailboxList);
_buildTree(success.folderMailboxList);
}
});
@@ -131,32 +131,44 @@ class MailboxController extends BaseController {
folderMailboxNodeList.value = newMailboxNodeList;
}
void _setUpMapMailboxIdDefault(List<PresentationMailbox> defaultMailboxList) {
final mapMailboxId = Map<Role, MailboxId>.fromIterable(
void _setUpMapMailboxIdDefault(List<PresentationMailbox> defaultMailboxList, List<PresentationMailbox> folderMailboxList) {
final mapDefaultMailboxId = Map<Role, MailboxId>.fromIterable(
defaultMailboxList,
key: (presentationMailbox) => presentationMailbox.role!,
value: (presentationMailbox) => presentationMailbox.id);
final mapMailboxDefault = Map<Role, PresentationMailbox>.fromIterable(
defaultMailboxList,
key: (presentationMailbox) => presentationMailbox.role!,
value: (presentationMailbox) => presentationMailbox);
final mapDefaultMailbox = Map<Role, PresentationMailbox>.fromIterable(
defaultMailboxList,
key: (presentationMailbox) => presentationMailbox.role!,
value: (presentationMailbox) => presentationMailbox);
mailboxDashBoardController.setMapMailboxId(mapMailboxId);
final mapFolderMailbox = Map<MailboxId, PresentationMailbox>.fromIterable(
folderMailboxList,
key: (presentationMailbox) => presentationMailbox.id,
value: (presentationMailbox) => presentationMailbox);
mailboxDashBoardController.setMapDefaultMailboxId(mapDefaultMailboxId);
var mailboxCurrent = mailboxDashBoardController.selectedMailbox.value;
if (mailboxCurrent != null) {
if (mapMailboxDefault.containsKey(mailboxCurrent.role)) {
mailboxDashBoardController.setNewFirstSelectedMailbox(mapMailboxDefault[mailboxCurrent.role]);
if (mailboxCurrent.hasRole()) {
mailboxDashBoardController.setNewFirstSelectedMailbox(mapDefaultMailbox.containsKey(mailboxCurrent.role)
? mapDefaultMailbox[mailboxCurrent.role]
: mailboxCurrent);
} else {
mailboxDashBoardController.setNewFirstSelectedMailbox(mailboxCurrent);
mailboxDashBoardController.setNewFirstSelectedMailbox(mapFolderMailbox.containsKey(mailboxCurrent.id)
? mapFolderMailbox[mailboxCurrent.id]
: mailboxCurrent);
}
} else {
if (mapMailboxDefault.containsKey(PresentationMailbox.roleInbox)) {
mailboxDashBoardController.setNewFirstSelectedMailbox(mapMailboxDefault[PresentationMailbox.roleInbox]);
if (mapDefaultMailbox.containsKey(PresentationMailbox.roleInbox)) {
mailboxDashBoardController.setNewFirstSelectedMailbox(mapDefaultMailbox[PresentationMailbox.roleInbox]);
} else {
mailboxDashBoardController.setNewFirstSelectedMailbox(mapMailboxDefault.values.first);
final allMailbox = defaultMailboxList + folderMailboxList;
if (allMailbox.isNotEmpty) {
mailboxDashBoardController.setNewFirstSelectedMailbox(allMailbox.first);
}
}
}
}
@@ -26,7 +26,7 @@ class MailboxDashBoardController extends BaseController {
final userProfile = Rxn<UserProfile>();
Session? sessionCurrent;
Map<Role, MailboxId> mapMailboxId = Map();
Map<Role, MailboxId> mapDefaultMailboxId = Map();
MailboxDashBoardController(this._getUserProfileInteractor, this._appToast);
@@ -91,8 +91,8 @@ class MailboxDashBoardController extends BaseController {
});
}
void setMapMailboxId(Map<Role, MailboxId> newMapMailboxId) {
mapMailboxId = newMapMailboxId;
void setMapDefaultMailboxId(Map<Role, MailboxId> newMapMailboxId) {
mapDefaultMailboxId = newMapMailboxId;
}
void setSelectedMailbox(PresentationMailbox? newPresentationMailbox) {
@@ -473,7 +473,7 @@ class ThreadController extends BaseController {
bool canComposeEmail() => mailboxDashBoardController.sessionCurrent != null
&& mailboxDashBoardController.userProfile.value != null
&& mailboxDashBoardController.mapMailboxId.containsKey(PresentationMailbox.roleOutbox);
&& mailboxDashBoardController.mapDefaultMailboxId.containsKey(PresentationMailbox.roleOutbox);
void openMailboxLeftMenu() {
mailboxDashBoardController.openDrawer();
@@ -490,7 +490,7 @@ class ThreadController extends BaseController {
arguments: ComposerArguments(
session: mailboxDashBoardController.sessionCurrent!,
userProfile: mailboxDashBoardController.userProfile.value!,
mapMailboxId: mailboxDashBoardController.mapMailboxId));
mapMailboxId: mailboxDashBoardController.mapDefaultMailboxId));
}
}
}
@@ -94,43 +94,33 @@ class AppBarThreadWidgetBuilder {
Widget _buildContentCenterAppBar() {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
(_presentationMailbox != null && _presentationMailbox!.hasRole())
? GestureDetector(
onTap: () => {
if (_onOpenListMailboxActionClick != null) {
_onOpenListMailboxActionClick!()
}},
child: Padding(
padding: EdgeInsets.only(left: 16),
child: Text(
'${_presentationMailbox?.name != null ? _presentationMailbox?.name?.name : ''}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 22, color: AppColor.titleAppBarMailboxListMail, fontWeight: FontWeight.w500))))
: Expanded(child: GestureDetector(
onTap: () => {
if (_onOpenListMailboxActionClick != null) {
_onOpenListMailboxActionClick!()
}},
child: Padding(
padding: EdgeInsets.only(left: 16),
child: Text(
'${_presentationMailbox?.name != null ? _presentationMailbox?.name?.name : ''}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 22, color: AppColor.titleAppBarMailboxListMail, fontWeight: FontWeight.w500))))),
if(_presentationMailbox != null && _presentationMailbox!.hasRole() && _presentationMailbox!.getCountUnReadEmails().isNotEmpty)
GestureDetector(
onTap: () => {
if (_onOpenListMailboxActionClick != null) {
_onOpenListMailboxActionClick!()
}},
child: Padding(
padding: EdgeInsets.only(left: 16, right: 8),
child: Container(
padding: EdgeInsets.zero,
margin: EdgeInsets.zero,
constraints: BoxConstraints(maxWidth: _getMaxWidthAppBarTitle()),
child: Text(
'${ _presentationMailbox?.name?.name ?? ''}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 22, color: AppColor.titleAppBarMailboxListMail, fontWeight: FontWeight.w500))
))),
if(_presentationMailbox?.getCountUnReadEmails().isNotEmpty == true)
Container(
margin: EdgeInsets.only(left: 9),
margin: EdgeInsets.zero,
padding: EdgeInsets.only(left: 8, right: 8, top: 2.5, bottom: 2.5),
decoration:BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: AppColor.backgroundCounterMailboxColor),
child: Text(
'${_presentationMailbox!.getCountUnReadEmails()} ${AppLocalizations.of(_context).unread_email_notification}',
'${_presentationMailbox?.getCountUnReadEmails() ?? ''} ${AppLocalizations.of(_context).unread_email_notification}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(fontSize: 10, color: AppColor.counterMailboxColor, fontWeight: FontWeight.w500),
@@ -138,4 +128,24 @@ class AppBarThreadWidgetBuilder {
]
);
}
double _getMaxWidthAppBarTitle() {
var width = MediaQuery.of(_context).size.width;
var widthSiblingsWidget = _presentationMailbox?.getCountUnReadEmails().isNotEmpty == true
? 150
: 100;
if (_responsiveUtils.isTablet(_context)) {
width = width * 0.7;
widthSiblingsWidget = _presentationMailbox?.getCountUnReadEmails().isNotEmpty == true
? 70
: 0;
} else if (_responsiveUtils.isDesktop(_context)) {
width = width * 0.2;
widthSiblingsWidget = _presentationMailbox?.getCountUnReadEmails().isNotEmpty == true
? 50
: 0;
}
final maxWidth = width - widthSiblingsWidget;
return maxWidth;
}
}