TF-1201 Support right click to open mailbox in new tab
This commit is contained in:
@@ -71,6 +71,7 @@ import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
class MailboxController extends BaseMailboxController {
|
||||
@@ -1121,11 +1122,23 @@ class MailboxController extends BaseMailboxController {
|
||||
case MailboxActions.markAsRead:
|
||||
_markAsReadMailboxAction(context, mailbox);
|
||||
break;
|
||||
case MailboxActions.openInNewTab:
|
||||
openMailboxInNewTabAction(mailbox);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void openMailboxInNewTabAction(PresentationMailbox mailbox) {
|
||||
final mailboxRouteWeb = RouteUtils.generateRouteBrowser(
|
||||
AppRoutes.dashboard,
|
||||
NavigationRouter(mailboxId: mailbox.id)
|
||||
);
|
||||
log('MailboxController::openMailboxInNewTabAction(): mailboxRouteWeb: $mailboxRouteWeb');
|
||||
AppUtils.launchLink(mailboxRouteWeb.toString());
|
||||
}
|
||||
|
||||
void _updateSelectedMailboxRouteOnBrowser() {
|
||||
if (BuildUtils.isWeb) {
|
||||
final selectedMailboxId = selectedMailbox?.id;
|
||||
|
||||
@@ -401,6 +401,7 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
|
||||
PresentationMailbox mailbox
|
||||
) {
|
||||
final mailboxActionsSupported = [
|
||||
MailboxActions.openInNewTab,
|
||||
MailboxActions.markAsRead,
|
||||
MailboxActions.move,
|
||||
MailboxActions.rename,
|
||||
|
||||
@@ -14,6 +14,7 @@ enum MailboxActions {
|
||||
move,
|
||||
markAsRead,
|
||||
selectForRuleAction,
|
||||
openInNewTab
|
||||
}
|
||||
|
||||
extension MailboxActionsExtension on MailboxActions {
|
||||
@@ -35,6 +36,8 @@ extension MailboxActionsExtension on MailboxActions {
|
||||
|
||||
String getTitleContextMenu(BuildContext context) {
|
||||
switch(this) {
|
||||
case MailboxActions.openInNewTab:
|
||||
return AppLocalizations.of(context).openInNewTab;
|
||||
case MailboxActions.markAsRead:
|
||||
return AppLocalizations.of(context).mark_as_read;
|
||||
case MailboxActions.move:
|
||||
@@ -50,6 +53,8 @@ extension MailboxActionsExtension on MailboxActions {
|
||||
|
||||
String getContextMenuIcon(ImagePaths imagePaths) {
|
||||
switch(this) {
|
||||
case MailboxActions.openInNewTab:
|
||||
return imagePaths.icOpenInNewTab;
|
||||
case MailboxActions.markAsRead:
|
||||
return imagePaths.icRead;
|
||||
case MailboxActions.move:
|
||||
@@ -110,6 +115,8 @@ extension MailboxActionsExtension on MailboxActions {
|
||||
|
||||
ContextMenuItemState getContextMenuItemState(PresentationMailbox mailbox) {
|
||||
switch(this) {
|
||||
case MailboxActions.openInNewTab:
|
||||
return ContextMenuItemState.activated;
|
||||
case MailboxActions.markAsRead:
|
||||
return mailbox.getCountUnReadEmails().isNotEmpty
|
||||
? ContextMenuItemState.activated
|
||||
|
||||
@@ -28,7 +28,7 @@ import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_t
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
mixin EmailActionController on ViewAsDialogActionMixin {
|
||||
|
||||
@@ -283,13 +283,6 @@ mixin EmailActionController on ViewAsDialogActionMixin {
|
||||
}
|
||||
|
||||
void openEmailInNewTabAction(BuildContext context, PresentationEmail email) {
|
||||
launchLink(email.routeWebAsString);
|
||||
}
|
||||
|
||||
Future<void> launchLink(String url, {bool isNewTab = true}) async {
|
||||
await launchUrl(
|
||||
Uri.parse(url),
|
||||
webOnlyWindowName: isNewTab ? '_blank' : '_self',
|
||||
);
|
||||
AppUtils.launchLink(email.routeWebAsString);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
||||
class AppUtils {
|
||||
|
||||
@@ -12,4 +13,11 @@ class AppUtils {
|
||||
static Future<void> loadFcmConfigFile() {
|
||||
return dotenv.load(fileName: AppConfig.appFCMConfigurationPath);
|
||||
}
|
||||
|
||||
static Future<void> launchLink(String url, {bool isNewTab = true}) async {
|
||||
await launchUrl(
|
||||
Uri.parse(url),
|
||||
webOnlyWindowName: isNewTab ? '_blank' : '_self',
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user