TF-3766 Fix Mark as important, Request read receipt not selected after touch in composer
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -56,3 +56,14 @@ abstract class PopupMenuItemActionRequiredFull<T> extends PopupMenuItemAction<T>
|
||||
|
||||
PopupMenuItemActionRequiredFull(super.action, this.selectedAction);
|
||||
}
|
||||
|
||||
abstract class PopupMenuItemActionRequiredIconWithMultipleSelected<T>
|
||||
extends PopupMenuItemAction<T>
|
||||
with OptionalPopupIcon, OptionalPopupSelectedIcon<T> {
|
||||
final List<T> selectedActions;
|
||||
|
||||
PopupMenuItemActionRequiredIconWithMultipleSelected(
|
||||
super.action,
|
||||
this.selectedActions,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,8 @@ class PopupMenuItemActionWidget extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
} else if (menuAction is PopupMenuItemActionRequiredSelectedIcon) {
|
||||
final specificMenuAction = menuAction as PopupMenuItemActionRequiredSelectedIcon;
|
||||
final specificMenuAction =
|
||||
menuAction as PopupMenuItemActionRequiredSelectedIcon;
|
||||
selectedIconWidget = Padding(
|
||||
padding: const EdgeInsetsDirectional.only(start: 16),
|
||||
child: SvgPicture.asset(
|
||||
@@ -69,6 +70,32 @@ class PopupMenuItemActionWidget extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
isSelected = specificMenuAction.selectedAction == menuAction.action;
|
||||
} else if (menuAction
|
||||
is PopupMenuItemActionRequiredIconWithMultipleSelected) {
|
||||
final specificMenuAction =
|
||||
menuAction as PopupMenuItemActionRequiredIconWithMultipleSelected;
|
||||
iconWidget = Padding(
|
||||
padding: const EdgeInsetsDirectional.only(end: 16),
|
||||
child: SvgPicture.asset(
|
||||
specificMenuAction.actionIcon,
|
||||
width: specificMenuAction.actionIconSize,
|
||||
height: specificMenuAction.actionIconSize,
|
||||
colorFilter: specificMenuAction.actionIconColor.asFilter(),
|
||||
fit: BoxFit.fill,
|
||||
),
|
||||
);
|
||||
selectedIconWidget = Padding(
|
||||
padding: const EdgeInsetsDirectional.only(start: 16),
|
||||
child: SvgPicture.asset(
|
||||
specificMenuAction.selectedIcon,
|
||||
width: specificMenuAction.selectedIconSize,
|
||||
height: specificMenuAction.selectedIconSize,
|
||||
colorFilter: specificMenuAction.selectedIconColor.asFilter(),
|
||||
fit: BoxFit.fill,
|
||||
),
|
||||
);
|
||||
isSelected =
|
||||
specificMenuAction.selectedActions.contains(menuAction.action);
|
||||
}
|
||||
|
||||
return PointerInterceptor(
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/popup_menu/popup_menu_item_action_widget.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/mark_as_important_extension.dart';
|
||||
@@ -9,6 +10,13 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
extension HandleOpenContextMenuExtension on ComposerController {
|
||||
void handleOpenContextMenu(BuildContext context, RelativeRect position) {
|
||||
final listSelectedComposerActionType = [
|
||||
if (isMarkAsImportant.isTrue)
|
||||
ComposerActionType.markAsImportant,
|
||||
if (hasRequestReadReceipt.isTrue)
|
||||
ComposerActionType.requestReadReceipt,
|
||||
];
|
||||
|
||||
final popupMenuItems = ComposerActionType.values.map((actionType) {
|
||||
return PopupMenuItem(
|
||||
padding: EdgeInsets.zero,
|
||||
@@ -16,6 +24,7 @@ extension HandleOpenContextMenuExtension on ComposerController {
|
||||
key: actionType.getContextMenuItemKey(),
|
||||
menuAction: PopupMenuItemComposerTypeAction(
|
||||
actionType,
|
||||
listSelectedComposerActionType,
|
||||
AppLocalizations.of(context),
|
||||
imagePaths,
|
||||
),
|
||||
|
||||
@@ -5,12 +5,14 @@ import 'package:tmail_ui_user/features/composer/presentation/model/composer_acti
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class PopupMenuItemComposerTypeAction
|
||||
extends PopupMenuItemActionRequiredIcon<ComposerActionType> {
|
||||
extends PopupMenuItemActionRequiredIconWithMultipleSelected<
|
||||
ComposerActionType> {
|
||||
final AppLocalizations appLocalizations;
|
||||
final ImagePaths imagePaths;
|
||||
|
||||
PopupMenuItemComposerTypeAction(
|
||||
super.action,
|
||||
super.selectedActions,
|
||||
this.appLocalizations,
|
||||
this.imagePaths,
|
||||
);
|
||||
@@ -26,4 +28,7 @@ class PopupMenuItemComposerTypeAction
|
||||
|
||||
@override
|
||||
Color get actionNameColor => action.getContextMenuTitleColor();
|
||||
|
||||
@override
|
||||
String get selectedIcon => imagePaths.icFilterSelected;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user