TF-996: add email_parent_controller.dart

This commit is contained in:
ManhNTX
2022-10-31 23:41:32 +07:00
committed by Dat H. Pham
parent b652f17acc
commit e264880f9d
4 changed files with 105 additions and 70 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,71 @@
import 'dart:collection';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.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/core/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
class EmailParentController extends BaseController with AppLoaderMixin {
final mailboxDashBoardController = Get.find<MailboxDashBoardController>();
final Queue<EmailLoaded> presentationEmailsLoaded = Queue();
PageController? pageController;
int currentIndexPageView = -1;
final canGetNewerEmail = true.obs;
final canGetOlderEmail = true.obs;
Rxn<PresentationEmail> get selectedEmail => mailboxDashBoardController.selectedEmail;
Session? get sessionCurrent => mailboxDashBoardController.sessionCurrent;
AccountId? get accountId => mailboxDashBoardController.accountId.value;
RxList<PresentationEmail> get listEmail => mailboxDashBoardController.searchController.isSearchEmailRunning && !kIsWeb ?
mailboxDashBoardController.listResultSearch : mailboxDashBoardController.emailsInCurrentMailbox;
@override
void onClose() {
pageController?.dispose();
super.onClose();
}
void setCurrentPositionEmailInListEmail(EmailId? currentEmailId) {
currentIndexPageView = listEmail.indexWhere((e) => e.id == currentEmailId);
if(pageController != null && pageController!.hasClients && pageController!.page?.toInt() != currentIndexPageView) {
pageController!.jumpToPage(currentIndexPageView);
} else {
pageController = PageController(initialPage: currentIndexPageView);
}
_checkEnableNavigatorPageView();
}
void onPageChanged(int index) {
mailboxDashBoardController.selectedEmail.value = listEmail[index];
}
void _checkEnableNavigatorPageView() {
canGetNewerEmail.value = currentIndexPageView > 0;
canGetOlderEmail.value = listEmail.length > 1 && currentIndexPageView < listEmail.length - 1;
}
void getNewerEmail() {
currentIndexPageView = currentIndexPageView - 1;
pageController?.jumpToPage(currentIndexPageView);
}
void getOlderEmail() {
currentIndexPageView = currentIndexPageView + 1;
pageController?.jumpToPage(currentIndexPageView);
}
@override
void onDone() {
}
}