TF-2179 Update AppBarThread widget

(cherry picked from commit 66997fbd64b32453d022d55d4f1ef2895854aa79)
This commit is contained in:
dab246
2023-09-29 11:47:58 +07:00
committed by Dat H. Pham
parent aa02516451
commit 5712d9cff1
4 changed files with 175 additions and 442 deletions
@@ -0,0 +1,76 @@
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:model/mailbox/select_mode.dart';
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/mobile_app_bar_thread_widget.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/web_app_bar_thread_widget.dart';
typedef OnPopupMenuFilterEmailAction = void Function(FilterMessageOption, RelativeRect);
typedef OnContextMenuFilterEmailAction = void Function(FilterMessageOption);
typedef OnEditThreadAction = void Function();
typedef OnOpenMailboxMenuActionClick = void Function();
typedef OnCancelEditThreadAction = void Function();
typedef OnEmailSelectionAction = void Function(EmailActionType, List<PresentationEmail>);
class AppBarThreadWidget extends StatelessWidget {
final OnPopupMenuFilterEmailAction? onPopupMenuFilterEmailAction;
final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction;
final OnOpenMailboxMenuActionClick openMailboxAction;
final OnEditThreadAction editThreadAction;
final OnCancelEditThreadAction cancelEditThreadAction;
final OnEmailSelectionAction emailSelectionAction;
final PresentationMailbox? mailboxSelected;
final List<PresentationEmail> listEmailSelected;
final SelectMode selectMode;
final FilterMessageOption filterOption;
const AppBarThreadWidget({
Key? key,
required this.mailboxSelected,
required this.listEmailSelected,
required this.selectMode,
required this.filterOption,
required this.openMailboxAction,
required this.editThreadAction,
required this.cancelEditThreadAction,
required this.emailSelectionAction,
this.onPopupMenuFilterEmailAction,
this.onContextMenuFilterEmailAction,
}) : super(key: key);
@override
Widget build(BuildContext context) {
if (PlatformInfo.isWeb) {
return WebAppBarThreadWidget(
key: const Key('web_app_bar_thread_widget'),
listEmailSelected: listEmailSelected,
mailboxSelected: mailboxSelected,
selectMode: selectMode,
filterOption: filterOption,
openMailboxAction: openMailboxAction,
editThreadAction: editThreadAction,
cancelEditThreadAction: cancelEditThreadAction,
emailSelectionAction: emailSelectionAction,
onPopupMenuFilterEmailAction: onPopupMenuFilterEmailAction,
onContextMenuFilterEmailAction: onContextMenuFilterEmailAction,
);
} else {
return MobileAppBarThreadWidget(
key: const Key('mobile_app_bar_thread_widget'),
listEmailSelected: listEmailSelected,
mailboxSelected: mailboxSelected,
selectMode: selectMode,
filterOption: filterOption,
openMailboxAction: openMailboxAction,
editThreadAction: editThreadAction,
cancelEditThreadAction: cancelEditThreadAction,
onPopupMenuFilterEmailAction: onPopupMenuFilterEmailAction,
onContextMenuFilterEmailAction: onContextMenuFilterEmailAction,
);
}
}
}
@@ -0,0 +1,63 @@
import 'package:flutter/cupertino.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:model/mailbox/select_mode.dart';
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/app_bar_thread_widget.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/default_web_app_bar_thread_widget.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/selection_web_app_bar_thread_widget.dart';
class WebAppBarThreadWidget extends StatelessWidget {
final PresentationMailbox? mailboxSelected;
final List<PresentationEmail> listEmailSelected;
final SelectMode selectMode;
final FilterMessageOption filterOption;
final OnOpenMailboxMenuActionClick openMailboxAction;
final OnEditThreadAction editThreadAction;
final OnCancelEditThreadAction cancelEditThreadAction;
final OnEmailSelectionAction emailSelectionAction;
final OnPopupMenuFilterEmailAction? onPopupMenuFilterEmailAction;
final OnContextMenuFilterEmailAction? onContextMenuFilterEmailAction;
const WebAppBarThreadWidget({
super.key,
required this.listEmailSelected,
required this.mailboxSelected,
required this.selectMode,
required this.filterOption,
required this.openMailboxAction,
required this.editThreadAction,
required this.cancelEditThreadAction,
required this.emailSelectionAction,
this.onPopupMenuFilterEmailAction,
this.onContextMenuFilterEmailAction,
});
@override
Widget build(BuildContext context) {
if (selectMode == SelectMode.INACTIVE) {
return DefaultWebAppBarThreadWidget(
key: const Key('default_web_app_bar_thread_widget'),
mailboxSelected: mailboxSelected,
filterOption: filterOption,
openMailboxAction: openMailboxAction,
onPopupMenuFilterEmailAction: onPopupMenuFilterEmailAction,
onContextMenuFilterEmailAction: onContextMenuFilterEmailAction,
);
} else {
return SelectionWebAppBarThreadWidget(
key: const Key('selection_web_app_bar_thread_widget'),
listEmailSelected: listEmailSelected,
mailboxSelected: mailboxSelected,
filterOption: filterOption,
openMailboxAction: openMailboxAction,
cancelEditThreadAction: cancelEditThreadAction,
emailSelectionAction: emailSelectionAction,
onPopupMenuFilterEmailAction: onPopupMenuFilterEmailAction,
onContextMenuFilterEmailAction: onContextMenuFilterEmailAction,
);
}
}
}