TF-2311 Sync use variables in BaseController to avoid wasting memory

Signed-off-by: dab246 <tdvu@linagora.com>

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 21ac80615f7bc9e832fd72cb8ae6875c967d3cea)
This commit is contained in:
dab246
2023-11-14 17:33:17 +07:00
committed by Dat Vu
parent 4ff601b4fc
commit fb47832225
57 changed files with 727 additions and 958 deletions
@@ -1,4 +1,3 @@
import 'package:core/presentation/utils/app_toast.dart';
import 'package:core/presentation/utils/keyboard_utils.dart';
import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
@@ -40,7 +39,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/profiles/iden
import 'package:tmail_ui_user/main/error/capability_validator.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:uuid/uuid.dart';
class IdentityCreatorController extends BaseController {
@@ -48,9 +46,6 @@ class IdentityCreatorController extends BaseController {
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
final IdentityUtils _identityUtils;
final _uuid = Get.find<Uuid>();
final _appToast = Get.find<AppToast>();
final noneEmailAddress = EmailAddress(null, 'None');
final listEmailAddressDefault = <EmailAddress>[].obs;
final listEmailAddressOfReplyTo = <EmailAddress>[].obs;
@@ -343,7 +338,7 @@ class IdentityCreatorController extends BaseController {
htmlSignature: Signature(signatureHtmlText ?? ''),
sortOrder: sortOrder);
final generateCreateId = Id(_uuid.v1());
final generateCreateId = Id(uuid.v1());
if (actionType.value == IdentityActionType.create) {
final identityRequest = CreateNewIdentityRequest(
@@ -486,7 +481,7 @@ class IdentityCreatorController extends BaseController {
final platformFile = filePickerResult!.files.first;
_insertInlineImage(context, platformFile, maxWidth: maxWidth);
} else {
_appToast.showToastErrorMessage(
appToast.showToastErrorMessage(
context,
AppLocalizations.of(context).cannotSelectThisImage
);
@@ -505,7 +500,7 @@ class IdentityCreatorController extends BaseController {
{int? maxWidth}
) {
if (_isExceedMaxSizeInlineImage(platformFile.size)) {
_appToast.showToastErrorMessage(
appToast.showToastErrorMessage(
context,
AppLocalizations.of(context).pleaseChooseAnImageSizeCorrectly(
IdentityCreatorConstants.maxKBSizeIdentityInlineImage
@@ -2,9 +2,7 @@ import 'dart:math' as math;
import 'package:core/presentation/extensions/capitalize_extension.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/html_transformer/html_utils.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/responsive/responsive_widget.dart';
@@ -33,9 +31,6 @@ import 'package:tmail_ui_user/main/utils/app_utils.dart';
class IdentityCreatorView extends GetWidget<IdentityCreatorController>
with RichTextButtonMixin {
final _imagePaths = Get.find<ImagePaths>();
final _responsiveUtils = Get.find<ResponsiveUtils>();
@override
final controller = Get.find<IdentityCreatorController>();
@@ -44,7 +39,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
@override
Widget build(BuildContext context) {
final responsiveWidget = ResponsiveWidget(
responsiveUtils: _responsiveUtils,
responsiveUtils: controller.responsiveUtils,
mobile: Scaffold(
backgroundColor: Colors.black38,
body: GestureDetector(
@@ -103,8 +98,8 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(16))
),
width: math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 700),
height: _responsiveUtils.getSizeScreenHeight(context) * 0.8,
width: math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 700),
height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.8,
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(16)),
child: _buildBodyView(context)
@@ -129,8 +124,8 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(16))
),
width: math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 800),
height: _responsiveUtils.getSizeScreenHeight(context) * 0.8,
width: math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 800),
height: controller.responsiveUtils.getSizeScreenHeight(context) * 0.8,
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(16)),
child: _buildBodyView(context)
@@ -150,7 +145,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
backgroundKeyboardToolBarColor: PlatformInfo.isIOS
? AppColor.colorBackgroundKeyboard
: AppColor.colorBackgroundKeyboardAndroid,
isLandScapeMode: _responsiveUtils.isLandscapeMobile(context),
isLandScapeMode: controller.responsiveUtils.isLandscapeMobile(context),
richTextController: controller.keyboardRichTextController,
titleQuickStyleBottomSheet: AppLocalizations.of(context).titleQuickStyles,
titleBackgroundBottomSheet: AppLocalizations.of(context).titleBackground,
@@ -185,7 +180,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
Obx(() {
if (controller.actionType.value == IdentityActionType.create) {
return IdentityDropListFieldBuilder(
_imagePaths,
controller.imagePaths,
AppLocalizations.of(context).email.inCaps,
controller.emailOfIdentity.value,
controller.listEmailAddressDefault,
@@ -198,7 +193,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
}),
const SizedBox(height: 24),
Obx(() => IdentityDropListFieldBuilder(
_imagePaths,
controller.imagePaths,
AppLocalizations.of(context).reply_to,
controller.replyToOfIdentity.value,
controller.listEmailAddressOfReplyTo,
@@ -291,7 +286,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
buildIconWeb(
iconSize: 24,
icon: SvgPicture.asset(
_imagePaths.icComposerClose,
controller.imagePaths.icComposerClose,
fit: BoxFit.fill,
colorFilter: AppColor.colorDeleteContactIcon.asFilter()
),
@@ -317,7 +312,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
padding: const EdgeInsetsDirectional.only(end: 4.0),
child: buildWrapIconStyleText(
icon: buildIconWithTooltip(
path: _imagePaths.icAddPicture,
path: controller.imagePaths.icAddPicture,
tooltip: AppLocalizations.of(context).insertImage
),
hasDropdown: false,
@@ -405,7 +400,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
return Obx(() {
if (controller.isDefaultIdentitySupported.isTrue) {
return SetDefaultIdentityCheckboxBuilder(
imagePaths: _imagePaths,
imagePaths: controller.imagePaths,
isCheck: controller.isDefaultIdentity.value,
onCheckboxChanged: controller.onCheckboxChanged);
} else {
@@ -460,16 +455,16 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
}
bool _isMobile(BuildContext context) =>
_responsiveUtils.isPortraitMobile(context) ||
_responsiveUtils.isLandscapeMobile(context);
controller.responsiveUtils.isPortraitMobile(context) ||
controller.responsiveUtils.isLandscapeMobile(context);
double _getMaxWidth(BuildContext context) {
if (_isMobile(context)) {
return _responsiveUtils.getSizeScreenWidth(context);
} else if (_responsiveUtils.isDesktop(context)) {
return math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 800);
return controller.responsiveUtils.getSizeScreenWidth(context);
} else if (controller.responsiveUtils.isDesktop(context)) {
return math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 800);
} else {
return math.max(_responsiveUtils.getSizeScreenWidth(context) * 0.4, 700);
return math.max(controller.responsiveUtils.getSizeScreenWidth(context) * 0.4, 700);
}
}
}