TF-123 Implement caching mailbox when get all mailbox
This commit is contained in:
@@ -4,6 +4,7 @@ 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/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
|
||||
@@ -99,7 +100,9 @@ class MailboxController extends BaseController {
|
||||
}
|
||||
|
||||
@override
|
||||
void onError(error) {}
|
||||
void onError(error) {
|
||||
print('$error');
|
||||
}
|
||||
|
||||
void _buildTree(List<PresentationMailbox> folderMailboxList) async {
|
||||
final _folderMailboxTree = await _treeBuilder.generateMailboxTree(folderMailboxList);
|
||||
@@ -119,20 +122,32 @@ class MailboxController extends BaseController {
|
||||
}
|
||||
|
||||
void _setUpMapMailboxIdDefault(List<PresentationMailbox> defaultMailboxList) {
|
||||
final mapMailboxId = 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);
|
||||
|
||||
mailboxDashBoardController.setMapMailboxId(mapMailboxId);
|
||||
|
||||
var mailboxCurrent = mailboxDashBoardController.selectedMailbox.value;
|
||||
|
||||
defaultMailboxList.forEach((presentationMailbox) {
|
||||
if (mailboxCurrent == null && presentationMailbox.role == PresentationMailbox.roleInbox) {
|
||||
mailboxCurrent = presentationMailbox;
|
||||
} else if (mailboxCurrent?.role == presentationMailbox.role) {
|
||||
mailboxCurrent = presentationMailbox;
|
||||
}
|
||||
|
||||
mailboxDashBoardController.addMailboxIdToMap(presentationMailbox.role!, presentationMailbox.id);
|
||||
});
|
||||
|
||||
if (mailboxCurrent != null) {
|
||||
mailboxDashBoardController.setNewFirstSelectedMailbox(mailboxCurrent);
|
||||
if (mapMailboxDefault.containsKey(mailboxCurrent.role)) {
|
||||
mailboxDashBoardController.setNewFirstSelectedMailbox(mapMailboxDefault[mailboxCurrent.role]);
|
||||
} else {
|
||||
mailboxDashBoardController.setNewFirstSelectedMailbox(mailboxCurrent);
|
||||
}
|
||||
} else {
|
||||
if (mapMailboxDefault.containsKey(PresentationMailbox.roleInbox)) {
|
||||
mailboxDashBoardController.setNewFirstSelectedMailbox(mapMailboxDefault[PresentationMailbox.roleInbox]);
|
||||
} else {
|
||||
mailboxDashBoardController.setNewFirstSelectedMailbox(mapMailboxDefault.values.first);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user