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/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/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/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/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_action_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_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');
|
log('MailboxController::_handleDataFromNavigationRouter():navigationRouter: $navigationRouter');
|
||||||
|
|
||||||
if (isHasDataFromRoute) {
|
if (isHasDataFromRoute) {
|
||||||
|
if (isRedirectToMailtoURL) {
|
||||||
|
mailboxDashBoardController.goToComposer(
|
||||||
|
ComposerArguments.fromMailtoURL(navigationRouter?.emailAddress)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (mailboxIdFromNavigationRouter != null) {
|
if (mailboxIdFromNavigationRouter != null) {
|
||||||
_selectMailboxFromRouter();
|
_selectMailboxFromRouter();
|
||||||
} else if (emailIdFromNavigationRouter != null) {
|
} else if (emailIdFromNavigationRouter != null) {
|
||||||
@@ -431,6 +438,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
SearchQuery? get searchQueryFromNavigationRouter => navigationRouter?.searchQuery;
|
SearchQuery? get searchQueryFromNavigationRouter => navigationRouter?.searchQuery;
|
||||||
|
|
||||||
|
bool get isRedirectToMailtoURL => navigationRouter?.routeName == AppRoutes.mailtoURL;
|
||||||
|
|
||||||
void _clearNavigationRouter() {
|
void _clearNavigationRouter() {
|
||||||
mailboxDashBoardController.navigationRouter = null;
|
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/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/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/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/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/state/update_vacation_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_vacation_interactor.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;
|
final arguments = Get.arguments;
|
||||||
log('MailboxDashBoardController::_getSessionCurrent(): arguments = $arguments');
|
log('MailboxDashBoardController::_getSessionCurrent(): arguments = $arguments');
|
||||||
if (arguments is Session) {
|
if (arguments is Session) {
|
||||||
sessionCurrent = arguments;
|
_handleSession(arguments);
|
||||||
final personalAccount = sessionCurrent!.personalAccount;
|
} else if (arguments is MailtoArguments) {
|
||||||
accountId.value = personalAccount.accountId;
|
_handleMailtoURL(arguments);
|
||||||
_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);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
dispatchRoute(DashboardRoutes.thread);
|
dispatchRoute(DashboardRoutes.thread);
|
||||||
reload();
|
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 {
|
Future<void> _getAppVersion() async {
|
||||||
final info = await PackageInfo.fromPlatform();
|
final info = await PackageInfo.fromPlatform();
|
||||||
log('MailboxDashBoardController::_getAppVersion(): ${info.version}');
|
log('MailboxDashBoardController::_getAppVersion(): ${info.version}');
|
||||||
|
|||||||
Reference in New Issue
Block a user