diff --git a/core/lib/data/network/download/download_client.dart b/core/lib/data/network/download/download_client.dart index 9373ae9f9..31ad60439 100644 --- a/core/lib/data/network/download/download_client.dart +++ b/core/lib/data/network/download/download_client.dart @@ -6,7 +6,7 @@ import 'package:core/data/network/dio_client.dart'; import 'package:core/data/utils/compress_file_utils.dart'; import 'package:core/presentation/extensions/html_extension.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; @@ -55,7 +55,7 @@ class DownloadClient { return null; } - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { final base64Uri = encodeToBase64Uri({ 'bytesData': bytesData, 'mimeType': 'image/$fileExtension', diff --git a/core/lib/presentation/utils/html_transformer/dom/image_transformers.dart b/core/lib/presentation/utils/html_transformer/dom/image_transformers.dart index 0a237620c..44668daa4 100644 --- a/core/lib/presentation/utils/html_transformer/dom/image_transformers.dart +++ b/core/lib/presentation/utils/html_transformer/dom/image_transformers.dart @@ -1,8 +1,12 @@ import 'dart:convert'; -import 'package:core/core.dart'; +import 'package:core/data/network/dio_client.dart'; +import 'package:core/data/utils/compress_file_utils.dart'; +import 'package:core/presentation/extensions/html_extension.dart'; import 'package:core/presentation/utils/html_transformer/base/dom_transformer.dart'; +import 'package:core/utils/app_logger.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:html/dom.dart'; @@ -59,7 +63,7 @@ class ImageTransformer extends DomTransformer { options: Options(responseType: ResponseType.bytes)); if (responseData != null) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return encodeToBase64Uri(responseData); } else { final bytesCompressed = await compressFileUtils.compressBytesDataImage(responseData); diff --git a/core/lib/presentation/utils/icon_utils.dart b/core/lib/presentation/utils/icon_utils.dart index a00533bfa..49ea41ccd 100644 --- a/core/lib/presentation/utils/icon_utils.dart +++ b/core/lib/presentation/utils/icon_utils.dart @@ -1,6 +1,6 @@ -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; class IconUtils { - static const double defaultIconSize = BuildUtils.isWeb ? 20.0 : 24.0; + static const double defaultIconSize = PlatformInfo.isWeb ? 20.0 : 24.0; } \ No newline at end of file diff --git a/core/lib/presentation/utils/responsive_utils.dart b/core/lib/presentation/utils/responsive_utils.dart index 91b39dcaf..ed91ad75e 100644 --- a/core/lib/presentation/utils/responsive_utils.dart +++ b/core/lib/presentation/utils/responsive_utils.dart @@ -1,4 +1,4 @@ -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/widgets.dart'; import 'package:get/get.dart'; @@ -82,7 +82,7 @@ class ResponsiveUtils { } bool hasLeftMenuDrawerActive(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return isMobile(context) || isTablet(context) || isTabletLarge(context); @@ -92,13 +92,13 @@ class ResponsiveUtils { } bool isWebDesktop(BuildContext context) => - BuildUtils.isWeb && isDesktop(context); + PlatformInfo.isWeb && isDesktop(context); bool isWebNotDesktop(BuildContext context) => - BuildUtils.isWeb && !isDesktop(context); + PlatformInfo.isWeb && !isDesktop(context); bool mailboxDashboardOnlyHasEmailView(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return isMobile(context) || isTablet(context); } else { return isPortraitMobile(context) || @@ -108,7 +108,7 @@ class ResponsiveUtils { } bool landscapeTabletSupported(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return isTabletLarge(context); } else { return !isLandscapeMobile(context) && (isLandscapeTablet(context) || diff --git a/core/lib/presentation/utils/style_utils.dart b/core/lib/presentation/utils/style_utils.dart index 05722cc9c..8cc8cf1fd 100644 --- a/core/lib/presentation/utils/style_utils.dart +++ b/core/lib/presentation/utils/style_utils.dart @@ -1,4 +1,5 @@ -import 'package:core/core.dart'; +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; class CommonTextStyle { @@ -9,9 +10,9 @@ class CommonTextStyle { fontWeight: FontWeight.normal, ); - static const defaultTextOverFlow = BuildUtils.isWeb + static const defaultTextOverFlow = PlatformInfo.isWeb ? TextOverflow.fade : TextOverflow.ellipsis; - static const defaultSoftWrap = BuildUtils.isWeb ? false : true; + static const defaultSoftWrap = PlatformInfo.isWeb ? false : true; } \ No newline at end of file diff --git a/core/lib/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart b/core/lib/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart index 1f09dd148..75c4541c0 100644 --- a/core/lib/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart +++ b/core/lib/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart @@ -1,5 +1,6 @@ -import 'package:core/core.dart'; +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; @@ -60,7 +61,7 @@ class ConfirmationDialogActionSheetBuilder { padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10), color: Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( child: Text( _messageText ?? '', @@ -75,7 +76,7 @@ class ConfirmationDialogActionSheetBuilder { padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10), color: Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( child: RichText(text: TextSpan( style: _styleMessage ?? const TextStyle(fontSize: 14, color: AppColor.colorMessageConfirmDialog), @@ -88,7 +89,7 @@ class ConfirmationDialogActionSheetBuilder { Container( color: Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( child: Text( _confirmText ?? '', @@ -99,7 +100,7 @@ class ConfirmationDialogActionSheetBuilder { ), ], cancelButton: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( child: Text( _cancelText ?? '', diff --git a/core/lib/presentation/views/list/tree_view.dart b/core/lib/presentation/views/list/tree_view.dart index 5a149b584..b3c2db256 100644 --- a/core/lib/presentation/views/list/tree_view.dart +++ b/core/lib/presentation/views/list/tree_view.dart @@ -57,8 +57,7 @@ class TreeViewChild { final Widget parent; final List children; final VoidCallback? onTap; - final EdgeInsets? paddingChild; - final bool isDirectionRTL; + final EdgeInsetsGeometry? paddingChild; TreeViewChild( this.context, @@ -68,7 +67,6 @@ class TreeViewChild { this.isExpanded, this.onTap, this.paddingChild, - this.isDirectionRTL = false, Key? key, } ); @@ -92,10 +90,7 @@ class TreeViewChild { mainAxisSize: MainAxisSize.min, children: children .map((child) => Padding( - padding: paddingChild ?? EdgeInsets.only( - left: isDirectionRTL ? 0 : 20, - right: isDirectionRTL ? 20 : 0, - ), + padding: paddingChild ?? const EdgeInsetsDirectional.only(start: 20), child: child )) .toList() diff --git a/core/lib/presentation/views/responsive/responsive_widget.dart b/core/lib/presentation/views/responsive/responsive_widget.dart index fbf0e737a..cdd25b2ed 100644 --- a/core/lib/presentation/views/responsive/responsive_widget.dart +++ b/core/lib/presentation/views/responsive/responsive_widget.dart @@ -1,4 +1,5 @@ -import 'package:core/core.dart'; +import 'package:core/presentation/utils/responsive_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; class ResponsiveWidget extends StatelessWidget { @@ -24,7 +25,7 @@ class ResponsiveWidget extends StatelessWidget { @override Widget build(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (responsiveUtils.isMobile(context)) { return mobile; } diff --git a/core/lib/utils/build_utils.dart b/core/lib/utils/build_utils.dart index 212ff6d2a..260672747 100644 --- a/core/lib/utils/build_utils.dart +++ b/core/lib/utils/build_utils.dart @@ -6,7 +6,5 @@ abstract class BuildUtils { static const bool isReleaseMode = kReleaseMode; - static const bool isWeb = kIsWeb; - static const bool isProfileMode = kProfileMode; } \ No newline at end of file diff --git a/core/lib/utils/file_utils.dart b/core/lib/utils/file_utils.dart index 0916bdc52..9d6c1279e 100644 --- a/core/lib/utils/file_utils.dart +++ b/core/lib/utils/file_utils.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:core/domain/exceptions/download_file_exception.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:path_provider/path_provider.dart'; class FileUtils { @@ -11,7 +11,7 @@ class FileUtils { String? folderPath, String? extensionFile }) async { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { String fileDirectory = (await getApplicationDocumentsDirectory()).absolute.path; diff --git a/lib/features/base/base_mailbox_controller.dart b/lib/features/base/base_mailbox_controller.dart index 3ecb69b60..ed8018932 100644 --- a/lib/features/base/base_mailbox_controller.dart +++ b/lib/features/base/base_mailbox_controller.dart @@ -5,7 +5,7 @@ import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_ import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; import 'package:core/presentation/views/dialog/edit_text_dialog_builder.dart'; import 'package:core/presentation/views/modal_sheets/edit_text_modal_sheet_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -378,7 +378,7 @@ abstract class BaseMailboxController extends BaseController { mailboxIdSelected: mailboxSelected.id ); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogDestinationPicker( context: context, arguments: arguments, diff --git a/lib/features/base/mixin/popup_context_menu_action_mixin.dart b/lib/features/base/mixin/popup_context_menu_action_mixin.dart index cff30589d..91484b80f 100644 --- a/lib/features/base/mixin/popup_context_menu_action_mixin.dart +++ b/lib/features/base/mixin/popup_context_menu_action_mixin.dart @@ -1,5 +1,7 @@ -import 'package:core/core.dart'; +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/views/bottom_popup/cupertino_action_sheet_builder.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; @@ -26,7 +28,7 @@ mixin PopupContextMenuActionMixin { Widget buildCancelButton(BuildContext context) { return MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( child: Text( AppLocalizations.of(context).cancel, diff --git a/lib/features/base/widget/material_text_button.dart b/lib/features/base/widget/material_text_button.dart index 4c483564c..53638156c 100644 --- a/lib/features/base/widget/material_text_button.dart +++ b/lib/features/base/widget/material_text_button.dart @@ -7,13 +7,13 @@ typedef OnTapMaterialTextButton = Function(); class MaterialTextButton extends StatelessWidget { final String label; - final OnTapMaterialTextButton onTap; + final OnTapMaterialTextButton? onTap; final double borderRadius; final Color? labelColor; final double labelSize; final FontWeight? labelWeight; final TextStyle? customStyle; - final EdgeInsets? padding; + final EdgeInsetsGeometry? padding; final TextOverflow? overflow; final bool? softWrap; diff --git a/lib/features/caching/config/hive_cache_config.dart b/lib/features/caching/config/hive_cache_config.dart index 14c86e538..5feecbb4e 100644 --- a/lib/features/caching/config/hive_cache_config.dart +++ b/lib/features/caching/config/hive_cache_config.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:core/utils/app_logger.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:path_provider/path_provider.dart' as path_provider; @@ -41,7 +42,7 @@ class HiveCacheConfig { if (databasePath != null) { Hive.init(databasePath); } else { - if (!GetPlatform.isWeb) { + if (PlatformInfo.isMobile) { Directory directory = await path_provider.getApplicationDocumentsDirectory(); Hive.init(directory.path); } diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 693396abf..97b2b5cc2 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -170,7 +170,7 @@ class ComposerController extends BaseController { Future _getEmailBodyText(BuildContext context, { bool changedEmail = false }) async { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { var contentHtml = ''; if (_responsiveUtils.isWebDesktop(context) && screenDisplayMode.value == ScreenDisplayMode.minimize) { @@ -223,7 +223,7 @@ class ComposerController extends BaseController { createFocusNodeInput(); scrollControllerEmailAddress.addListener(_scrollControllerEmailAddressListener); _listenWorker(); - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { await FkUserAgent.init(); }); @@ -237,7 +237,7 @@ class ComposerController extends BaseController { @override void onReady() { _initEmail(); - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { Future.delayed(const Duration(milliseconds: 500), _checkContactPermission); } super.onReady(); @@ -246,7 +246,7 @@ class ComposerController extends BaseController { @override void onClose() { _initTextEditor = null; - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { FkUserAgent.release(); } super.onClose(); @@ -289,7 +289,7 @@ class ComposerController extends BaseController { } else if (success is GetAllIdentitiesSuccess) { _handleGetAllIdentitiesSuccess(success); } else if (success is DownloadImageAsBase64Success) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { richTextWebController.insertImage( InlineImage( ImageSource.local, @@ -369,7 +369,7 @@ class ComposerController extends BaseController { subjectEmailInputFocusNode?.addListener(() { log('ComposerController::createFocusNodeInput():subjectEmailInputFocusNode: ${subjectEmailInputFocusNode?.hasFocus}'); if (subjectEmailInputFocusNode?.hasFocus == true) { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { htmlEditorApi?.unfocus(); } _collapseAllRecipient(); @@ -430,7 +430,7 @@ class ComposerController extends BaseController { uploadController.initializeUploadAttachments( arguments.attachments!.listAttachmentsDisplayedOutSide); } - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { expandModeAttachments.value = ExpandMode.EXPAND; } } @@ -1043,7 +1043,7 @@ class ComposerController extends BaseController { } } - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { mailboxDashBoardController.closeComposerOverlay(); } else { if (canPop) popBack(); @@ -1379,11 +1379,11 @@ class ComposerController extends BaseController { break; } _closeSuggestionBox(); - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { htmlEditorApi?.unfocus(); } } else { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { _collapseAllRecipient(); _autoCreateEmailTag(); } @@ -1399,7 +1399,7 @@ class ComposerController extends BaseController { } bool get _isMobileApp { - return !BuildUtils.isWeb + return PlatformInfo.isMobile && currentContext != null && (_responsiveUtils.isLandscapeMobile(currentContext!) || _responsiveUtils.isPortraitMobile(currentContext!)); } @@ -1455,7 +1455,7 @@ class ComposerController extends BaseController { } Future _applySignature(String signature) async { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { richTextWebController.editorController.insertSignature(signature); } else { await htmlEditorApi?.insertSignature(signature); @@ -1464,7 +1464,7 @@ class ComposerController extends BaseController { Future _removeSignature() async { log('ComposerController::_removeSignature():'); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { richTextWebController.editorController.removeSignature(); } else { await htmlEditorApi?.removeSignature(); @@ -1482,7 +1482,7 @@ class ComposerController extends BaseController { final inlineImage = await _selectFromFile(); log('ComposerController::insertImage(): $inlineImage'); if (inlineImage != null) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { _insertImageOnWeb(inlineImage); } else { _insertImageOnMobileAndTablet(inlineImage); @@ -1497,13 +1497,13 @@ class ComposerController extends BaseController { Future _selectFromFile() async { final filePickerResult = await FilePicker.platform.pickFiles( type: FileType.image, - withData: !BuildUtils.isWeb, - withReadStream: BuildUtils.isWeb); + withData: PlatformInfo.isMobile, + withReadStream: PlatformInfo.isWeb); final platformFile = filePickerResult?.files.single; if (platformFile != null) { final fileSelected = FileInfo( platformFile.name, - BuildUtils.isWeb ? '' : platformFile.path ?? '', + PlatformInfo.isWeb ? '' : platformFile.path ?? '', platformFile.size, bytes: platformFile.bytes, readStream: platformFile.readStream); @@ -1649,7 +1649,7 @@ class ComposerController extends BaseController { toAddressFocusNode?.requestFocus(); } else if (subjectEmailInputController.text.isEmpty) { subjectEmailInputFocusNode?.requestFocus(); - } else if (BuildUtils.isWeb) { + } else if (PlatformInfo.isWeb) { Future.delayed( const Duration(milliseconds: 500), richTextWebController.editorController.setFocus diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart index 8d217e234..c513cace3 100644 --- a/lib/features/composer/presentation/composer_view.dart +++ b/lib/features/composer/presentation/composer_view.dart @@ -127,7 +127,9 @@ class ComposerView extends BaseComposerView { buildDivider(), Expanded(child: _buildBodyTablet(context)), buildDivider(), - buildBottomBar(context), + Padding( + padding: const EdgeInsetsDirectional.symmetric(vertical: 16), + child: buildBottomBar(context)), ]) ) ) diff --git a/lib/features/contact/presentation/contact_controller.dart b/lib/features/contact/presentation/contact_controller.dart index 92a777ea4..f22244fd4 100644 --- a/lib/features/contact/presentation/contact_controller.dart +++ b/lib/features/contact/presentation/contact_controller.dart @@ -1,7 +1,7 @@ import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; @@ -63,7 +63,7 @@ class ContactController extends BaseController { } injectAutoCompleteBindings(_session, _accountId); } - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { Future.delayed( const Duration(milliseconds: 500), () => _checkContactPermission()); @@ -178,7 +178,7 @@ class ContactController extends BaseController { void selectContact(BuildContext context, EmailAddress emailAddress) { KeyboardUtils.hideKeyboard(context); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onSelectedContactCallback?.call(emailAddress); } else { popBack(result: emailAddress); @@ -189,7 +189,7 @@ class ContactController extends BaseController { clearAllTextInputSearchForm(); KeyboardUtils.hideKeyboard(context); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onDismissContactView?.call(); } else { popBack(); diff --git a/lib/features/contact/presentation/utils/contact_utils.dart b/lib/features/contact/presentation/utils/contact_utils.dart index d44ab9eb5..214731eef 100644 --- a/lib/features/contact/presentation/utils/contact_utils.dart +++ b/lib/features/contact/presentation/utils/contact_utils.dart @@ -1,11 +1,11 @@ import 'package:core/presentation/utils/responsive_utils.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; class ContactUtils { static EdgeInsets getPaddingAppBar(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return const EdgeInsets.symmetric(horizontal: 16); } else { if (responsiveUtils.isScreenWithShortestSide(context)) { @@ -17,7 +17,7 @@ class ContactUtils { } static EdgeInsets getPaddingSearchInputForm(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return const EdgeInsets.symmetric(horizontal: 16, vertical: 10); } else { if (responsiveUtils.isScreenWithShortestSide(context)) { @@ -29,7 +29,7 @@ class ContactUtils { } static EdgeInsets getPaddingSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return const EdgeInsets.symmetric(horizontal: 16, vertical: 10); } else { if (responsiveUtils.isScreenWithShortestSide(context)) { @@ -41,7 +41,7 @@ class ContactUtils { } static EdgeInsets getPaddingDividerSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return const EdgeInsets.symmetric(horizontal: 16); } else { if (responsiveUtils.isScreenWithShortestSide(context)) { @@ -53,7 +53,7 @@ class ContactUtils { } static bool supportAppBarTopBorder(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb || responsiveUtils.isLandscapeMobile(context)) { + if (PlatformInfo.isWeb || responsiveUtils.isLandscapeMobile(context)) { return false; } return true; diff --git a/lib/features/contact/presentation/widgets/autocomplete_contact_text_field_with_tags.dart b/lib/features/contact/presentation/widgets/autocomplete_contact_text_field_with_tags.dart index eeaa2a063..0846aaac0 100644 --- a/lib/features/contact/presentation/widgets/autocomplete_contact_text_field_with_tags.dart +++ b/lib/features/contact/presentation/widgets/autocomplete_contact_text_field_with_tags.dart @@ -6,7 +6,6 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -87,7 +86,7 @@ class _AutocompleteContactTextFieldWithTagsState extends State deleteContactCallbackAction?.call(contact), ); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return Padding( padding: const EdgeInsets.only(top: 10), child: itemChild diff --git a/lib/features/destination_picker/presentation/destination_picker_controller.dart b/lib/features/destination_picker/presentation/destination_picker_controller.dart index 2256a54f0..475c1a35a 100644 --- a/lib/features/destination_picker/presentation/destination_picker_controller.dart +++ b/lib/features/destination_picker/presentation/destination_picker_controller.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; @@ -378,7 +378,7 @@ class DestinationPickerController extends BaseMailboxController { return; } - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onSelectedMailboxCallback?.call(mailboxDestination.value); } else { popBack(result: mailboxDestination.value); @@ -427,7 +427,7 @@ class DestinationPickerController extends BaseMailboxController { void closeDestinationPicker(BuildContext context) { KeyboardUtils.hideKeyboard(context); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onDismissDestinationPicker?.call(); } else { popBack(); diff --git a/lib/features/destination_picker/presentation/destination_picker_view.dart b/lib/features/destination_picker/presentation/destination_picker_view.dart index f97ed040e..24e796d98 100644 --- a/lib/features/destination_picker/presentation/destination_picker_view.dart +++ b/lib/features/destination_picker/presentation/destination_picker_view.dart @@ -7,7 +7,7 @@ import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/list/tree_view.dart'; import 'package:core/presentation/views/search/search_bar_view.dart'; import 'package:core/presentation/views/text/text_field_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:core/utils/direction_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -73,7 +73,7 @@ class DestinationPickerView extends GetWidget borderOnForeground: false, color: Colors.transparent, child: SafeArea( - top: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context), + top: PlatformInfo.isMobile && _responsiveUtils.isPortraitMobile(context), bottom: false, left: false, right: false, @@ -104,8 +104,8 @@ class DestinationPickerView extends GetWidget child: SafeArea( top: false, bottom: false, - left: !BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context), - right: !BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context), + left: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context), + right: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context), child: Column(children: [ Obx(() => TopBarDestinationPickerBuilder( controller.mailboxAction.value, @@ -371,12 +371,8 @@ class DestinationPickerView extends GetWidget return TreeViewChild( context, key: const Key('children_tree_mailbox_child'), - isDirectionRTL: AppUtils.isDirectionRTL(context), isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, - paddingChild: EdgeInsets.only( - left: AppUtils.isDirectionRTL(context) ? 0 : 14, - right: AppUtils.isDirectionRTL(context) ? 14 : 0, - ), + paddingChild: const EdgeInsetsDirectional.only(start: 14), parent: (MailBoxFolderTileBuilder( context, _imagePaths, @@ -468,8 +464,8 @@ class DestinationPickerView extends GetWidget child: Row(children: [ SvgPicture.asset( _imagePaths.icFolderMailbox, - width: BuildUtils.isWeb ? 20 : 24, - height: BuildUtils.isWeb ? 20 : 24, + width: PlatformInfo.isWeb ? 20 : 24, + height: PlatformInfo.isWeb ? 20 : 24, fit: BoxFit.fill ), const SizedBox(width: 8), @@ -586,7 +582,7 @@ class DestinationPickerView extends GetWidget } BorderRadius _getRadiusDestinationPicker(BuildContext context) { - if (!BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context)) { + if (PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context)) { return BorderRadius.zero; } else if (_responsiveUtils.isMobile(context)) { return const BorderRadius.only( @@ -598,7 +594,7 @@ class DestinationPickerView extends GetWidget } double _getWidthDestinationPicker(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (_responsiveUtils.isMobile(context)) { return double.infinity; } else { @@ -615,7 +611,7 @@ class DestinationPickerView extends GetWidget } double _getHeightDestinationPicker(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (_responsiveUtils.isMobile(context)) { return double.infinity; } else { @@ -641,7 +637,7 @@ class DestinationPickerView extends GetWidget } EdgeInsets _getMarginDestinationPicker(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (_responsiveUtils.isMobile(context)) { return EdgeInsets.zero; } else { diff --git a/lib/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart b/lib/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart index a9b8362a2..b6e5dbdb3 100644 --- a/lib/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart +++ b/lib/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart @@ -2,7 +2,7 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; @@ -84,8 +84,8 @@ class DestinationPickerSearchMailboxItemBuilder extends StatelessWidget { Widget _buildMailboxIcon() { return SvgPicture.asset( _presentationMailbox.getMailboxIcon(_imagePaths), - width: BuildUtils.isWeb ? 20 : 24, - height: BuildUtils.isWeb ? 20 : 24, + width: PlatformInfo.isWeb ? 20 : 24, + height: PlatformInfo.isWeb ? 20 : 24, fit: BoxFit.fill ); } diff --git a/lib/features/email/domain/usecases/get_email_content_interactor.dart b/lib/features/email/domain/usecases/get_email_content_interactor.dart index 5e7ba1cd4..9553eafdd 100644 --- a/lib/features/email/domain/usecases/get_email_content_interactor.dart +++ b/lib/features/email/domain/usecases/get_email_content_interactor.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; @@ -30,7 +30,7 @@ class GetEmailContentInteractor { try { yield Right(GetEmailContentLoading()); - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { yield* _tryToGetOpenedEmailCache(session, accountId, emailId, baseDownloadUrl, composeEmail: composeEmail, draftsEmail: draftsEmail); } else { yield* _getContentEmailFromServer(session, accountId, emailId, baseDownloadUrl, composeEmail: composeEmail, draftsEmail: draftsEmail); @@ -62,7 +62,7 @@ class GetEmailContentInteractor { draftsEmail: draftsEmail ); - final newEmailContentsDisplayed = BuildUtils.isWeb && !composeEmail + final newEmailContentsDisplayed = PlatformInfo.isWeb && !composeEmail ? await emailRepository.addTooltipWhenHoverOnLink(newEmailContents) : newEmailContents; diff --git a/lib/features/email/presentation/controller/email_supervisor_controller.dart b/lib/features/email/presentation/controller/email_supervisor_controller.dart index 39f707000..00879c312 100644 --- a/lib/features/email/presentation/controller/email_supervisor_controller.dart +++ b/lib/features/email/presentation/controller/email_supervisor_controller.dart @@ -1,6 +1,6 @@ import 'dart:collection'; import 'package:collection/collection.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -55,7 +55,7 @@ class EmailSupervisorController extends GetxController { bool get isSearchActivatedOnMobile { return mailboxDashBoardController.searchController.isSearchEmailRunning - && !BuildUtils.isWeb; + && PlatformInfo.isMobile; } void createPageControllerAndJumpToEmailById(EmailId currentEmailId) { @@ -112,7 +112,7 @@ class EmailSupervisorController extends GetxController { } void _jumpToPage(int page) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { pageController?.jumpToPage(page); } else { pageController?.animateToPage( @@ -123,7 +123,7 @@ class EmailSupervisorController extends GetxController { } void updateScrollPhysicPageView({bool isScrollPageViewActivated = false}) { - if (BuildUtils.isWeb || !isScrollPageViewActivated) { + if (PlatformInfo.isWeb || !isScrollPageViewActivated) { scrollPhysicsPageView.value = const NeverScrollableScrollPhysics(); } else { scrollPhysicsPageView.value = null; diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index 82dcd0e2f..b2867104f 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -382,7 +382,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { initialEmailContents = success.emailContents; attachments.value = success.attachments; - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { final detailedEmail = DetailedEmail( emailId: currentEmail!.id!, attachments: attachments, @@ -655,7 +655,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { session, mailboxIdSelected: currentMailbox.mailboxId ); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogDestinationPicker( context: context, arguments: arguments, @@ -1117,7 +1117,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { void _updateRouteOnBrowser() { log('SingleEmailController::_updateRouteOnBrowser(): isSearchEmailRunning: ${mailboxDashBoardController.searchController.isSearchEmailRunning}'); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { final selectedMailboxId = mailboxDashBoardController.selectedMailbox.value?.id; final route = RouteUtils.generateRouteBrowser( AppRoutes.dashboard, @@ -1159,7 +1159,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { session, emailAddress: emailAddress); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogRuleFilterCreator( context: context, arguments: arguments, @@ -1216,7 +1216,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin { } Future backButtonPressedCallbackAction(BuildContext context) async { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { closeEmailView(context); } return false; diff --git a/lib/features/email/presentation/email_view.dart b/lib/features/email/presentation/email_view.dart index 49d40c857..6f8ad6533 100644 --- a/lib/features/email/presentation/email_view.dart +++ b/lib/features/email/presentation/email_view.dart @@ -8,7 +8,7 @@ import 'package:core/presentation/views/html_viewer/html_content_viewer_on_web_w import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.dart'; import 'package:core/presentation/views/html_viewer/html_viewer_controller_for_web.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:filesize/filesize.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -80,7 +80,7 @@ class EmailView extends GetWidget { } EdgeInsets _getMarginEmailView(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (responsiveUtils.isDesktop(context)) { return EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 16 : 0, @@ -134,7 +134,7 @@ class EmailView extends GetWidget { } bool _supportVerticalDivider(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return responsiveUtils.isTabletLarge(context); } else { return responsiveUtils.isLandscapeTablet(context) || @@ -181,7 +181,7 @@ class EmailView extends GetWidget { _popupMenuEmailActionTile(context, email)); } }, - optionsWidget: BuildUtils.isWeb && controller.emailSupervisorController.supportedPageView.isTrue + optionsWidget: PlatformInfo.isWeb && controller.emailSupervisorController.supportedPageView.isTrue ? _buildNavigatorPageViewWidgets(context) : null, )); @@ -225,7 +225,7 @@ class EmailView extends GetWidget { } Widget _buildEmailBody(BuildContext context, PresentationEmail email) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _buildEmailMessage(context, email); } else { return SingleChildScrollView( @@ -256,8 +256,8 @@ class EmailView extends GetWidget { padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), child: SelectableText( email.getEmailTitle(), - maxLines: BuildUtils.isWeb ? 2 : null, - minLines: BuildUtils.isWeb ? 1 : null, + maxLines: PlatformInfo.isWeb ? 2 : null, + minLines: PlatformInfo.isWeb ? 1 : null, cursorColor: AppColor.colorTextButton, style: const TextStyle( fontSize: 20, @@ -280,7 +280,7 @@ class EmailView extends GetWidget { ), _buildLoadingView(), _buildAttachments(context), - if (BuildUtils.isWeb) + if (PlatformInfo.isWeb) Expanded(child: Padding( padding: EdgeInsets.only( left: AppUtils.isDirectionRTL(context) ? 0 : 16, @@ -400,7 +400,7 @@ class EmailView extends GetWidget { .map((attachment) => AttachmentFileTileBuilder( attachment, onDownloadAttachmentFileActionClick: (attachment) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { controller.downloadAttachmentForWeb(context, attachment); } else { controller.exportAttachment(context, attachment); @@ -423,7 +423,7 @@ class EmailView extends GetWidget { AttachmentFileTileBuilder( attachments[index], onDownloadAttachmentFileActionClick: (attachment) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { controller.downloadAttachmentForWeb(context, attachment); } else { controller.exportAttachment(context, attachment); @@ -445,7 +445,7 @@ class EmailView extends GetWidget { if (controller.emailContents.value != null) { final allEmailContents = controller.emailContents.value; - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return HtmlContentViewerOnWeb( widthContent: constraints.maxWidth, heightContent: responsiveUtils.getSizeScreenHeight(context), diff --git a/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart b/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart index 4fb8306c7..457e80098 100644 --- a/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart +++ b/lib/features/email/presentation/widgets/app_bar_mail_widget_builder.dart @@ -92,7 +92,7 @@ class AppBarMailWidgetBuilder extends StatelessWidget { } bool _supportDisplayMailboxNameTitle(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _responsiveUtils.isDesktop(context) || _responsiveUtils.isMobile(context) || _responsiveUtils.isTablet(context) || @@ -141,8 +141,8 @@ class AppBarMailWidgetBuilder extends StatelessWidget { colorFilter: mailboxContain?.isTrash == false ? AppColor.colorTextButton.asFilter() : AppColor.colorDeletePermanentlyButton.asFilter(), - width: BuildUtils.isWeb ? 18 : 20, - height: BuildUtils.isWeb ? 18 : 20, + width: PlatformInfo.isWeb ? 18 : 20, + height: PlatformInfo.isWeb ? 18 : 20, fit: BoxFit.fill), tooltip: mailboxContain?.isTrash == false ? AppLocalizations.of(context).move_to_trash diff --git a/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart b/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart index 7c317fdb7..ae218faee 100644 --- a/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart +++ b/lib/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart @@ -31,7 +31,7 @@ class EmailActionCupertinoActionSheetActionBuilder extends CupertinoActionSheetA return Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( key: key, child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/lib/features/identity_creator/presentation/identity_creator_controller.dart b/lib/features/identity_creator/presentation/identity_creator_controller.dart index 9988fd9ae..02e30e993 100644 --- a/lib/features/identity_creator/presentation/identity_creator_controller.dart +++ b/lib/features/identity_creator/presentation/identity_creator_controller.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:get/get_core/get_core.dart'; import 'package:get/get_instance/get_instance.dart'; @@ -168,7 +168,7 @@ class IdentityCreatorController extends BaseController { if (identity?.signatureAsString.isNotEmpty == true) { updateContentHtmlEditor(arguments?.identity?.signatureAsString ?? ''); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { signatureHtmlEditorController.setText(arguments?.identity?.signatureAsString ?? ''); } } @@ -296,7 +296,7 @@ class IdentityCreatorController extends BaseController { } Future _getSignatureHtmlText() async { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return signatureHtmlEditorController.getText(); } else { return keyboardRichTextController.htmlEditorApi?.getText(); @@ -318,7 +318,7 @@ class IdentityCreatorController extends BaseController { return; } - final signatureHtmlText = BuildUtils.isWeb + final signatureHtmlText = PlatformInfo.isWeb ? contentHtmlEditor : await _getSignatureHtmlText(); final bccAddress = bccOfIdentity.value != null && bccOfIdentity.value != noneEmailAddress @@ -349,7 +349,7 @@ class IdentityCreatorController extends BaseController { isDefaultIdentity: isDefaultIdentity.value ); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onCreatedIdentityCallback?.call(identityRequest); } else { popBack(result: identityRequest); @@ -360,7 +360,7 @@ class IdentityCreatorController extends BaseController { identityRequest: newIdentity.toIdentityRequest(), isDefaultIdentity: isDefaultIdentity.value); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onCreatedIdentityCallback?.call(identityRequest); } else { popBack(result: identityRequest); @@ -426,7 +426,7 @@ class IdentityCreatorController extends BaseController { } void clearFocusEditor(BuildContext context) { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { keyboardRichTextController.htmlEditorApi?.unfocus(); KeyboardUtils.hideSystemKeyboardMobile(); } @@ -434,7 +434,7 @@ class IdentityCreatorController extends BaseController { } void closeView(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onDismissIdentityCreator?.call(); } else { popBack(); diff --git a/lib/features/identity_creator/presentation/identity_creator_view.dart b/lib/features/identity_creator/presentation/identity_creator_view.dart index 93be687b1..ffbf52295 100644 --- a/lib/features/identity_creator/presentation/identity_creator_view.dart +++ b/lib/features/identity_creator/presentation/identity_creator_view.dart @@ -9,7 +9,7 @@ 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'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -63,7 +63,7 @@ class IdentityCreatorView extends GetWidget { borderOnForeground: false, color: Colors.transparent, child: SafeArea( - top: !BuildUtils.isWeb, + top: PlatformInfo.isMobile, bottom: false, left: false, right: false, @@ -211,7 +211,7 @@ class IdentityCreatorView extends GetWidget { controller.errorNameIdentity.value, AppLocalizations.of(context).required, editingController: controller.inputNameIdentityController, - focusNode: BuildUtils.isWeb ? null : controller.inputNameIdentityFocusNode, + focusNode: PlatformInfo.isWeb ? null : controller.inputNameIdentityFocusNode, isMandatory: true, onChangeInputNameAction: (value) => controller.updateNameIdentity(context, value) )), @@ -243,7 +243,7 @@ class IdentityCreatorView extends GetWidget { AppLocalizations.of(context).bcc_to, controller.errorBccIdentity.value, controller.inputBccIdentityController, - focusNode: BuildUtils.isWeb ? null : controller.inputBccIdentityFocusNode, + focusNode: PlatformInfo.isWeb ? null : controller.inputBccIdentityFocusNode, onSelectedSuggestionAction: (newEmailAddress) { controller.inputBccIdentityController?.text = newEmailAddress?.email ?? ''; controller.updateBccOfIdentity(newEmailAddress); @@ -287,7 +287,7 @@ class IdentityCreatorView extends GetWidget { child: Column(children: [ _buildHeaderView(context), Expanded( - child: BuildUtils.isWeb + child: PlatformInfo.isWeb ? PointerInterceptor(child: bodyCreatorView) : KeyboardRichText( keyBroadToolbar: RichTextKeyboardToolBar( @@ -343,13 +343,13 @@ class IdentityCreatorView extends GetWidget { } Widget _buildSignatureHtmlTemplate(BuildContext context) { - final htmlEditor = BuildUtils.isWeb + final htmlEditor = PlatformInfo.isWeb ? _buildHtmlEditorWeb(context, controller.contentHtmlEditor ?? '') : _buildHtmlEditor(context, initialContent: controller.contentHtmlEditor ?? ''); return Column( children: [ - if(BuildUtils.isWeb) + if(PlatformInfo.isWeb) ToolbarRichTextWebBuilder( richTextWebController: controller.richTextWebController, padding: const EdgeInsets.only(top: 22, bottom: 8.0, left: 24, right: 12)), diff --git a/lib/features/login/data/network/config/oidc_constant.dart b/lib/features/login/data/network/config/oidc_constant.dart index 2ad4a3898..38f6bceb5 100644 --- a/lib/features/login/data/network/config/oidc_constant.dart +++ b/lib/features/login/data/network/config/oidc_constant.dart @@ -7,5 +7,5 @@ class OIDCConstant { static const keyAuthorityOidc = 'KEY_AUTHORITY_OIDC'; static const authResponseKey = "auth_info"; - static String get clientId => BuildUtils.isWeb ? AppConfig.webOidcClientId : mobileOidcClientId; + static String get clientId => PlatformInfo.isWeb ? AppConfig.webOidcClientId : mobileOidcClientId; } \ No newline at end of file diff --git a/lib/features/login/domain/extensions/oidc_configuration_extensions.dart b/lib/features/login/domain/extensions/oidc_configuration_extensions.dart index 099865da4..fef03e30f 100644 --- a/lib/features/login/domain/extensions/oidc_configuration_extensions.dart +++ b/lib/features/login/domain/extensions/oidc_configuration_extensions.dart @@ -1,12 +1,12 @@ -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:model/oidc/oidc_configuration.dart'; import 'package:tmail_ui_user/main/utils/app_config.dart'; extension OidcConfigurationExtensions on OIDCConfiguration { String get redirectUrl { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (AppConfig.domainRedirectUrl.endsWith('/')) { return AppConfig.domainRedirectUrl + loginRedirectOidcWeb; } else { @@ -18,7 +18,7 @@ extension OidcConfigurationExtensions on OIDCConfiguration { } String get logoutRedirectUrl { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (AppConfig.domainRedirectUrl.endsWith('/')) { return AppConfig.domainRedirectUrl + logoutRedirectOidcWeb; } else { diff --git a/lib/features/login/presentation/login_controller.dart b/lib/features/login/presentation/login_controller.dart index 68cbaab70..5439d9e1a 100644 --- a/lib/features/login/presentation/login_controller.dart +++ b/lib/features/login/presentation/login_controller.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/extensions/url_extension.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; @@ -127,7 +127,7 @@ class LoginController extends ReloadableController { @override void onReady() { super.onReady(); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { final arguments = Get.arguments; if (arguments is LoginArguments) { loginFormType.value = arguments.loginFormType; @@ -215,7 +215,7 @@ class LoginController extends ReloadableController { } void _checkOIDCIsAvailable() { - final baseUri = BuildUtils.isWeb ? _parseUri(AppConfig.baseUrl) : _parseUri(_urlText); + final baseUri = PlatformInfo.isWeb ? _parseUri(AppConfig.baseUrl) : _parseUri(_urlText); if (baseUri == null) { loginState.value = LoginState(Left(LoginMissUrlAction())); } else { @@ -286,7 +286,7 @@ class LoginController extends ReloadableController { void _getOIDCConfigurationSuccess(GetOIDCConfigurationSuccess success) { log('LoginController::_getOIDCConfigurationSuccess():success: $success'); loginState.value = LoginState(Right(success)); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { _authenticateOidcOnBrowserAction(success.oidcConfiguration); } else { _getTokenOIDCAction(success.oidcConfiguration); @@ -323,8 +323,8 @@ class LoginController extends ReloadableController { void _getTokenOIDCSuccess(GetTokenOIDCSuccess success) { log('LoginController::_getTokenOIDCSuccess(): ${success.tokenOIDC.toString()}'); loginState.value = LoginState(Right(success)); - _dynamicUrlInterceptors.setJmapUrl(BuildUtils.isWeb ? AppConfig.baseUrl : _urlText); - _dynamicUrlInterceptors.changeBaseUrl(BuildUtils.isWeb ? AppConfig.baseUrl : _urlText); + _dynamicUrlInterceptors.setJmapUrl(PlatformInfo.isWeb ? AppConfig.baseUrl : _urlText); + _dynamicUrlInterceptors.changeBaseUrl(PlatformInfo.isWeb ? AppConfig.baseUrl : _urlText); authorizationInterceptors.setTokenAndAuthorityOidc( newToken: success.tokenOIDC.toToken(), newConfig: success.configuration); @@ -340,8 +340,8 @@ class LoginController extends ReloadableController { void _loginSuccessAction(AuthenticationUserSuccess success) { loginState.value = LoginState(Right(success)); - _dynamicUrlInterceptors.setJmapUrl(BuildUtils.isWeb ? AppConfig.baseUrl : _urlText); - _dynamicUrlInterceptors.changeBaseUrl(BuildUtils.isWeb ? AppConfig.baseUrl : _urlText); + _dynamicUrlInterceptors.setJmapUrl(PlatformInfo.isWeb ? AppConfig.baseUrl : _urlText); + _dynamicUrlInterceptors.changeBaseUrl(PlatformInfo.isWeb ? AppConfig.baseUrl : _urlText); authorizationInterceptors.setBasicAuthorization(_userNameText, _passwordText); authorizationIsolateInterceptors.setBasicAuthorization(_userNameText, _passwordText); pushAndPop(AppRoutes.session, arguments: _dynamicUrlInterceptors.baseUrl); @@ -361,7 +361,7 @@ class LoginController extends ReloadableController { } void _saveRecentLoginUrl() { - if (_urlText?.isNotEmpty == true && !BuildUtils.isWeb) { + if (_urlText?.isNotEmpty == true && PlatformInfo.isMobile) { final recentLoginUrl = RecentLoginUrl.now(_urlText!); log('LoginController::_saveRecentLoginUrl(): $recentLoginUrl'); consumeState(_saveLoginUrlOnMobileInteractor.execute(recentLoginUrl)); @@ -386,7 +386,7 @@ class LoginController extends ReloadableController { } void _saveRecentLoginUsername() { - if(BuildUtils.isWeb || _userNameText == null || _userNameText!.isEmpty || !_userNameText!.isEmail) { + if(PlatformInfo.isWeb || _userNameText == null || _userNameText!.isEmpty || !_userNameText!.isEmail) { return ; } final recentLoginUsername = RecentLoginUsername.now(_userNameText!); diff --git a/lib/features/mailbox/data/network/mailbox_isolate_worker.dart b/lib/features/mailbox/data/network/mailbox_isolate_worker.dart index 65a28bb7e..4c35ae9c7 100644 --- a/lib/features/mailbox/data/network/mailbox_isolate_worker.dart +++ b/lib/features/mailbox/data/network/mailbox_isolate_worker.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; @@ -41,7 +41,7 @@ class MailboxIsolateWorker { int totalEmailUnread, StreamController> onProgressController ) async { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _handleMarkAsMailboxReadActionOnWeb( session, accountId, diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 9ad41c468..67c89ecf4 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -409,7 +409,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM NavigationRouter? get navigationRouter => mailboxDashBoardController.navigationRouter; - bool get isHasDataFromRoute => BuildUtils.isWeb && navigationRouter != null; + bool get isHasDataFromRoute => PlatformInfo.isWeb && navigationRouter != null; MailboxId? get mailboxIdFromNavigationRouter => navigationRouter?.mailboxId; @@ -477,7 +477,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM teamMailboxesTree.value, mailboxDashBoardController.sessionCurrent!); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogMailboxCreator( context: context, arguments: arguments, @@ -532,7 +532,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM } void openSearchViewAction(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { SearchMailboxBindings().dependencies(); mailboxDashBoardController.searchMailboxActivated.value = true; } else { @@ -962,7 +962,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM } void _updateSelectedMailboxRouteOnBrowser() { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { final selectedMailboxId = selectedMailbox?.id; final route = RouteUtils.generateRouteBrowser( AppRoutes.dashboard, diff --git a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart index eb3ef7f88..30ca8269f 100644 --- a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart +++ b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart @@ -4,7 +4,7 @@ import 'package:core/presentation/resources/image_paths.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/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -34,7 +34,7 @@ mixin MailboxWidgetMixin { ) { return [ - if (BuildUtils.isWeb) + if (PlatformInfo.isWeb) MailboxActions.openInNewTab, if (mailbox.isSpam) _mailboxActionForSpam(spamReportEnabled), @@ -47,7 +47,7 @@ mixin MailboxWidgetMixin { List _listActionForPersonalMailbox(PresentationMailbox mailbox) { return [ - if (BuildUtils.isWeb && mailbox.isSubscribedMailbox) + if (PlatformInfo.isWeb && mailbox.isSubscribedMailbox) MailboxActions.openInNewTab, if (mailbox.getCountUnReadEmails().isNotEmpty) MailboxActions.markAsRead, @@ -63,7 +63,7 @@ mixin MailboxWidgetMixin { List _listActionForTeamMailbox(PresentationMailbox mailbox) { return [ - if (BuildUtils.isWeb && mailbox.isSubscribedMailbox) + if (PlatformInfo.isWeb && mailbox.isSubscribedMailbox) MailboxActions.openInNewTab, if (mailbox.getCountUnReadEmails().isNotEmpty) MailboxActions.markAsRead, diff --git a/lib/features/mailbox/presentation/widgets/mailbox_bottom_sheet_action_tile_builder.dart b/lib/features/mailbox/presentation/widgets/mailbox_bottom_sheet_action_tile_builder.dart index c0100330d..b87b940a7 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_bottom_sheet_action_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_bottom_sheet_action_tile_builder.dart @@ -41,7 +41,7 @@ class MailboxBottomSheetActionTileBuilder extends CupertinoActionSheetActionBuil child: Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( key: key, child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/lib/features/mailbox_creator/presentation/mailbox_creator_controller.dart b/lib/features/mailbox_creator/presentation/mailbox_creator_controller.dart index a3941202d..4712b0c31 100644 --- a/lib/features/mailbox_creator/presentation/mailbox_creator_controller.dart +++ b/lib/features/mailbox_creator/presentation/mailbox_creator_controller.dart @@ -143,7 +143,7 @@ class MailboxCreatorController extends BaseController { _session, mailboxIdSelected: selectedMailbox.value?.id); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogDestinationPicker( context: context, arguments: arguments, @@ -194,7 +194,7 @@ class MailboxCreatorController extends BaseController { MailboxName(nameMailbox), mailboxLocation: selectedMailbox.value); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onCreatedMailboxCallback?.call(newMailboxArguments); } else { popBack(result: newMailboxArguments); @@ -205,7 +205,7 @@ class MailboxCreatorController extends BaseController { void closeMailboxCreator(BuildContext context) { KeyboardUtils.hideKeyboard(context); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onDismissMailboxCreator?.call(); } else { popBack(); diff --git a/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart b/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart index bddcf4f23..5893de114 100644 --- a/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart +++ b/lib/features/mailbox_creator/presentation/mailbox_creator_view.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/text/text_field_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:core/utils/direction_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -50,7 +50,7 @@ class MailboxCreatorView extends GetWidget { borderOnForeground: false, color: Colors.transparent, child: SafeArea( - top: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context), + top: PlatformInfo.isMobile && _responsiveUtils.isPortraitMobile(context), bottom: false, left: false, right: false, @@ -81,8 +81,8 @@ class MailboxCreatorView extends GetWidget { child: SafeArea( top: false, bottom: false, - left: !BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context), - right: !BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context), + left: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context), + right: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context), child: Column(children: [ _buildAppBar(context), const Divider(color: AppColor.colorDividerDestinationPicker, height: 1), @@ -162,8 +162,8 @@ class MailboxCreatorView extends GetWidget { const SizedBox(width: 12), Obx(() => SvgPicture.asset( controller.selectedMailbox.value?.getMailboxIcon(_imagePaths) ?? _imagePaths.icFolderMailbox, - width: BuildUtils.isWeb ? 20 : 24, - height: BuildUtils.isWeb ? 20 : 24, + width: PlatformInfo.isWeb ? 20 : 24, + height: PlatformInfo.isWeb ? 20 : 24, fit: BoxFit.fill)), const SizedBox(width: 12), Expanded(child: Obx(() => Text( @@ -192,7 +192,7 @@ class MailboxCreatorView extends GetWidget { } double _getWidthView(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (_responsiveUtils.isMobile(context)) { return double.infinity; } else { @@ -209,7 +209,7 @@ class MailboxCreatorView extends GetWidget { } double _getHeightView(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (_responsiveUtils.isMobile(context)) { return double.infinity; } else { @@ -235,7 +235,7 @@ class MailboxCreatorView extends GetWidget { } EdgeInsets _getMarginView(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (_responsiveUtils.isMobile(context)) { return EdgeInsets.zero; } else { @@ -260,7 +260,7 @@ class MailboxCreatorView extends GetWidget { } BorderRadius _getRadiusView(BuildContext context) { - if (!BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context)) { + if (PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context)) { return BorderRadius.zero; } else if (_responsiveUtils.isMobile(context)) { return const BorderRadius.only( diff --git a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart index 6208efcd0..11d67ab44 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/advanced_filter_controller.dart @@ -64,7 +64,7 @@ class AdvancedFilterController extends BaseController { @override void onReady() { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { Future.delayed( const Duration(milliseconds: 500), () => _checkContactPermission()); @@ -136,7 +136,7 @@ class AdvancedFilterController extends BaseController { session, mailboxIdSelected: searchController.searchEmailFilter.value.mailbox?.id); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogDestinationPicker( context: context, arguments: arguments, diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index f3f50292b..3085ac339 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -455,7 +455,7 @@ class MailboxDashBoardController extends ReloadableController { getAllSendingEmails(); _storeSessionAction(sessionCurrent!); } - if (!BuildUtils.isWeb && !_notificationManager.isNotificationClickedOnTerminate) { + if (PlatformInfo.isMobile && !_notificationManager.isNotificationClickedOnTerminate) { _handleClickLocalNotificationOnTerminated(); } else { dispatchRoute(DashboardRoutes.thread); @@ -539,7 +539,7 @@ class MailboxDashBoardController extends ReloadableController { void openEmailDetailedView(PresentationEmail presentationEmail) { setSelectedEmail(presentationEmail); dispatchRoute(DashboardRoutes.emailDetailed); - if (BuildUtils.isWeb && presentationEmail.routeWeb != null) { + if (PlatformInfo.isWeb && presentationEmail.routeWeb != null) { RouteUtils.updateRouteOnBrowser( 'Email-${presentationEmail.id?.id.value ?? ''}', presentationEmail.routeWeb! @@ -585,7 +585,7 @@ class MailboxDashBoardController extends ReloadableController { } bool _searchInsideEmailDetailedViewIsActive(BuildContext context) { - return BuildUtils.isWeb + return PlatformInfo.isWeb && _responsiveUtils.isDesktop(context) && dashboardRoute.value == DashboardRoutes.emailDetailed; } @@ -792,7 +792,7 @@ class MailboxDashBoardController extends ReloadableController { sessionCurrent, mailboxIdSelected: currentMailbox.mailboxId); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogDestinationPicker( context: context, arguments: arguments, @@ -1625,7 +1625,7 @@ class MailboxDashBoardController extends ReloadableController { void handleOnForegroundGained() { log('MailboxDashBoardController::handleOnForegroundGained():'); - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { _updateTheme(); } refreshActionWhenBackToApp(); diff --git a/lib/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart b/lib/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart index 4bc9c5f0f..c64ff856c 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/views/text/slogan_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:external_app_launcher/external_app_launcher.dart'; import 'package:flutter/material.dart'; import 'package:get/get_core/get_core.dart'; @@ -35,7 +35,7 @@ class AppListDashboardItem extends StatelessWidget { } void _openApp(BuildContext context, LinagoraApp app) async { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (await launcher.canLaunchUrl(app.appUri)) { await launcher.launchUrl(app.appUri); } diff --git a/lib/features/manage_account/data/datasource_impl/identity_data_source_impl.dart b/lib/features/manage_account/data/datasource_impl/identity_data_source_impl.dart index bce58bc5c..9bdb816f2 100644 --- a/lib/features/manage_account/data/datasource_impl/identity_data_source_impl.dart +++ b/lib/features/manage_account/data/datasource_impl/identity_data_source_impl.dart @@ -6,7 +6,7 @@ import 'package:core/presentation/utils/html_transformer/dom/image_transformers. import 'package:core/presentation/utils/html_transformer/dom/script_transformers.dart'; import 'package:core/presentation/utils/html_transformer/html_transform.dart'; import 'package:core/presentation/utils/html_transformer/transform_configuration.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; @@ -63,7 +63,7 @@ class IdentityDataSourceImpl extends IdentityDataSource { const BlockCodeTransformer(), const AddTargetBlankInTagATransformer(), const ImageTransformer(), - if (BuildUtils.isWeb) const AddTooltipLinkTransformer() + if (PlatformInfo.isWeb) const AddTooltipLinkTransformer() ])); return signatureUnescape; }).catchError(_exceptionThrower.throwException); diff --git a/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart b/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart index 0018f3bbd..2a64cff7b 100644 --- a/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart +++ b/lib/features/manage_account/presentation/email_rules/email_rules_controller.dart @@ -6,7 +6,7 @@ import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart'; import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -88,7 +88,7 @@ class EmailRulesController extends BaseController { if (accountId != null && session != null) { final arguments = RulesFilterCreatorArguments(accountId, session); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogRuleFilterCreator( context: context, arguments: arguments, @@ -140,7 +140,7 @@ class EmailRulesController extends BaseController { actionType: CreatorActionType.edit, tMailRule: rule); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogRuleFilterCreator( context: context, arguments: arguments, diff --git a/lib/features/manage_account/presentation/email_rules/widgets/email_rule_bottom_sheet_action_tile_builder.dart b/lib/features/manage_account/presentation/email_rules/widgets/email_rule_bottom_sheet_action_tile_builder.dart index 4ec29bd89..2d8302259 100644 --- a/lib/features/manage_account/presentation/email_rules/widgets/email_rule_bottom_sheet_action_tile_builder.dart +++ b/lib/features/manage_account/presentation/email_rules/widgets/email_rule_bottom_sheet_action_tile_builder.dart @@ -30,7 +30,7 @@ class EmailRuleBottomSheetActionTileBuilder return Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( diff --git a/lib/features/manage_account/presentation/forward/widgets/email_forward_item_widget.dart b/lib/features/manage_account/presentation/forward/widgets/email_forward_item_widget.dart index d3093bee9..6afd7cad1 100644 --- a/lib/features/manage_account/presentation/forward/widgets/email_forward_item_widget.dart +++ b/lib/features/manage_account/presentation/forward/widgets/email_forward_item_widget.dart @@ -4,7 +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:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -39,7 +39,7 @@ class EmailForwardItemWidget extends StatelessWidget { color: Colors.transparent, child: InkWell( onLongPress: () { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { onSelectRecipientCallback?.call(recipientForward); } }, diff --git a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart index 00ac91354..6e0d49a97 100644 --- a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart +++ b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart @@ -16,7 +16,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visib import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/utils/mailbox_visibility_utils.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_folder_tile_builder.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_header_widget.dart'; -import 'package:tmail_ui_user/main/utils/app_utils.dart'; class MailboxVisibilityView extends GetWidget with AppLoaderMixin, @@ -138,11 +137,7 @@ class MailboxVisibilityView extends GetWidget context, key: const Key('children_tree_mailbox_child'), isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, - isDirectionRTL: AppUtils.isDirectionRTL(context), - paddingChild: EdgeInsets.only( - left: AppUtils.isDirectionRTL(context) ? 0 : 10, - right: AppUtils.isDirectionRTL(context) ? 10 : 0, - ), + paddingChild: const EdgeInsetsDirectional.only(start: 10), parent: MailBoxVisibilityFolderTileBuilder( _imagePaths, mailboxNode, diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart index d67623824..f901addb3 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_controller.dart @@ -290,7 +290,7 @@ class ManageAccountDashBoardController extends ReloadableController { } Future backButtonPressedCallbackAction(BuildContext context) async { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { backToMailboxDashBoard(context); } return false; diff --git a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart index 2415428d2..2aa808d5c 100644 --- a/lib/features/manage_account/presentation/manage_account_dashboard_view.dart +++ b/lib/features/manage_account/presentation/manage_account_dashboard_view.dart @@ -5,7 +5,7 @@ import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/image/avatar_builder.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart'; import 'package:core/presentation/views/text/slogan_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/user_setting_popup_menu_mixin.dart'; @@ -87,8 +87,8 @@ class ManageAccountDashBoardView extends GetWidget { SettingsFirstLevelView({Key? key}) : super(key: key); @@ -21,16 +20,11 @@ class SettingsFirstLevelView extends GetWidget { Widget build(BuildContext context) { return SingleChildScrollView( child: Column(children: [ - Obx(() => Padding( + Obx(() => UserInformationWidgetBuilder( + _imagePaths, + controller.manageAccountDashboardController.userProfile.value, padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils), - child: UserInformationWidgetBuilder( - _imagePaths, - controller.manageAccountDashboardController.userProfile.value, - titlePadding: EdgeInsets.only( - left: AppUtils.isDirectionRTL(context) ? 0 : 16, - right: AppUtils.isDirectionRTL(context) ? 16 : 0 - )) - )), + titlePadding: const EdgeInsetsDirectional.only(start: 16))), Divider( color: AppColor.colorDividerComposer, height: 1, diff --git a/lib/features/manage_account/presentation/menu/settings/settings_view.dart b/lib/features/manage_account/presentation/menu/settings/settings_view.dart index a7937942c..10c23d755 100644 --- a/lib/features/manage_account/presentation/menu/settings/settings_view.dart +++ b/lib/features/manage_account/presentation/menu/settings/settings_view.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/resources/image_paths.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/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -50,8 +50,8 @@ class SettingsView extends GetWidget { if (controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsValid == true) { return VacationNotificationMessageWidget( margin: const EdgeInsets.only( - left: BuildUtils.isWeb ? 24 : 16, - right: BuildUtils.isWeb ? 24 : 16, + left: PlatformInfo.isWeb ? 24 : 16, + right: PlatformInfo.isWeb ? 24 : 16, top: 16), fromAccountDashBoard: true, vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!, @@ -64,8 +64,8 @@ class SettingsView extends GetWidget { && controller.manageAccountDashboardController.inVacationSettings()) { return VacationNotificationMessageWidget( margin: const EdgeInsets.only( - left: BuildUtils.isWeb ? 24 : 16, - right: BuildUtils.isWeb ? 24 : 16, + left: PlatformInfo.isWeb ? 24 : 16, + right: PlatformInfo.isWeb ? 24 : 16, top: 16), fromAccountDashBoard: true, vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!, diff --git a/lib/features/manage_account/presentation/menu/settings_utils.dart b/lib/features/manage_account/presentation/menu/settings_utils.dart index b6c7a38d0..6e76620bc 100644 --- a/lib/features/manage_account/presentation/menu/settings_utils.dart +++ b/lib/features/manage_account/presentation/menu/settings_utils.dart @@ -1,6 +1,6 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:tmail_ui_user/main/utils/app_utils.dart'; @@ -32,7 +32,7 @@ class SettingsUtils { } static EdgeInsets getMarginViewForSettingDetails(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (responsiveUtils.isDesktop(context)) { return const EdgeInsets.all(16); } else if (responsiveUtils.isTabletLarge(context) || diff --git a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart index 88159ce47..fad71774f 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart @@ -6,7 +6,7 @@ import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -152,7 +152,7 @@ class IdentitiesController extends BaseController { if (accountId != null && session != null && userProfile != null) { final arguments = IdentityCreatorArguments(accountId, session, userProfile); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogIdentityCreator( context: context, arguments: arguments, @@ -277,7 +277,7 @@ class IdentitiesController extends BaseController { identity: identity, actionType: IdentityActionType.edit); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogIdentityCreator( context: context, arguments: arguments, diff --git a/lib/features/manage_account/presentation/profiles/identities/widgets/delete_identity_dialog_builder.dart b/lib/features/manage_account/presentation/profiles/identities/widgets/delete_identity_dialog_builder.dart index a4428349e..a6e6e9fe3 100644 --- a/lib/features/manage_account/presentation/profiles/identities/widgets/delete_identity_dialog_builder.dart +++ b/lib/features/manage_account/presentation/profiles/identities/widgets/delete_identity_dialog_builder.dart @@ -26,7 +26,7 @@ class DeleteIdentityDialogBuilder extends StatelessWidget { responsiveUtils: responsiveUtils, mobile: (_buildDeleteDialog(context) ..alignment(Alignment.bottomCenter) - ..outsideDialogPadding(const EdgeInsets.only(left: 0, right: 0, bottom: BuildUtils.isWeb ? 42 : 16)) + ..outsideDialogPadding(const EdgeInsets.only(left: 0, right: 0, bottom: PlatformInfo.isWeb ? 42 : 16)) ..widthDialog(MediaQuery.of(context).size.width - 16) ..heightDialog(280)) .build(), @@ -36,7 +36,7 @@ class DeleteIdentityDialogBuilder extends StatelessWidget { landscapeTablet: _buildDeleteDialog(context).build(), desktop: _buildDeleteDialog(context).build()); - return BuildUtils.isWeb + return PlatformInfo.isWeb ? PointerInterceptor(child: deleteDialogBuilder) : deleteDialogBuilder; } diff --git a/lib/features/manage_account/presentation/profiles/identities/widgets/signature_builder.dart b/lib/features/manage_account/presentation/profiles/identities/widgets/signature_builder.dart index 20f932903..30dcf1d1e 100644 --- a/lib/features/manage_account/presentation/profiles/identities/widgets/signature_builder.dart +++ b/lib/features/manage_account/presentation/profiles/identities/widgets/signature_builder.dart @@ -1,7 +1,7 @@ import 'package:core/presentation/views/html_viewer/html_content_viewer_on_web_widget.dart'; import 'package:core/presentation/views/html_viewer/html_content_viewer_widget.dart'; import 'package:core/presentation/views/html_viewer/html_viewer_controller_for_web.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:tmail_ui_user/main/utils/app_utils.dart'; @@ -36,7 +36,7 @@ class SignatureBuilder extends StatelessWidget { Widget _buildSignature(BuildContext context, double width, double height) { if (signatureSelected.isNotEmpty) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return HtmlContentViewerOnWeb( contentHtml: signatureSelected, widthContent: width, diff --git a/lib/features/manage_account/presentation/vacation/vacation_controller.dart b/lib/features/manage_account/presentation/vacation/vacation_controller.dart index 04fb962fa..514f07f0f 100644 --- a/lib/features/manage_account/presentation/vacation/vacation_controller.dart +++ b/lib/features/manage_account/presentation/vacation/vacation_controller.dart @@ -118,7 +118,7 @@ class VacationController extends BaseController { messageTextController.text = newVacation.messagePlainText ?? ''; subjectTextController.text = newVacation.subject ?? ''; updateMessageHtmlText(newVacation.messageHtmlText ?? ''); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { _richTextControllerForWeb.editorController.setText(newVacation.messageHtmlText ?? ''); } else { richTextControllerForMobile.htmlEditorApi?.setText(newVacation.messageHtmlText ?? ''); @@ -264,7 +264,7 @@ class VacationController extends BaseController { } final messagePlainText = messageTextController.text; - final messageHtmlText = (BuildUtils.isWeb ? _vacationMessageHtmlText : await _getMessageHtmlText()) ?? ''; + final messageHtmlText = (PlatformInfo.isWeb ? _vacationMessageHtmlText : await _getMessageHtmlText()) ?? ''; if (messagePlainText.isEmpty && messageHtmlText.isEmpty && context.mounted) { if (currentOverlayContext != null && currentContext != null) { _appToast.showToastErrorMessage( @@ -322,7 +322,7 @@ class VacationController extends BaseController { void updateMessageHtmlText(String? text) => _vacationMessageHtmlText = text; Future? _getMessageHtmlText() { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _richTextControllerForWeb.editorController.getText(); } else { return richTextControllerForMobile.htmlEditorApi?.getText(); @@ -330,7 +330,7 @@ class VacationController extends BaseController { } void selectVacationMessageType(BuildContext context, VacationMessageType newMessageType) { - if (newMessageType == VacationMessageType.plainText && !BuildUtils.isWeb) { + if (newMessageType == VacationMessageType.plainText && PlatformInfo.isMobile) { _storeMessageHtmlTextOnMobile(); } clearFocusEditor(context); @@ -343,7 +343,7 @@ class VacationController extends BaseController { } void clearFocusEditor(BuildContext context) { - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { richTextControllerForMobile.htmlEditorApi?.unfocus(); } KeyboardUtils.hideKeyboard(context); diff --git a/lib/features/manage_account/presentation/vacation/vacation_view.dart b/lib/features/manage_account/presentation/vacation/vacation_view.dart index ab185c246..f729ff7d6 100644 --- a/lib/features/manage_account/presentation/vacation/vacation_view.dart +++ b/lib/features/manage_account/presentation/vacation/vacation_view.dart @@ -32,7 +32,7 @@ class VacationView extends GetWidget with RichTextButtonMixi @override Widget build(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _buildVacationFormView(context); } else { return KeyboardRichText( @@ -394,7 +394,7 @@ class VacationView extends GetWidget with RichTextButtonMixi padding: const EdgeInsets.only(left: 12, right: 12, top: 12), child: Column(children: [ _buildMessageHtmlTextEditor(context), - if (BuildUtils.isWeb) + if (PlatformInfo.isWeb) Center(child: Obx(() { return PointerInterceptor( child: buildToolbarRichTextForWeb( @@ -428,7 +428,7 @@ class VacationView extends GetWidget with RichTextButtonMixi } Widget _buildMessageHtmlTextEditor(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return html_editor_browser.HtmlEditor( key: const Key('vacation_message_html_text_editor_web'), controller: controller.richTextControllerForWeb.editorController, diff --git a/lib/features/push_notification/presentation/listener/email_change_listener.dart b/lib/features/push_notification/presentation/listener/email_change_listener.dart index c02c45d86..c484bd777 100644 --- a/lib/features/push_notification/presentation/listener/email_change_listener.dart +++ b/lib/features/push_notification/presentation/listener/email_change_listener.dart @@ -5,7 +5,7 @@ import 'package:core/data/network/config/dynamic_url_interceptors.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; @@ -102,7 +102,7 @@ class EmailChangeListener extends ChangeListener { _handleRemoveNotificationWhenEmailMarkAsRead(action.newState, action.accountId, action.session); } _synchronizeEmailOnForegroundAction(action.newState); - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { _getNewReceiveEmailFromNotificationAction(action.session, action.accountId, action.newState); } } else if (action is PushNotificationAction) { @@ -134,7 +134,7 @@ class EmailChangeListener extends ChangeListener { _userName = userName; log('EmailChangeListener::_pushNotificationAction():newState: $newState'); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { _storeEmailDeliveryStateAction(accountId, userName, _newStateEmailDelivery!); } else { if (Platform.isAndroid) { diff --git a/lib/features/push_notification/presentation/utils/fcm_utils.dart b/lib/features/push_notification/presentation/utils/fcm_utils.dart index 36e4f8551..b72057433 100644 --- a/lib/features/push_notification/presentation/utils/fcm_utils.dart +++ b/lib/features/push_notification/presentation/utils/fcm_utils.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; import 'package:fcm/model/type_name.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; @@ -81,7 +81,7 @@ class FcmUtils { String get platformOS { var platformName = ''; - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { platformName = 'Web'; } else { if (Platform.isAndroid) { @@ -109,5 +109,5 @@ class FcmUtils { return deviceId; } - bool get isMobileAndroid => !BuildUtils.isWeb && Platform.isAndroid; + bool get isMobileAndroid => PlatformInfo.isMobile && Platform.isAndroid; } \ No newline at end of file diff --git a/lib/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart b/lib/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart index 0c28c12b5..6edced795 100644 --- a/lib/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart +++ b/lib/features/rules_filter_creator/presentation/rules_filter_creator_controller.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; @@ -223,7 +223,7 @@ class RulesFilterCreatorController extends BaseMailboxController { MailboxActions.selectForRuleAction, _session); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogDestinationPicker( context: context, arguments: arguments, @@ -306,7 +306,7 @@ class RulesFilterCreatorController extends BaseMailboxController { _listEmailRule ?? [], newTMailRule); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onCreatedRuleFilterCallback?.call(ruleFilterRequest); } else { popBack(result: ruleFilterRequest); @@ -316,7 +316,7 @@ class RulesFilterCreatorController extends BaseMailboxController { _listEmailRule?.withIds ?? [], newTMailRule); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onCreatedRuleFilterCallback?.call(ruleFilterRequest); } else { popBack(result: ruleFilterRequest); @@ -344,7 +344,7 @@ class RulesFilterCreatorController extends BaseMailboxController { _clearAll(); KeyboardUtils.hideKeyboard(context); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { onDismissRuleFilterCreator?.call(); } else { popBack(); diff --git a/lib/features/rules_filter_creator/presentation/rules_filter_creator_view.dart b/lib/features/rules_filter_creator/presentation/rules_filter_creator_view.dart index e4885f917..7311a4d68 100644 --- a/lib/features/rules_filter_creator/presentation/rules_filter_creator_view.dart +++ b/lib/features/rules_filter_creator/presentation/rules_filter_creator_view.dart @@ -47,7 +47,7 @@ class RuleFilterCreatorView extends GetWidget { child: ResponsiveWidget( responsiveUtils: _responsiveUtils, mobile: Scaffold( - backgroundColor: BuildUtils.isWeb + backgroundColor: PlatformInfo.isWeb ? Colors.black.withAlpha(24) : Colors.black38, body: GestureDetector( @@ -62,7 +62,7 @@ class RuleFilterCreatorView extends GetWidget { topLeft: Radius.circular(16), topRight: Radius.circular(16)), color: Colors.white), - margin: const EdgeInsets.only(top: BuildUtils.isWeb ? 70 : 0), + margin: const EdgeInsets.only(top: PlatformInfo.isWeb ? 70 : 0), child: ClipRRect( borderRadius: const BorderRadius.only( topLeft: Radius.circular(16), diff --git a/lib/features/rules_filter_creator/presentation/widgets/rule_action_bottom_sheet_action_tile_builder.dart b/lib/features/rules_filter_creator/presentation/widgets/rule_action_bottom_sheet_action_tile_builder.dart index b3871d1cc..2c6c6b25e 100644 --- a/lib/features/rules_filter_creator/presentation/widgets/rule_action_bottom_sheet_action_tile_builder.dart +++ b/lib/features/rules_filter_creator/presentation/widgets/rule_action_bottom_sheet_action_tile_builder.dart @@ -33,7 +33,7 @@ class RuleActionSheetActionTileBuilder return Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( diff --git a/lib/features/rules_filter_creator/presentation/widgets/rule_condition_comparator_bottom_sheet_action_tile_builder.dart b/lib/features/rules_filter_creator/presentation/widgets/rule_condition_comparator_bottom_sheet_action_tile_builder.dart index 3e871afa6..c334c9b26 100644 --- a/lib/features/rules_filter_creator/presentation/widgets/rule_condition_comparator_bottom_sheet_action_tile_builder.dart +++ b/lib/features/rules_filter_creator/presentation/widgets/rule_condition_comparator_bottom_sheet_action_tile_builder.dart @@ -33,7 +33,7 @@ class RuleConditionComparatorSheetActionTileBuilder return Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( diff --git a/lib/features/rules_filter_creator/presentation/widgets/rule_condition_field_bottom_sheet_action_tile_builder.dart b/lib/features/rules_filter_creator/presentation/widgets/rule_condition_field_bottom_sheet_action_tile_builder.dart index aef61c31e..4136e3d36 100644 --- a/lib/features/rules_filter_creator/presentation/widgets/rule_condition_field_bottom_sheet_action_tile_builder.dart +++ b/lib/features/rules_filter_creator/presentation/widgets/rule_condition_field_bottom_sheet_action_tile_builder.dart @@ -33,7 +33,7 @@ class RuleConditionFieldSheetActionTileBuilder return Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( diff --git a/lib/features/search/email/presentation/search_email_controller.dart b/lib/features/search/email/presentation/search_email_controller.dart index ce6e276c2..66d995829 100644 --- a/lib/features/search/email/presentation/search_email_controller.dart +++ b/lib/features/search/email/presentation/search_email_controller.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; import 'package:debounce_throttle/debounce_throttle.dart'; import 'package:flutter/material.dart'; @@ -483,7 +483,7 @@ class SearchEmailController extends BaseController mailboxDashBoardController.sessionCurrent, mailboxIdSelected: mailbox?.id); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogDestinationPicker( context: context, arguments: arguments, @@ -526,7 +526,7 @@ class SearchEmailController extends BaseController final listContactSelected = simpleSearchFilter.value.getContactApplied(prefixEmailAddress); final arguments = ContactArguments(accountId!, session!, listContactSelected); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogContactView( context: context, arguments: arguments, diff --git a/lib/features/search/email/presentation/search_email_view.dart b/lib/features/search/email/presentation/search_email_view.dart index 08259ad1e..6be31d523 100644 --- a/lib/features/search/email/presentation/search_email_view.dart +++ b/lib/features/search/email/presentation/search_email_view.dart @@ -6,7 +6,7 @@ import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/background/background_widget_builder.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/text/text_field_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:core/utils/direction_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -440,7 +440,7 @@ class SearchEmailView extends GetWidget } double? _getItemExtent(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _responsiveUtils.isDesktop(context) ? 52 : 95; } else { return null; diff --git a/lib/features/search/email/presentation/utils/search_email_utils.dart b/lib/features/search/email/presentation/utils/search_email_utils.dart index 9dad12161..ed10efeee 100644 --- a/lib/features/search/email/presentation/utils/search_email_utils.dart +++ b/lib/features/search/email/presentation/utils/search_email_utils.dart @@ -1,11 +1,11 @@ import 'package:core/presentation/utils/responsive_utils.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; class SearchEmailUtils { static EdgeInsets getPaddingAppBar(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return const EdgeInsets.symmetric(horizontal: 16); } else { if (responsiveUtils.isScreenWithShortestSide(context)) { @@ -17,7 +17,7 @@ class SearchEmailUtils { } static EdgeInsets getPaddingSearchSuggestionList(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { + if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { return const EdgeInsets.symmetric(horizontal: 32, vertical: 12); } else { return const EdgeInsets.symmetric(horizontal: 16, vertical: 12); @@ -25,7 +25,7 @@ class SearchEmailUtils { } static EdgeInsets getPaddingShowAllResultButton(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { + if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { return const EdgeInsets.symmetric(horizontal: 32, vertical: 12); } else { return const EdgeInsets.symmetric(horizontal: 16, vertical: 12); @@ -33,7 +33,7 @@ class SearchEmailUtils { } static EdgeInsets getPaddingSearchRecentTitle(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { + if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { return const EdgeInsets.symmetric(horizontal: 32, vertical: 8); } else { return const EdgeInsets.symmetric(horizontal: 16, vertical: 8); @@ -41,7 +41,7 @@ class SearchEmailUtils { } static EdgeInsets getPaddingListRecentSearch(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { + if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { return const EdgeInsets.symmetric(horizontal: 32, vertical: 12); } else { return const EdgeInsets.symmetric(horizontal: 16, vertical: 12); @@ -49,7 +49,7 @@ class SearchEmailUtils { } static EdgeInsets getPaddingSearchFilterButton(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { + if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { return const EdgeInsets.all(12); } else { return const EdgeInsets.symmetric(vertical: 12, horizontal: 16); @@ -57,7 +57,7 @@ class SearchEmailUtils { } static EdgeInsets getMarginSearchFilterButton(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { + if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { return const EdgeInsets.symmetric(horizontal: 20); } else { return EdgeInsets.zero; @@ -65,7 +65,7 @@ class SearchEmailUtils { } static EdgeInsets getPaddingSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return const EdgeInsets.only(left: 10); } else { if (responsiveUtils.isScreenWithShortestSide(context)) { @@ -77,7 +77,7 @@ class SearchEmailUtils { } static EdgeInsets getPaddingDividerSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return const EdgeInsets.symmetric(horizontal: 16); } else { if (responsiveUtils.isScreenWithShortestSide(context)) { diff --git a/lib/features/search/email/presentation/widgets/email_receive_time_cupertino_action_sheet_action_builder.dart b/lib/features/search/email/presentation/widgets/email_receive_time_cupertino_action_sheet_action_builder.dart index abbedcce6..655bd363d 100644 --- a/lib/features/search/email/presentation/widgets/email_receive_time_cupertino_action_sheet_action_builder.dart +++ b/lib/features/search/email/presentation/widgets/email_receive_time_cupertino_action_sheet_action_builder.dart @@ -1,6 +1,6 @@ import 'package:core/presentation/views/bottom_popup/cupertino_action_sheet_no_icon_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; @@ -32,7 +32,7 @@ class EmailReceiveTimeCupertinoActionSheetActionBuilder return Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( key: key, child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart index 4935926ec..b186f590d 100644 --- a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart +++ b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart @@ -7,7 +7,7 @@ import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -614,7 +614,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa void closeSearchView(BuildContext context) { KeyboardUtils.hideKeyboard(context); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { dashboardController.searchMailboxActivated.value = false; clearAllTextInputSearchForm(); SearchMailboxBindings().disposeBindings(); diff --git a/lib/features/search/mailbox/presentation/search_mailbox_view.dart b/lib/features/search/mailbox/presentation/search_mailbox_view.dart index dbaa2ffc5..ea2b6b726 100644 --- a/lib/features/search/mailbox/presentation/search_mailbox_view.dart +++ b/lib/features/search/mailbox/presentation/search_mailbox_view.dart @@ -2,7 +2,7 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/text/text_field_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:core/utils/direction_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -36,7 +36,7 @@ class SearchMailboxView extends GetWidget return Scaffold( body: GestureDetector( onTap: () => FocusScope.of(context).unfocus(), - child: BuildUtils.isWeb + child: PlatformInfo.isWeb ? PointerInterceptor(child: _buildSearchBody(context)) : SafeArea(child: _buildSearchBody(context)), ), diff --git a/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart b/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart index 8024650c6..b457e6633 100644 --- a/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart +++ b/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart @@ -4,7 +4,7 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:focused_menu_custom/focused_menu.dart'; @@ -51,7 +51,7 @@ class _MailboxSearchedItemBuilderState extends State @override Widget build(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return DragTarget>( builder: (_, __, ___) => _buildMailboxItem(context), onAccept: (emails) { @@ -64,7 +64,7 @@ class _MailboxSearchedItemBuilderState extends State } Widget _buildMailboxItem(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return InkWell( onTap: _onTapMailboxAction, onHover: (value) => setState(() => isHoverItem = value), diff --git a/lib/features/thread/data/network/thread_isolate_worker.dart b/lib/features/thread/data/network/thread_isolate_worker.dart index e87bd9067..2b8c61757 100644 --- a/lib/features/thread/data/network/thread_isolate_worker.dart +++ b/lib/features/thread/data/network/thread_isolate_worker.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; @@ -31,7 +31,7 @@ class ThreadIsolateWorker { MailboxId mailboxId, Future Function(List? newDestroyed) updateDestroyedEmailCache, ) async { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _emptyTrashFolderOnWeb(session, accountId, mailboxId, updateDestroyedEmailCache); } else { final result = await _isolateExecutor.execute( diff --git a/lib/features/thread/domain/usecases/get_email_by_id_interactor.dart b/lib/features/thread/domain/usecases/get_email_by_id_interactor.dart index 608f3a8d4..267329851 100644 --- a/lib/features/thread/domain/usecases/get_email_by_id_interactor.dart +++ b/lib/features/thread/domain/usecases/get_email_by_id_interactor.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; @@ -29,7 +29,7 @@ class GetEmailByIdInteractor { ) async* { try { yield Right(GetEmailByIdLoading()); - if (!BuildUtils.isWeb) { + if (PlatformInfo.isMobile) { yield* _tryToGetEmailFromCache(session, accountId, emailId, properties: properties); } else { yield* _getEmailByIdFromServer(session, accountId, emailId, properties: properties); diff --git a/lib/features/thread/presentation/extensions/list_presentation_email_extensions.dart b/lib/features/thread/presentation/extensions/list_presentation_email_extensions.dart index 5a4a44110..c88e21449 100644 --- a/lib/features/thread/presentation/extensions/list_presentation_email_extensions.dart +++ b/lib/features/thread/presentation/extensions/list_presentation_email_extensions.dart @@ -1,5 +1,5 @@ -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/email/presentation_email.dart'; import 'package:model/extensions/presentation_email_extension.dart'; @@ -41,7 +41,7 @@ extension ListPresentationEmailExtensions on List { bool isSearchEmailRunning = false, SearchQuery? searchQuery, }) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { final route = RouteUtils.generateRouteBrowser( AppRoutes.dashboard, NavigationRouter( diff --git a/lib/features/thread/presentation/mixin/base_email_item_tile.dart b/lib/features/thread/presentation/mixin/base_email_item_tile.dart index c42f6aeed..aab1d6c6f 100644 --- a/lib/features/thread/presentation/mixin/base_email_item_tile.dart +++ b/lib/features/thread/presentation/mixin/base_email_item_tile.dart @@ -5,7 +5,7 @@ import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/views/text/rich_text_builder.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -250,7 +250,7 @@ mixin BaseEmailItemTile { TextStyle? textStyle } ) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return Container( color: Colors.transparent, width: iconSize ?? 48, diff --git a/lib/features/thread/presentation/mixin/email_action_controller.dart b/lib/features/thread/presentation/mixin/email_action_controller.dart index c73dc76ba..de80316bc 100644 --- a/lib/features/thread/presentation/mixin/email_action_controller.dart +++ b/lib/features/thread/presentation/mixin/email_action_controller.dart @@ -5,7 +5,7 @@ import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart'; import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -131,7 +131,7 @@ mixin EmailActionController on ViewAsDialogActionMixin { session, mailboxIdSelected: mailboxContain.mailboxId); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { showDialogDestinationPicker( context: context, arguments: arguments, diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index 6ef930108..b3e4b71ac 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -3,7 +3,7 @@ import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -694,7 +694,7 @@ class ThreadController extends BaseController with EmailActionController { } void _updateSearchRouteOnBrowser() { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { final route = RouteUtils.generateRouteBrowser( AppRoutes.dashboard, NavigationRouter( @@ -922,7 +922,7 @@ class ThreadController extends BaseController with EmailActionController { } PresentationEmail generateEmailByPlatform(PresentationEmail currentEmail) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { final route = RouteUtils.generateRouteBrowser( AppRoutes.dashboard, NavigationRouter( diff --git a/lib/features/thread/presentation/thread_view.dart b/lib/features/thread/presentation/thread_view.dart index d66d0baf2..5ba8e4264 100644 --- a/lib/features/thread/presentation/thread_view.dart +++ b/lib/features/thread/presentation/thread_view.dart @@ -86,7 +86,7 @@ class ThreadView extends GetWidget } bool supportVerticalDivider(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _responsiveUtils.isTabletLarge(context); } else { return _responsiveUtils.isDesktop(context) || @@ -101,7 +101,7 @@ class ThreadView extends GetWidget padding: EdgeInsets.symmetric( horizontal: 16, vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0), - margin: const EdgeInsets.only(bottom: !BuildUtils.isWeb ? 16 : 0), + margin: EdgeInsets.only(bottom: PlatformInfo.isMobile ? 16 : 0), child: SearchBarView(_imagePaths, hintTextSearch: AppLocalizations.of(context).search_emails, onOpenSearchViewAction: controller.goToSearchView)); @@ -124,7 +124,7 @@ class ThreadView extends GetWidget Widget _buildListButtonSelectionForMobile(BuildContext context) { return Obx(() { - if ((!BuildUtils.isWeb || (BuildUtils.isWeb && controller.isSelectionEnabled() + if ((PlatformInfo.isMobile || (PlatformInfo.isWeb && controller.isSelectionEnabled() && controller.isSearchActive() && !_responsiveUtils.isDesktop(context))) && controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected.isNotEmpty) { return BottomBarThreadSelectionWidget( @@ -183,7 +183,7 @@ class ThreadView extends GetWidget return Obx(() { if (controller.isAllSearchInActive) { return Container( - padding: BuildUtils.isWeb + padding: PlatformInfo.isWeb ? EdgeInsets.zero : controller.listEmailSelected.isNotEmpty ? const EdgeInsets.only(bottom: 70) : EdgeInsets.zero, child: ComposeFloatingButton( @@ -266,7 +266,7 @@ class ThreadView extends GetWidget Widget _buildListEmail(BuildContext context) { return Container( - margin: BuildUtils.isWeb && _responsiveUtils.isDesktop(context) + margin: PlatformInfo.isWeb && _responsiveUtils.isDesktop(context) ? const EdgeInsets.symmetric(horizontal: 4) : EdgeInsets.zero, alignment: Alignment.center, @@ -463,7 +463,7 @@ class ThreadView extends GetWidget } double? _getItemExtent(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _responsiveUtils.isDesktop(context) ? 52 : 95; } else { return null; diff --git a/lib/features/thread/presentation/widgets/app_action_sheet_action_builder.dart b/lib/features/thread/presentation/widgets/app_action_sheet_action_builder.dart index fed7751fb..543ccf566 100644 --- a/lib/features/thread/presentation/widgets/app_action_sheet_action_builder.dart +++ b/lib/features/thread/presentation/widgets/app_action_sheet_action_builder.dart @@ -24,7 +24,7 @@ class AppActionSheetActionBuilder extends CupertinoActionSheetActionBuilder { return Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( key: key, child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart b/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart index d7856d33f..a9c1d8ddd 100644 --- a/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart +++ b/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart @@ -56,7 +56,7 @@ class AppBarThreadWidgetBuilder extends StatelessWidget { } Widget _buildAppBar(BuildContext context, BoxConstraints constraints) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _selectMode == SelectMode.INACTIVE ? _buildBodyAppBarForWeb(context) : _buildBodyAppBarForWebSelection(context); @@ -400,7 +400,7 @@ class AppBarThreadWidgetBuilder extends StatelessWidget { } double _getXTranslationValues(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _responsiveUtils.isWebDesktop(context) ? -2.0 : -16.0; } else { return _responsiveUtils.isTabletLarge(context) ? 0.0 : -16.0; diff --git a/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart b/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart index 7267e3ef0..2a98a7e3e 100644 --- a/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart +++ b/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart @@ -2,7 +2,7 @@ import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/button/button_builder.dart'; -import 'package:core/utils/build_utils.dart'; +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'; @@ -164,7 +164,7 @@ class BottomBarThreadSelectionWidget extends StatelessWidget{ } bool _isMailboxDashboardSplitView(BuildContext context) { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _responsiveUtils.isTabletLarge(context); } else { return _responsiveUtils.isLandscapeTablet(context) || diff --git a/lib/features/thread/presentation/widgets/filter_message_cupertino_action_sheet_action_builder.dart b/lib/features/thread/presentation/widgets/filter_message_cupertino_action_sheet_action_builder.dart index d444618f4..229663f87 100644 --- a/lib/features/thread/presentation/widgets/filter_message_cupertino_action_sheet_action_builder.dart +++ b/lib/features/thread/presentation/widgets/filter_message_cupertino_action_sheet_action_builder.dart @@ -34,7 +34,7 @@ class FilterMessageCupertinoActionSheetActionBuilder return Container( color: bgColor ?? Colors.white, child: MouseRegion( - cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, + cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, child: CupertinoActionSheetAction( key: key, child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/lib/features/upload/data/network/file_uploader.dart b/lib/features/upload/data/network/file_uploader.dart index 1b074b67b..e085a1ea0 100644 --- a/lib/features/upload/data/network/file_uploader.dart +++ b/lib/features/upload/data/network/file_uploader.dart @@ -7,7 +7,7 @@ import 'package:core/data/network/dio_client.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:dartz/dartz.dart'; import 'package:dio/dio.dart'; import 'package:model/email/attachment.dart'; @@ -33,7 +33,7 @@ class FileUploader { Uri uploadUri, {CancelToken? cancelToken} ) async { - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { return _handleUploadAttachmentActionOnWeb( uploadId, onSendController, diff --git a/lib/main/pages/app_pages.dart b/lib/main/pages/app_pages.dart index 5f9c94c7b..be3f966ed 100644 --- a/lib/main/pages/app_pages.dart +++ b/lib/main/pages/app_pages.dart @@ -66,7 +66,7 @@ class AppPages { () => manage_account_dashboard.ManageAccountDashBoardView()), binding: ManageAccountDashBoardBindings()), unknownRoutePage, - if (!BuildUtils.isWeb) + if (PlatformInfo.isMobile) ...[ GetPage( name: AppRoutes.composer, diff --git a/lib/main/routes/route_utils.dart b/lib/main/routes/route_utils.dart index 31afd4a7a..d39b761d3 100644 --- a/lib/main/routes/route_utils.dart +++ b/lib/main/routes/route_utils.dart @@ -2,7 +2,7 @@ import 'package:core/data/model/query/query_parameter.dart'; import 'package:core/data/network/config/service_path.dart'; import 'package:core/utils/app_logger.dart'; -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; @@ -19,7 +19,7 @@ abstract class RouteUtils { static String generateNavigationRoute(String route, NavigationRouter router) { ServicePath servicePath = ServicePath(route); - if (BuildUtils.isWeb) { + if (PlatformInfo.isWeb) { if (router.emailId != null) { servicePath = servicePath.withPathParameter(router.emailId!.id.value); } diff --git a/lib/main/utils/app_utils.dart b/lib/main/utils/app_utils.dart index f554a1718..929f1143b 100644 --- a/lib/main/utils/app_utils.dart +++ b/lib/main/utils/app_utils.dart @@ -1,4 +1,4 @@ -import 'package:core/utils/build_utils.dart'; +import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:tmail_ui_user/main/utils/app_config.dart'; @@ -27,7 +27,7 @@ class AppUtils { ); } - static String? get fcmVapidPublicKey => BuildUtils.isWeb ? AppConfig.fcmVapidPublicKeyWeb : null; + static String? get fcmVapidPublicKey => PlatformInfo.isWeb ? AppConfig.fcmVapidPublicKeyWeb : null; static bool isDirectionRTL(BuildContext context) { return intl.Bidi.isRtlLanguage(Localizations.localeOf(context).languageCode);