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
@@ -25,6 +25,7 @@ import 'package:tmail_ui_user/features/email/domain/state/delete_email_permanent
import 'package:tmail_ui_user/features/email/domain/state/delete_multiple_emails_permanently_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart';
import 'package:tmail_ui_user/features/email/presentation/model/composer_arguments.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_action_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart';
@@ -402,6 +403,12 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
log('MailboxController::_handleDataFromNavigationRouter():navigationRouter: $navigationRouter');
if (isHasDataFromRoute) {
if (isRedirectToMailtoURL) {
mailboxDashBoardController.goToComposer(
ComposerArguments.fromMailtoURL(navigationRouter?.emailAddress)
);
}
if (mailboxIdFromNavigationRouter != null) {
_selectMailboxFromRouter();
} else if (emailIdFromNavigationRouter != null) {
@@ -431,6 +438,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
SearchQuery? get searchQueryFromNavigationRouter => navigationRouter?.searchQuery;
bool get isRedirectToMailtoURL => navigationRouter?.routeName == AppRoutes.mailtoURL;
void _clearNavigationRouter() {
mailboxDashBoardController.navigationRouter = null;
}
@@ -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}');