TF-2134 Handle navigation route from mailto URL

(cherry picked from commit b8dc3cab162c7c34299e53ca3269a1c9b9393db0)
This commit is contained in:
dab246
2023-09-12 02:17:24 +07:00
committed by Dat Vu
parent b645c6ae1a
commit 623102d96f
2 changed files with 45 additions and 20 deletions
@@ -76,6 +76,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/down
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/refresh_action_view_event.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
import 'package:tmail_ui_user/features/mailto/presentation/model/mailto_arguments.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/update_vacation_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.dart';
@@ -422,26 +423,9 @@ class MailboxDashBoardController extends ReloadableController {
final arguments = Get.arguments;
log('MailboxDashBoardController::_getSessionCurrent(): arguments = $arguments');
if (arguments is Session) {
sessionCurrent = arguments;
final personalAccount = sessionCurrent!.personalAccount;
accountId.value = personalAccount.accountId;
_getUserProfile();
updateAuthenticationAccount(sessionCurrent!, accountId.value!, sessionCurrent!.username);
injectAutoCompleteBindings(sessionCurrent, accountId.value);
injectRuleFilterBindings(sessionCurrent, accountId.value);
injectVacationBindings(sessionCurrent, accountId.value);
injectFCMBindings(sessionCurrent, accountId.value);
_getVacationResponse();
spamReportController.getSpamReportStateAction();
if (PlatformInfo.isMobile) {
getAllSendingEmails();
_storeSessionAction(sessionCurrent!);
}
if (PlatformInfo.isMobile && !_notificationManager.isNotificationClickedOnTerminate) {
_handleClickLocalNotificationOnTerminated();
} else {
dispatchRoute(DashboardRoutes.thread);
}
_handleSession(arguments);
} else if (arguments is MailtoArguments) {
_handleMailtoURL(arguments);
} else {
dispatchRoute(DashboardRoutes.thread);
reload();
@@ -470,6 +454,38 @@ class MailboxDashBoardController extends ReloadableController {
}
}
void _handleSession(Session session) {
sessionCurrent = session;
final personalAccount = sessionCurrent!.personalAccount;
accountId.value = personalAccount.accountId;
_getUserProfile();
updateAuthenticationAccount(
sessionCurrent!,
accountId.value!,
sessionCurrent!.username
);
injectAutoCompleteBindings(sessionCurrent, accountId.value);
injectRuleFilterBindings(sessionCurrent, accountId.value);
injectVacationBindings(sessionCurrent, accountId.value);
injectFCMBindings(sessionCurrent, accountId.value);
_getVacationResponse();
spamReportController.getSpamReportStateAction();
if (PlatformInfo.isMobile) {
getAllSendingEmails();
_storeSessionAction(sessionCurrent!);
}
if (PlatformInfo.isMobile && !_notificationManager.isNotificationClickedOnTerminate) {
_handleClickLocalNotificationOnTerminated();
} else {
dispatchRoute(DashboardRoutes.thread);
}
}
void _handleMailtoURL(MailtoArguments arguments) {
routerParameters.value = arguments.toMapRouter();
_handleSession(arguments.session);
}
Future<void> _getAppVersion() async {
final info = await PackageInfo.fromPlatform();
log('MailboxDashBoardController::_getAppVersion(): ${info.version}');