TF-1118 Clear input data when back to setting menu
This commit is contained in:
@@ -22,6 +22,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/usecases/add_recipi
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_forward_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/action/dashboard_setting_action.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/tmail_forward_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/forward/controller/forward_recipient_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart';
|
||||
@@ -47,6 +48,7 @@ class ForwardController extends BaseController {
|
||||
bool get currentForwardLocalCopyState => currentForward.value?.localCopy ?? false;
|
||||
|
||||
late ForwardRecipientController recipientController;
|
||||
late Worker dashboardActionWorker;
|
||||
|
||||
ForwardController() {
|
||||
recipientController = ForwardRecipientController(
|
||||
@@ -57,6 +59,7 @@ class ForwardController extends BaseController {
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
registerListenerWorker();
|
||||
try {
|
||||
_getForwardInteractor = Get.find<GetForwardInteractor>();
|
||||
_deleteRecipientInForwardingInteractor = Get.find<DeleteRecipientInForwardingInteractor>();
|
||||
@@ -70,6 +73,7 @@ class ForwardController extends BaseController {
|
||||
@override
|
||||
void onClose() {
|
||||
recipientController.onClose();
|
||||
unregisterListenerWorker();
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
@@ -176,7 +180,6 @@ class ForwardController extends BaseController {
|
||||
}
|
||||
|
||||
final matchedRecipientForward = listRecipientForward.indexOf(recipientForward);
|
||||
log('ForwardController::selectRecipientForward(): matchedRecipientForward: $matchedRecipientForward');
|
||||
if (matchedRecipientForward >= 0) {
|
||||
final newRecipientForward = recipientForward.toggleSelection();
|
||||
listRecipientForward[matchedRecipientForward] = newRecipientForward;
|
||||
@@ -231,7 +234,6 @@ class ForwardController extends BaseController {
|
||||
}
|
||||
|
||||
void addRecipientAction(BuildContext context, List<EmailAddress> listRecipientsSelected) {
|
||||
log('ForwardController::addRecipientAction():listRecipientsSelected: $listRecipientsSelected');
|
||||
FocusScope.of(context).unfocus();
|
||||
|
||||
final accountId = accountDashBoardController.accountId.value;
|
||||
@@ -293,4 +295,20 @@ class ForwardController extends BaseController {
|
||||
currentForward.value = success.forward;
|
||||
listRecipientForward.value = currentForward.value!.listRecipientForward;
|
||||
}
|
||||
|
||||
void registerListenerWorker() {
|
||||
dashboardActionWorker = ever(
|
||||
accountDashBoardController.dashboardSettingAction,
|
||||
(action) {
|
||||
if (action is ClearAllInputForwarding) {
|
||||
cancelSelectionMode();
|
||||
recipientController.clearAll();
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void unregisterListenerWorker() {
|
||||
dashboardActionWorker.dispose();
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
||||
height: double.infinity,
|
||||
color: SettingsUtils.getContentBackgroundColor(context, _responsiveUtils),
|
||||
decoration: SettingsUtils.getBoxDecorationForContent(context, _responsiveUtils),
|
||||
margin: SettingsUtils.getMarginViewForSettingDetails(context, _responsiveUtils),
|
||||
margin: SettingsUtils.getMarginViewForForwardSettingDetails(context, _responsiveUtils),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
@@ -45,15 +45,12 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
if (!_responsiveUtils.isWebDesktop(context))
|
||||
_buildTitleHeader(context),
|
||||
_buildKeepLocalSwitchButton(context),
|
||||
_buildAddRecipientsFormWidget(context),
|
||||
_buildLoadingView(),
|
||||
Obx(() {
|
||||
if (controller.currentForward.value != null) {
|
||||
return Column(children: [
|
||||
_buildKeepLocalSwitchButton(context),
|
||||
_buildAddRecipientsFormWidget(context),
|
||||
if (controller.listRecipientForward.isNotEmpty)
|
||||
ListEmailForwardsWidget()
|
||||
]);
|
||||
if (controller.listRecipientForward.isNotEmpty) {
|
||||
return ListEmailForwardsWidget();
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
@@ -68,9 +65,8 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
||||
|
||||
Widget _buildTitleHeader(BuildContext context) {
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
color: Colors.transparent,
|
||||
width: double.infinity,
|
||||
margin: SettingsUtils.getMarginTitleHeaderForwarding(context, _responsiveUtils),
|
||||
padding: SettingsUtils.getPaddingTitleHeaderForwarding(context, _responsiveUtils),
|
||||
child: Text(
|
||||
AppLocalizations.of(context).forwardingSettingExplanation,
|
||||
@@ -86,7 +82,7 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
||||
Widget _buildKeepLocalSwitchButton(BuildContext context) {
|
||||
return Container(
|
||||
color: Colors.transparent,
|
||||
padding: const EdgeInsets.only(left: 24, top: 24, right: 24, bottom: 11),
|
||||
padding: SettingsUtils.getPaddingKeepLocalSwitchButtonForwarding(context, _responsiveUtils),
|
||||
child: Row(children: [
|
||||
Obx(() {
|
||||
return InkWell(
|
||||
|
||||
+11
-6
@@ -4,6 +4,7 @@ import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/style_utils.dart';
|
||||
import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||
import 'package:core/presentation/views/image/avatar_builder.dart';
|
||||
import 'package:core/utils/build_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -37,17 +38,21 @@ class EmailForwardItemWidget extends StatelessWidget {
|
||||
child: Material(
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
onTap: () {},
|
||||
onLongPress: () {
|
||||
if (!BuildUtils.isWeb) {
|
||||
onSelectRecipientCallback?.call(recipientForward);
|
||||
}
|
||||
},
|
||||
customBorder: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(12))),
|
||||
child: Container(
|
||||
padding: const EdgeInsets.all(12),
|
||||
padding: const EdgeInsets.only(left: 12, bottom: 12, top: 12),
|
||||
decoration: BoxDecoration(
|
||||
color: _getBackgroundColor(),
|
||||
borderRadius: BorderRadius.all(Radius.circular(
|
||||
recipientForward.selectMode == SelectMode.ACTIVE ? 12 : 0))
|
||||
),
|
||||
child: Row(crossAxisAlignment: CrossAxisAlignment.center, children: [
|
||||
child: Row(children: [
|
||||
_buildAvatarIcon(_imagePaths),
|
||||
const SizedBox(width: 12),
|
||||
Expanded(child: Column(
|
||||
@@ -85,11 +90,11 @@ class EmailForwardItemWidget extends StatelessWidget {
|
||||
const SizedBox(width: 12),
|
||||
if (selectionMode == SelectMode.INACTIVE)
|
||||
buildIconWeb(
|
||||
iconSize: 34,
|
||||
splashRadius: 25,
|
||||
iconSize: 30,
|
||||
splashRadius: 20,
|
||||
icon: SvgPicture.asset(_imagePaths.icDeleteRecipient),
|
||||
onTap: () => onDeleteRecipientCallback?.call(recipientForward)
|
||||
),
|
||||
)
|
||||
]),
|
||||
),
|
||||
),
|
||||
|
||||
+24
-18
@@ -23,29 +23,35 @@ class ListEmailForwardsWidget extends GetWidget<ForwardController> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
margin: SettingsUtils.getPaddingListRecipientForwarding(context, _responsiveUtils),
|
||||
color: Colors.transparent,
|
||||
padding: SettingsUtils.getPaddingListRecipientForwarding(context, _responsiveUtils),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
_buildTitleHeader(context),
|
||||
Obx(() {
|
||||
return ListView.builder(
|
||||
shrinkWrap: true,
|
||||
primary: false,
|
||||
itemCount: controller.listRecipientForward.length,
|
||||
itemBuilder: (context, index) {
|
||||
return EmailForwardItemWidget(
|
||||
controller.listRecipientForward[index],
|
||||
selectionMode: controller.selectionMode.value,
|
||||
onSelectRecipientCallback: controller.selectRecipientForward,
|
||||
onDeleteRecipientCallback: (recipientForward) {
|
||||
controller.deleteRecipients(context, recipientForward.emailAddress.emailAddress);
|
||||
},
|
||||
);
|
||||
}
|
||||
);
|
||||
if (controller.listRecipientForward.isEmpty) {
|
||||
return const SizedBox.shrink();
|
||||
} else {
|
||||
return ListView.builder(
|
||||
shrinkWrap: true,
|
||||
primary: false,
|
||||
itemCount: controller.listRecipientForward.length,
|
||||
padding: EdgeInsets.zero,
|
||||
itemExtent: 75,
|
||||
itemBuilder: (context, index) {
|
||||
return EmailForwardItemWidget(
|
||||
controller.listRecipientForward[index],
|
||||
selectionMode: controller.selectionMode.value,
|
||||
onSelectRecipientCallback: controller.selectRecipientForward,
|
||||
onDeleteRecipientCallback: (recipientForward) {
|
||||
controller.deleteRecipients(context, recipientForward.emailAddress.emailAddress);
|
||||
},
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}),
|
||||
]
|
||||
),
|
||||
@@ -127,7 +133,7 @@ class ListEmailForwardsWidget extends GetWidget<ForwardController> {
|
||||
child: InkWell(
|
||||
customBorder: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(5))),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12),
|
||||
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 6),
|
||||
child: Text(
|
||||
AppLocalizations.of(context).remove,
|
||||
style: const TextStyle(
|
||||
|
||||
Reference in New Issue
Block a user