45 lines
1.6 KiB
Dart
45 lines
1.6 KiB
Dart
|
|
import 'package:core/utils/app_logger.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
|
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_utils.dart';
|
|
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
|
|
|
mixin MailboxActionHandlerMixin {
|
|
|
|
void openMailboxInNewTabAction(PresentationMailbox mailbox) {
|
|
final mailboxRouteWeb = RouteUtils.generateRouteBrowser(
|
|
AppRoutes.dashboard,
|
|
NavigationRouter(mailboxId: mailbox.id)
|
|
);
|
|
log('MailboxActionHandlerMixin::openMailboxInNewTabAction(): mailboxRouteWeb: $mailboxRouteWeb');
|
|
AppUtils.launchLink(mailboxRouteWeb.toString());
|
|
}
|
|
|
|
void markAsReadMailboxAction(
|
|
BuildContext context,
|
|
PresentationMailbox presentationMailbox,
|
|
MailboxDashBoardController dashboardController,
|
|
{
|
|
Function(BuildContext)? onCallbackAction
|
|
}
|
|
) {
|
|
final accountId = dashboardController.accountId.value;
|
|
final mailboxId = presentationMailbox.id;
|
|
final mailboxName = presentationMailbox.name;
|
|
final countEmailsUnread = presentationMailbox.unreadEmails?.value.value ?? 0;
|
|
if (accountId != null && mailboxName != null) {
|
|
dashboardController.markAsReadMailbox(
|
|
accountId,
|
|
mailboxId,
|
|
mailboxName,
|
|
countEmailsUnread.toInt()
|
|
);
|
|
|
|
onCallbackAction?.call(context);
|
|
}
|
|
}
|
|
} |