TF-123 Implement caching mailbox when get all mailbox
This commit is contained in:
@@ -5,8 +5,10 @@ import 'package:tmail_ui_user/features/login/data/repository/credential_reposito
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_credential_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_cache_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource_impl/mailbox_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_cache_manager.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/domain/usecases/get_all_mailbox_interactor.dart';
|
||||
@@ -21,7 +23,11 @@ class MailboxBindings extends Bindings {
|
||||
Get.lazyPut(() => DeleteCredentialInteractor(Get.find<CredentialRepository>()));
|
||||
Get.lazyPut(() => MailboxDataSourceImpl(Get.find<MailboxAPI>()));
|
||||
Get.lazyPut<MailboxDataSource>(() => Get.find<MailboxDataSourceImpl>());
|
||||
Get.lazyPut(() => MailboxRepositoryImpl(Get.find<MailboxDataSource>()));
|
||||
Get.lazyPut(() => MailboxCacheDataSourceImpl(Get.find<MailboxCacheManager>()));
|
||||
Get.lazyPut(() => MailboxRepositoryImpl({
|
||||
DataSourceType.network: Get.find<MailboxDataSource>(),
|
||||
DataSourceType.local: Get.find<MailboxCacheDataSourceImpl>(),
|
||||
}));
|
||||
Get.lazyPut<MailboxRepository>(() => Get.find<MailboxRepositoryImpl>());
|
||||
Get.lazyPut(() => GetAllMailboxInteractor(Get.find<MailboxRepository>()));
|
||||
Get.lazyPut(() => TreeBuilder());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,7 @@ import 'dart:collection';
|
||||
import 'package:collection/collection.dart';
|
||||
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/mailbox_name_extension.dart';
|
||||
import 'package:model/model.dart';
|
||||
|
||||
import 'mailbox_node.dart';
|
||||
import 'mailbox_tree.dart';
|
||||
|
||||
@@ -77,7 +77,7 @@ class MailBoxFolderTileBuilder {
|
||||
title: Padding(
|
||||
padding: EdgeInsets.only(left: 8),
|
||||
child: Text(
|
||||
_mailboxNode.item.name!.name,
|
||||
'${_mailboxNode.item.name?.name}',
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
|
||||
@@ -68,7 +68,7 @@ class MailboxTileBuilder {
|
||||
title: Padding(
|
||||
padding: EdgeInsets.only(left: 8),
|
||||
child: Text(
|
||||
_presentationMailbox.name!.name,
|
||||
'${_presentationMailbox.name?.name}',
|
||||
maxLines: 1,
|
||||
overflow:TextOverflow.ellipsis,
|
||||
style: TextStyle(
|
||||
|
||||
Reference in New Issue
Block a user