TF-2134 Handle navigation route from mailto URL
(cherry picked from commit b8dc3cab162c7c34299e53ca3269a1c9b9393db0)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
+36
-20
@@ -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}');
|
||||
|
||||
Reference in New Issue
Block a user