TF-1487 Upgrade latest dependencies version

(cherry picked from commit 2ba54a168494f772174b196e3a7b5e4173abcdd9)
This commit is contained in:
dab246
2023-02-23 22:15:30 +07:00
committed by Dat Vu
parent 44cc33ddaf
commit bbcaaa549d
14 changed files with 1180 additions and 951 deletions
@@ -1,6 +1,5 @@
import 'package:core/core.dart';
import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:enough_html_editor/enough_html_editor.dart';
import 'package:file_picker/file_picker.dart';
import 'package:filesize/filesize.dart';
import 'package:flutter/foundation.dart';
@@ -9,7 +8,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart';
import 'package:model/model.dart';
import 'package:rich_text_composer/rich_text_composer.dart' as rich_text_composer;
import 'package:rich_text_composer/rich_text_composer.dart';
import 'package:rich_text_composer/views/widgets/rich_text_keyboard_toolbar.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
@@ -84,7 +83,7 @@ class ComposerView extends GetWidget<ComposerController>
child: Scaffold(
backgroundColor: Colors.black38,
body: LayoutBuilder(builder: (context, constraints) {
return rich_text_composer.KeyboardRichText(
return KeyboardRichText(
richTextController: controller.keyboardRichTextController,
keyBroadToolbar: RichTextKeyboardToolBar(
backgroundKeyboardToolBarColor: AppColor.colorBackgroundKeyboard,
@@ -313,7 +312,7 @@ class ComposerView extends GetWidget<ComposerController>
)).toList(),
onChanged: (newIdentity) => controller.selectIdentity(newIdentity),
itemPadding: const EdgeInsets.symmetric(horizontal: 8),
customItemsHeight: 55,
itemHeight: 55,
dropdownMaxHeight: 240,
dropdownWidth: 300,
dropdownDecoration: BoxDecoration(
@@ -435,27 +434,7 @@ class ComposerView extends GetWidget<ComposerController>
}
Widget _buildBodyMobile(BuildContext context, double maxWidth) {
return rich_text_composer.KeyboardRichText(
child: SingleChildScrollView(
controller: controller.scrollController,
physics: const ClampingScrollPhysics(),
child: Column(children: [
Obx(() => controller.identitySelected.value != null
? _buildFromEmailAddress(context)
: const SizedBox.shrink()),
Obx(() => controller.identitySelected.value != null
? const Divider(color: AppColor.colorDividerComposer, height: 1)
: const SizedBox.shrink()),
_buildEmailAddress(context),
const Divider(color: AppColor.colorDividerComposer, height: 1),
Padding(padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: _buildSubjectEmail(context)),
const Divider(color: AppColor.colorDividerComposer, height: 1),
_buildAttachmentsWidget(context),
buildInlineLoadingView(controller),
_buildComposerEditor(context),
])
),
richTextController: controller.keyboardRichTextController,
return KeyboardRichText(
keyBroadToolbar: RichTextKeyboardToolBar(
backgroundKeyboardToolBarColor: AppColor.colorBackgroundKeyboard,
isLandScapeMode: responsiveUtils.isLandscapeMobile(context),
@@ -468,6 +447,28 @@ class ComposerView extends GetWidget<ComposerController>
titleFormatBottomSheet: AppLocalizations.of(context).titleFormat,
titleBack: AppLocalizations.of(context).format,
),
richTextController: controller.keyboardRichTextController,
child: SingleChildScrollView(
controller: controller.scrollController,
physics: const ClampingScrollPhysics(),
child: Column(children: [
Obx(() => controller.identitySelected.value != null
? _buildFromEmailAddress(context)
: const SizedBox.shrink()),
Obx(() => controller.identitySelected.value != null
? const Divider(color: AppColor.colorDividerComposer, height: 1)
: const SizedBox.shrink()),
_buildEmailAddress(context),
const Divider(color: AppColor.colorDividerComposer, height: 1),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
child: _buildSubjectEmail(context)),
const Divider(color: AppColor.colorDividerComposer, height: 1),
_buildAttachmentsWidget(context),
buildInlineLoadingView(controller),
_buildComposerEditor(context),
])
),
);
}
@@ -435,7 +435,7 @@ class ComposerView extends GetWidget<ComposerController>
)).toList(),
onChanged: (newIdentity) => controller.selectIdentity(newIdentity),
itemPadding: const EdgeInsets.symmetric(horizontal: 8),
customItemsHeight: 55,
itemHeight: 55,
dropdownMaxHeight: 240,
dropdownWidth: 370,
dropdownDecoration: BoxDecoration(
@@ -582,7 +582,7 @@ class ComposerView extends GetWidget<ComposerController>
icon: SvgPicture.asset(imagePaths.icAttachmentsComposer,
width: 24,
height: 24,
color: AppColor.colorTextButton,
colorFilter: const ColorFilter.mode(AppColor.colorTextButton, BlendMode.srcIn),
fit: BoxFit.fill),
tooltip: AppLocalizations.of(context).attach_file,
onTap: () => controller.openFilePickerByType(context, FileType.any)),
@@ -594,8 +594,11 @@ class ComposerView extends GetWidget<ComposerController>
child: buildIconWeb(
minSize: 40,
iconPadding: EdgeInsets.zero,
icon: SvgPicture.asset(imagePaths.icInsertImage,
color: AppColor.colorTextButton.withOpacity(opacity),
icon: SvgPicture.asset(
imagePaths.icInsertImage,
colorFilter: ColorFilter.mode(
AppColor.colorTextButton.withOpacity(opacity),
BlendMode.srcIn),
fit: BoxFit.fill),
tooltip: AppLocalizations.of(context).insertImage,
onTap: () => controller.insertImage(context, constraints.maxWidth)),
@@ -609,9 +612,10 @@ class ComposerView extends GetWidget<ComposerController>
? AppColor.colorSelectedRichTextButton
: Colors.transparent,
iconPadding: EdgeInsets.zero,
icon: SvgPicture.asset(imagePaths.icStyleCodeView,
color: AppColor.colorTextButton,
fit: BoxFit.fill),
icon: SvgPicture.asset(
imagePaths.icStyleCodeView,
colorFilter: const ColorFilter.mode(AppColor.colorTextButton, BlendMode.srcIn),
fit: BoxFit.fill),
tooltip: AppLocalizations.of(context).codeView,
onTap: () => controller.richTextWebController.toggleCodeView());
}),
@@ -21,7 +21,7 @@ import 'package:model/model.dart';
import 'package:better_open_file/better_open_file.dart' as open_file;
import 'package:permission_handler/permission_handler.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:share/share.dart' as share_library;
import 'package:share_plus/share_plus.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
@@ -445,7 +445,9 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
_downloadAttachmentsAction(attachments);
break;
case PermissionStatus.permanentlyDenied:
_appToast.showToast(AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments);
if (context.mounted) {
_appToast.showToast(AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments);
}
break;
default: {
final requested = await Permission.storage.request();
@@ -454,7 +456,9 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
_downloadAttachmentsAction(attachments);
break;
default:
_appToast.showToast(AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments);
if (context.mounted) {
_appToast.showToast(AppLocalizations.of(context).you_need_to_grant_files_permission_to_download_attachments);
}
break;
}
}
@@ -536,7 +540,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
void _openDownloadedPreviewWorkGroupDocument(DownloadedResponse downloadedResponse) async {
log('SingleEmailController::_openDownloadedPreviewWorkGroupDocument(): $downloadedResponse');
if (downloadedResponse.mediaType == null) {
await share_library.Share.shareFiles([downloadedResponse.filePath]);
await Share.shareXFiles([XFile(downloadedResponse.filePath)]);
}
final openResult = await open_file.OpenFile.open(
@@ -596,10 +600,10 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
void moveToMailbox(BuildContext context, PresentationEmail email) async {
final currentMailbox = getMailboxContain(email);
final accountId = mailboxDashBoardController.accountId.value;
final _session = mailboxDashBoardController.sessionCurrent;
final session = mailboxDashBoardController.sessionCurrent;
if (currentMailbox != null && accountId != null) {
final arguments = DestinationPickerArguments(accountId, MailboxActions.moveEmail, _session);
final arguments = DestinationPickerArguments(accountId, MailboxActions.moveEmail, session);
if (BuildUtils.isWeb) {
showDialogDestinationPicker(
context: context,
@@ -621,8 +625,10 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
arguments: arguments);
if (destinationMailbox != null &&
destinationMailbox is PresentationMailbox &&
mailboxDashBoardController.sessionCurrent != null) {
destinationMailbox is PresentationMailbox &&
mailboxDashBoardController.sessionCurrent != null &&
context.mounted
) {
_dispatchMoveToAction(
context,
accountId,
@@ -692,7 +698,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
imagePaths.icFolderMailbox,
width: 24,
height: 24,
color: Colors.white,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
fit: BoxFit.fill),
backgroundColor: AppColor.toastSuccessBackgroundColor,
textColor: Colors.white,
@@ -932,7 +938,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
imagePaths.icNotConnection,
width: 24,
height: 24,
color: Colors.white,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
fit: BoxFit.fill),
backgroundColor: AppColor.toastErrorBackgroundColor,
textColor: Colors.white,
@@ -949,7 +955,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
imagePaths.icNotConnection,
width: 24,
height: 24,
color: Colors.white,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
fit: BoxFit.fill),
backgroundColor: AppColor.toastErrorBackgroundColor,
textColor: Colors.white,
@@ -966,7 +972,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
imagePaths.icNotConnection,
width: 24,
height: 24,
color: Colors.white,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
fit: BoxFit.fill),
backgroundColor: AppColor.toastErrorBackgroundColor,
textColor: Colors.white,
@@ -32,11 +32,11 @@ class SetDefaultIdentityCheckboxBuilder extends StatelessWidget {
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4.0),
border: Border.all(color: AppColor.primaryColor, width: 2.0),
color: isCheck ? AppColor.primaryColor : Colors.transparent,
color: isCheck ? AppColor.primaryColor : Colors.white,
),
child: SvgPicture.asset(
imagePaths.icSelectedSB,
color: isCheck ? Colors.white : Colors.transparent,
colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn),
width: 18,
height: 18,
)),
@@ -3,7 +3,7 @@ import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/responsive/responsive_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:focus_detector/focus_detector.dart';
import 'package:focus_detector_v2/focus_detector_v2.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view.dart';
@@ -79,22 +79,31 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
body: body,
drawer: ResponsiveWidget(
responsiveUtils: responsiveUtils,
mobile: SizedBox(child: MailboxView(), width: double.infinity),
mobile: SizedBox(
width: double.infinity,
child: MailboxView()
),
landscapeMobile: SizedBox(
child: MailboxView(),
width: ResponsiveUtils.defaultSizeDrawer),
width: ResponsiveUtils.defaultSizeDrawer,
child: MailboxView()
),
tablet: SizedBox(
child: MailboxView(),
width: ResponsiveUtils.defaultSizeDrawer),
width: ResponsiveUtils.defaultSizeDrawer,
child: MailboxView()
),
landscapeTablet: SizedBox(
child: MailboxView(),
width: ResponsiveUtils.defaultSizeLeftMenuMobile),
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
child: MailboxView()
),
tabletLarge: SizedBox(
child: MailboxView(),
width: ResponsiveUtils.defaultSizeLeftMenuMobile),
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
child: MailboxView()
),
desktop: SizedBox(
child: MailboxView(),
width: ResponsiveUtils.defaultSizeLeftMenuMobile)),
width: ResponsiveUtils.defaultSizeLeftMenuMobile,
child: MailboxView()
)
),
);
}
}
@@ -23,7 +23,7 @@ class RemoteExceptionThrower extends ExceptionThrower {
if (error is DioError) {
switch (error.type) {
case DioErrorType.connectTimeout:
case DioErrorType.connectionTimeout:
throw const ConnectError();
default:
if (error.response?.statusCode == 502) {