Sync all use PlatformInfo to check platform while runtime

(cherry picked from commit 514fec1f2f4f1ff8a584bf8db7bf3a5537a3e9f8)
This commit is contained in:
dab246
2023-06-15 14:26:04 +07:00
committed by Dat H. Pham
parent 3d019d644a
commit 96145aae7a
88 changed files with 298 additions and 309 deletions
@@ -6,7 +6,7 @@ import 'package:core/data/network/dio_client.dart';
import 'package:core/data/utils/compress_file_utils.dart'; import 'package:core/data/utils/compress_file_utils.dart';
import 'package:core/presentation/extensions/html_extension.dart'; import 'package:core/presentation/extensions/html_extension.dart';
import 'package:core/utils/app_logger.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:dio/dio.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
@@ -55,7 +55,7 @@ class DownloadClient {
return null; return null;
} }
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
final base64Uri = encodeToBase64Uri({ final base64Uri = encodeToBase64Uri({
'bytesData': bytesData, 'bytesData': bytesData,
'mimeType': 'image/$fileExtension', 'mimeType': 'image/$fileExtension',
@@ -1,8 +1,12 @@
import 'dart:convert'; 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/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:dio/dio.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:html/dom.dart'; import 'package:html/dom.dart';
@@ -59,7 +63,7 @@ class ImageTransformer extends DomTransformer {
options: Options(responseType: ResponseType.bytes)); options: Options(responseType: ResponseType.bytes));
if (responseData != null) { if (responseData != null) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return encodeToBase64Uri(responseData); return encodeToBase64Uri(responseData);
} else { } else {
final bytesCompressed = await compressFileUtils.compressBytesDataImage(responseData); final bytesCompressed = await compressFileUtils.compressBytesDataImage(responseData);
+2 -2
View File
@@ -1,6 +1,6 @@
import 'package:core/utils/build_utils.dart'; import 'package:core/utils/platform_info.dart';
class IconUtils { class IconUtils {
static const double defaultIconSize = BuildUtils.isWeb ? 20.0 : 24.0; static const double defaultIconSize = PlatformInfo.isWeb ? 20.0 : 24.0;
} }
@@ -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:flutter/widgets.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -82,7 +82,7 @@ class ResponsiveUtils {
} }
bool hasLeftMenuDrawerActive(BuildContext context) { bool hasLeftMenuDrawerActive(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return isMobile(context) || return isMobile(context) ||
isTablet(context) || isTablet(context) ||
isTabletLarge(context); isTabletLarge(context);
@@ -92,13 +92,13 @@ class ResponsiveUtils {
} }
bool isWebDesktop(BuildContext context) => bool isWebDesktop(BuildContext context) =>
BuildUtils.isWeb && isDesktop(context); PlatformInfo.isWeb && isDesktop(context);
bool isWebNotDesktop(BuildContext context) => bool isWebNotDesktop(BuildContext context) =>
BuildUtils.isWeb && !isDesktop(context); PlatformInfo.isWeb && !isDesktop(context);
bool mailboxDashboardOnlyHasEmailView(BuildContext context) { bool mailboxDashboardOnlyHasEmailView(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return isMobile(context) || isTablet(context); return isMobile(context) || isTablet(context);
} else { } else {
return isPortraitMobile(context) || return isPortraitMobile(context) ||
@@ -108,7 +108,7 @@ class ResponsiveUtils {
} }
bool landscapeTabletSupported(BuildContext context) { bool landscapeTabletSupported(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return isTabletLarge(context); return isTabletLarge(context);
} else { } else {
return !isLandscapeMobile(context) && (isLandscapeTablet(context) || return !isLandscapeMobile(context) && (isLandscapeTablet(context) ||
+4 -3
View File
@@ -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'; import 'package:flutter/material.dart';
class CommonTextStyle { class CommonTextStyle {
@@ -9,9 +10,9 @@ class CommonTextStyle {
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
); );
static const defaultTextOverFlow = BuildUtils.isWeb static const defaultTextOverFlow = PlatformInfo.isWeb
? TextOverflow.fade ? TextOverflow.fade
: TextOverflow.ellipsis; : TextOverflow.ellipsis;
static const defaultSoftWrap = BuildUtils.isWeb ? false : true; static const defaultSoftWrap = PlatformInfo.isWeb ? false : true;
} }
@@ -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/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart';
@@ -60,7 +61,7 @@ class ConfirmationDialogActionSheetBuilder {
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10), padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10),
color: Colors.white, color: Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
child: Text( child: Text(
_messageText ?? '', _messageText ?? '',
@@ -75,7 +76,7 @@ class ConfirmationDialogActionSheetBuilder {
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10), padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10),
color: Colors.white, color: Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
child: RichText(text: TextSpan( child: RichText(text: TextSpan(
style: _styleMessage ?? const TextStyle(fontSize: 14, color: AppColor.colorMessageConfirmDialog), style: _styleMessage ?? const TextStyle(fontSize: 14, color: AppColor.colorMessageConfirmDialog),
@@ -88,7 +89,7 @@ class ConfirmationDialogActionSheetBuilder {
Container( Container(
color: Colors.white, color: Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
child: Text( child: Text(
_confirmText ?? '', _confirmText ?? '',
@@ -99,7 +100,7 @@ class ConfirmationDialogActionSheetBuilder {
), ),
], ],
cancelButton: MouseRegion( cancelButton: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
child: Text( child: Text(
_cancelText ?? '', _cancelText ?? '',
@@ -57,8 +57,7 @@ class TreeViewChild {
final Widget parent; final Widget parent;
final List<Widget> children; final List<Widget> children;
final VoidCallback? onTap; final VoidCallback? onTap;
final EdgeInsets? paddingChild; final EdgeInsetsGeometry? paddingChild;
final bool isDirectionRTL;
TreeViewChild( TreeViewChild(
this.context, this.context,
@@ -68,7 +67,6 @@ class TreeViewChild {
this.isExpanded, this.isExpanded,
this.onTap, this.onTap,
this.paddingChild, this.paddingChild,
this.isDirectionRTL = false,
Key? key, Key? key,
} }
); );
@@ -92,10 +90,7 @@ class TreeViewChild {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: children children: children
.map((child) => Padding( .map((child) => Padding(
padding: paddingChild ?? EdgeInsets.only( padding: paddingChild ?? const EdgeInsetsDirectional.only(start: 20),
left: isDirectionRTL ? 0 : 20,
right: isDirectionRTL ? 20 : 0,
),
child: child child: child
)) ))
.toList() .toList()
@@ -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'; import 'package:flutter/material.dart';
class ResponsiveWidget extends StatelessWidget { class ResponsiveWidget extends StatelessWidget {
@@ -24,7 +25,7 @@ class ResponsiveWidget extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (responsiveUtils.isMobile(context)) { if (responsiveUtils.isMobile(context)) {
return mobile; return mobile;
} }
-2
View File
@@ -6,7 +6,5 @@ abstract class BuildUtils {
static const bool isReleaseMode = kReleaseMode; static const bool isReleaseMode = kReleaseMode;
static const bool isWeb = kIsWeb;
static const bool isProfileMode = kProfileMode; static const bool isProfileMode = kProfileMode;
} }
+2 -2
View File
@@ -1,7 +1,7 @@
import 'dart:io'; import 'dart:io';
import 'package:core/domain/exceptions/download_file_exception.dart'; import 'package:core/domain/exceptions/download_file_exception.dart';
import 'package:core/utils/app_logger.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'; import 'package:path_provider/path_provider.dart';
class FileUtils { class FileUtils {
@@ -11,7 +11,7 @@ class FileUtils {
String? folderPath, String? folderPath,
String? extensionFile String? extensionFile
}) async { }) async {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
String fileDirectory = (await getApplicationDocumentsDirectory()).absolute.path; String fileDirectory = (await getApplicationDocumentsDirectory()).absolute.path;
@@ -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/confirmation_dialog_builder.dart';
import 'package:core/presentation/views/dialog/edit_text_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/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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -378,7 +378,7 @@ abstract class BaseMailboxController extends BaseController {
mailboxIdSelected: mailboxSelected.id mailboxIdSelected: mailboxSelected.id
); );
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -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/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
@@ -26,7 +28,7 @@ mixin PopupContextMenuActionMixin {
Widget buildCancelButton(BuildContext context) { Widget buildCancelButton(BuildContext context) {
return MouseRegion( return MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
child: Text( child: Text(
AppLocalizations.of(context).cancel, AppLocalizations.of(context).cancel,
@@ -7,13 +7,13 @@ typedef OnTapMaterialTextButton = Function();
class MaterialTextButton extends StatelessWidget { class MaterialTextButton extends StatelessWidget {
final String label; final String label;
final OnTapMaterialTextButton onTap; final OnTapMaterialTextButton? onTap;
final double borderRadius; final double borderRadius;
final Color? labelColor; final Color? labelColor;
final double labelSize; final double labelSize;
final FontWeight? labelWeight; final FontWeight? labelWeight;
final TextStyle? customStyle; final TextStyle? customStyle;
final EdgeInsets? padding; final EdgeInsetsGeometry? padding;
final TextOverflow? overflow; final TextOverflow? overflow;
final bool? softWrap; final bool? softWrap;
@@ -3,6 +3,7 @@ import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:core/utils/app_logger.dart'; import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart' as path_provider; import 'package:path_provider/path_provider.dart' as path_provider;
@@ -41,7 +42,7 @@ class HiveCacheConfig {
if (databasePath != null) { if (databasePath != null) {
Hive.init(databasePath); Hive.init(databasePath);
} else { } else {
if (!GetPlatform.isWeb) { if (PlatformInfo.isMobile) {
Directory directory = await path_provider.getApplicationDocumentsDirectory(); Directory directory = await path_provider.getApplicationDocumentsDirectory();
Hive.init(directory.path); Hive.init(directory.path);
} }
@@ -170,7 +170,7 @@ class ComposerController extends BaseController {
Future<String> _getEmailBodyText(BuildContext context, { Future<String> _getEmailBodyText(BuildContext context, {
bool changedEmail = false bool changedEmail = false
}) async { }) async {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
var contentHtml = ''; var contentHtml = '';
if (_responsiveUtils.isWebDesktop(context) && if (_responsiveUtils.isWebDesktop(context) &&
screenDisplayMode.value == ScreenDisplayMode.minimize) { screenDisplayMode.value == ScreenDisplayMode.minimize) {
@@ -223,7 +223,7 @@ class ComposerController extends BaseController {
createFocusNodeInput(); createFocusNodeInput();
scrollControllerEmailAddress.addListener(_scrollControllerEmailAddressListener); scrollControllerEmailAddress.addListener(_scrollControllerEmailAddressListener);
_listenWorker(); _listenWorker();
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
await FkUserAgent.init(); await FkUserAgent.init();
}); });
@@ -237,7 +237,7 @@ class ComposerController extends BaseController {
@override @override
void onReady() { void onReady() {
_initEmail(); _initEmail();
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
Future.delayed(const Duration(milliseconds: 500), _checkContactPermission); Future.delayed(const Duration(milliseconds: 500), _checkContactPermission);
} }
super.onReady(); super.onReady();
@@ -246,7 +246,7 @@ class ComposerController extends BaseController {
@override @override
void onClose() { void onClose() {
_initTextEditor = null; _initTextEditor = null;
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
FkUserAgent.release(); FkUserAgent.release();
} }
super.onClose(); super.onClose();
@@ -289,7 +289,7 @@ class ComposerController extends BaseController {
} else if (success is GetAllIdentitiesSuccess) { } else if (success is GetAllIdentitiesSuccess) {
_handleGetAllIdentitiesSuccess(success); _handleGetAllIdentitiesSuccess(success);
} else if (success is DownloadImageAsBase64Success) { } else if (success is DownloadImageAsBase64Success) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
richTextWebController.insertImage( richTextWebController.insertImage(
InlineImage( InlineImage(
ImageSource.local, ImageSource.local,
@@ -369,7 +369,7 @@ class ComposerController extends BaseController {
subjectEmailInputFocusNode?.addListener(() { subjectEmailInputFocusNode?.addListener(() {
log('ComposerController::createFocusNodeInput():subjectEmailInputFocusNode: ${subjectEmailInputFocusNode?.hasFocus}'); log('ComposerController::createFocusNodeInput():subjectEmailInputFocusNode: ${subjectEmailInputFocusNode?.hasFocus}');
if (subjectEmailInputFocusNode?.hasFocus == true) { if (subjectEmailInputFocusNode?.hasFocus == true) {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
htmlEditorApi?.unfocus(); htmlEditorApi?.unfocus();
} }
_collapseAllRecipient(); _collapseAllRecipient();
@@ -430,7 +430,7 @@ class ComposerController extends BaseController {
uploadController.initializeUploadAttachments( uploadController.initializeUploadAttachments(
arguments.attachments!.listAttachmentsDisplayedOutSide); arguments.attachments!.listAttachmentsDisplayedOutSide);
} }
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
expandModeAttachments.value = ExpandMode.EXPAND; expandModeAttachments.value = ExpandMode.EXPAND;
} }
} }
@@ -1043,7 +1043,7 @@ class ComposerController extends BaseController {
} }
} }
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
mailboxDashBoardController.closeComposerOverlay(); mailboxDashBoardController.closeComposerOverlay();
} else { } else {
if (canPop) popBack(); if (canPop) popBack();
@@ -1379,11 +1379,11 @@ class ComposerController extends BaseController {
break; break;
} }
_closeSuggestionBox(); _closeSuggestionBox();
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
htmlEditorApi?.unfocus(); htmlEditorApi?.unfocus();
} }
} else { } else {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
_collapseAllRecipient(); _collapseAllRecipient();
_autoCreateEmailTag(); _autoCreateEmailTag();
} }
@@ -1399,7 +1399,7 @@ class ComposerController extends BaseController {
} }
bool get _isMobileApp { bool get _isMobileApp {
return !BuildUtils.isWeb return PlatformInfo.isMobile
&& currentContext != null && currentContext != null
&& (_responsiveUtils.isLandscapeMobile(currentContext!) || _responsiveUtils.isPortraitMobile(currentContext!)); && (_responsiveUtils.isLandscapeMobile(currentContext!) || _responsiveUtils.isPortraitMobile(currentContext!));
} }
@@ -1455,7 +1455,7 @@ class ComposerController extends BaseController {
} }
Future<void> _applySignature(String signature) async { Future<void> _applySignature(String signature) async {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
richTextWebController.editorController.insertSignature(signature); richTextWebController.editorController.insertSignature(signature);
} else { } else {
await htmlEditorApi?.insertSignature(signature); await htmlEditorApi?.insertSignature(signature);
@@ -1464,7 +1464,7 @@ class ComposerController extends BaseController {
Future<void> _removeSignature() async { Future<void> _removeSignature() async {
log('ComposerController::_removeSignature():'); log('ComposerController::_removeSignature():');
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
richTextWebController.editorController.removeSignature(); richTextWebController.editorController.removeSignature();
} else { } else {
await htmlEditorApi?.removeSignature(); await htmlEditorApi?.removeSignature();
@@ -1482,7 +1482,7 @@ class ComposerController extends BaseController {
final inlineImage = await _selectFromFile(); final inlineImage = await _selectFromFile();
log('ComposerController::insertImage(): $inlineImage'); log('ComposerController::insertImage(): $inlineImage');
if (inlineImage != null) { if (inlineImage != null) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
_insertImageOnWeb(inlineImage); _insertImageOnWeb(inlineImage);
} else { } else {
_insertImageOnMobileAndTablet(inlineImage); _insertImageOnMobileAndTablet(inlineImage);
@@ -1497,13 +1497,13 @@ class ComposerController extends BaseController {
Future<InlineImage?> _selectFromFile() async { Future<InlineImage?> _selectFromFile() async {
final filePickerResult = await FilePicker.platform.pickFiles( final filePickerResult = await FilePicker.platform.pickFiles(
type: FileType.image, type: FileType.image,
withData: !BuildUtils.isWeb, withData: PlatformInfo.isMobile,
withReadStream: BuildUtils.isWeb); withReadStream: PlatformInfo.isWeb);
final platformFile = filePickerResult?.files.single; final platformFile = filePickerResult?.files.single;
if (platformFile != null) { if (platformFile != null) {
final fileSelected = FileInfo( final fileSelected = FileInfo(
platformFile.name, platformFile.name,
BuildUtils.isWeb ? '' : platformFile.path ?? '', PlatformInfo.isWeb ? '' : platformFile.path ?? '',
platformFile.size, platformFile.size,
bytes: platformFile.bytes, bytes: platformFile.bytes,
readStream: platformFile.readStream); readStream: platformFile.readStream);
@@ -1649,7 +1649,7 @@ class ComposerController extends BaseController {
toAddressFocusNode?.requestFocus(); toAddressFocusNode?.requestFocus();
} else if (subjectEmailInputController.text.isEmpty) { } else if (subjectEmailInputController.text.isEmpty) {
subjectEmailInputFocusNode?.requestFocus(); subjectEmailInputFocusNode?.requestFocus();
} else if (BuildUtils.isWeb) { } else if (PlatformInfo.isWeb) {
Future.delayed( Future.delayed(
const Duration(milliseconds: 500), const Duration(milliseconds: 500),
richTextWebController.editorController.setFocus richTextWebController.editorController.setFocus
@@ -127,7 +127,9 @@ class ComposerView extends BaseComposerView {
buildDivider(), buildDivider(),
Expanded(child: _buildBodyTablet(context)), Expanded(child: _buildBodyTablet(context)),
buildDivider(), buildDivider(),
buildBottomBar(context), Padding(
padding: const EdgeInsetsDirectional.symmetric(vertical: 16),
child: buildBottomBar(context)),
]) ])
) )
) )
@@ -1,7 +1,7 @@
import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/presentation/utils/keyboard_utils.dart';
import 'package:core/utils/app_logger.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/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/account_id.dart';
@@ -63,7 +63,7 @@ class ContactController extends BaseController {
} }
injectAutoCompleteBindings(_session, _accountId); injectAutoCompleteBindings(_session, _accountId);
} }
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
Future.delayed( Future.delayed(
const Duration(milliseconds: 500), const Duration(milliseconds: 500),
() => _checkContactPermission()); () => _checkContactPermission());
@@ -178,7 +178,7 @@ class ContactController extends BaseController {
void selectContact(BuildContext context, EmailAddress emailAddress) { void selectContact(BuildContext context, EmailAddress emailAddress) {
KeyboardUtils.hideKeyboard(context); KeyboardUtils.hideKeyboard(context);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onSelectedContactCallback?.call(emailAddress); onSelectedContactCallback?.call(emailAddress);
} else { } else {
popBack(result: emailAddress); popBack(result: emailAddress);
@@ -189,7 +189,7 @@ class ContactController extends BaseController {
clearAllTextInputSearchForm(); clearAllTextInputSearchForm();
KeyboardUtils.hideKeyboard(context); KeyboardUtils.hideKeyboard(context);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onDismissContactView?.call(); onDismissContactView?.call();
} else { } else {
popBack(); popBack();
@@ -1,11 +1,11 @@
import 'package:core/presentation/utils/responsive_utils.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:flutter/material.dart';
class ContactUtils { class ContactUtils {
static EdgeInsets getPaddingAppBar(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getPaddingAppBar(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(horizontal: 16); return const EdgeInsets.symmetric(horizontal: 16);
} else { } else {
if (responsiveUtils.isScreenWithShortestSide(context)) { if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -17,7 +17,7 @@ class ContactUtils {
} }
static EdgeInsets getPaddingSearchInputForm(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getPaddingSearchInputForm(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(horizontal: 16, vertical: 10); return const EdgeInsets.symmetric(horizontal: 16, vertical: 10);
} else { } else {
if (responsiveUtils.isScreenWithShortestSide(context)) { if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -29,7 +29,7 @@ class ContactUtils {
} }
static EdgeInsets getPaddingSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getPaddingSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(horizontal: 16, vertical: 10); return const EdgeInsets.symmetric(horizontal: 16, vertical: 10);
} else { } else {
if (responsiveUtils.isScreenWithShortestSide(context)) { if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -41,7 +41,7 @@ class ContactUtils {
} }
static EdgeInsets getPaddingDividerSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getPaddingDividerSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(horizontal: 16); return const EdgeInsets.symmetric(horizontal: 16);
} else { } else {
if (responsiveUtils.isScreenWithShortestSide(context)) { if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -53,7 +53,7 @@ class ContactUtils {
} }
static bool supportAppBarTopBorder(BuildContext context, ResponsiveUtils responsiveUtils) { static bool supportAppBarTopBorder(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb || responsiveUtils.isLandscapeMobile(context)) { if (PlatformInfo.isWeb || responsiveUtils.isLandscapeMobile(context)) {
return false; return false;
} }
return true; return true;
@@ -6,7 +6,6 @@ import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/utils/app_logger.dart'; import 'package:core/utils/app_logger.dart';
import 'package:core/utils/build_utils.dart';
import 'package:core/utils/platform_info.dart'; import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -87,7 +86,7 @@ class _AutocompleteContactTextFieldWithTagsState extends State<AutocompleteConta
keyboardType: TextInputType.emailAddress, keyboardType: TextInputType.emailAddress,
textInputAction: TextInputAction.done, textInputAction: TextInputAction.done,
hasAddButton: false, hasAddButton: false,
tagSpacing: BuildUtils.isWeb ? 12 : 8, tagSpacing: PlatformInfo.isWeb ? 12 : 8,
autofocus: false, autofocus: false,
minTextFieldWidth: 20, minTextFieldWidth: 20,
debounceDuration: const Duration(milliseconds: 150), debounceDuration: const Duration(milliseconds: 150),
@@ -1,7 +1,7 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/views/text/input_decoration_builder.dart'; import 'package:core/presentation/views/text/input_decoration_builder.dart';
import 'package:core/utils/build_utils.dart'; import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ContactInputDecorationBuilder extends InputDecorationBuilder { class ContactInputDecorationBuilder extends InputDecorationBuilder {
@@ -43,7 +43,7 @@ class ContactInputDecorationBuilder extends InputDecorationBuilder {
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontSize: 16), fontSize: 16),
contentPadding: const EdgeInsets.symmetric( contentPadding: const EdgeInsets.symmetric(
vertical: BuildUtils.isWeb ? 16 : 12, vertical: PlatformInfo.isWeb ? 16 : 12,
horizontal: 12), horizontal: 12),
errorText: errorText, errorText: errorText,
errorStyle: errorTextStyle ?? const TextStyle( errorStyle: errorTextStyle ?? const TextStyle(
@@ -2,7 +2,7 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/style_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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -72,7 +72,7 @@ class ContactInputTagItem extends StatelessWidget {
onDeleted: () => deleteContactCallbackAction?.call(contact), onDeleted: () => deleteContactCallbackAction?.call(contact),
); );
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return Padding( return Padding(
padding: const EdgeInsets.only(top: 10), padding: const EdgeInsets.only(top: 10),
child: itemChild child: itemChild
@@ -3,7 +3,7 @@ import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/app_toast.dart';
import 'package:core/presentation/utils/keyboard_utils.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:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/account_id.dart';
@@ -378,7 +378,7 @@ class DestinationPickerController extends BaseMailboxController {
return; return;
} }
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onSelectedMailboxCallback?.call(mailboxDestination.value); onSelectedMailboxCallback?.call(mailboxDestination.value);
} else { } else {
popBack(result: mailboxDestination.value); popBack(result: mailboxDestination.value);
@@ -427,7 +427,7 @@ class DestinationPickerController extends BaseMailboxController {
void closeDestinationPicker(BuildContext context) { void closeDestinationPicker(BuildContext context) {
KeyboardUtils.hideKeyboard(context); KeyboardUtils.hideKeyboard(context);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onDismissDestinationPicker?.call(); onDismissDestinationPicker?.call();
} else { } else {
popBack(); popBack();
@@ -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/list/tree_view.dart';
import 'package:core/presentation/views/search/search_bar_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/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:core/utils/direction_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@@ -73,7 +73,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
borderOnForeground: false, borderOnForeground: false,
color: Colors.transparent, color: Colors.transparent,
child: SafeArea( child: SafeArea(
top: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context), top: PlatformInfo.isMobile && _responsiveUtils.isPortraitMobile(context),
bottom: false, bottom: false,
left: false, left: false,
right: false, right: false,
@@ -104,8 +104,8 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
child: SafeArea( child: SafeArea(
top: false, top: false,
bottom: false, bottom: false,
left: !BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context), left: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context),
right: !BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context), right: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context),
child: Column(children: [ child: Column(children: [
Obx(() => TopBarDestinationPickerBuilder( Obx(() => TopBarDestinationPickerBuilder(
controller.mailboxAction.value, controller.mailboxAction.value,
@@ -371,12 +371,8 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
return TreeViewChild( return TreeViewChild(
context, context,
key: const Key('children_tree_mailbox_child'), key: const Key('children_tree_mailbox_child'),
isDirectionRTL: AppUtils.isDirectionRTL(context),
isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND,
paddingChild: EdgeInsets.only( paddingChild: const EdgeInsetsDirectional.only(start: 14),
left: AppUtils.isDirectionRTL(context) ? 0 : 14,
right: AppUtils.isDirectionRTL(context) ? 14 : 0,
),
parent: (MailBoxFolderTileBuilder( parent: (MailBoxFolderTileBuilder(
context, context,
_imagePaths, _imagePaths,
@@ -468,8 +464,8 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
child: Row(children: [ child: Row(children: [
SvgPicture.asset( SvgPicture.asset(
_imagePaths.icFolderMailbox, _imagePaths.icFolderMailbox,
width: BuildUtils.isWeb ? 20 : 24, width: PlatformInfo.isWeb ? 20 : 24,
height: BuildUtils.isWeb ? 20 : 24, height: PlatformInfo.isWeb ? 20 : 24,
fit: BoxFit.fill fit: BoxFit.fill
), ),
const SizedBox(width: 8), const SizedBox(width: 8),
@@ -586,7 +582,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
} }
BorderRadius _getRadiusDestinationPicker(BuildContext context) { BorderRadius _getRadiusDestinationPicker(BuildContext context) {
if (!BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context)) { if (PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context)) {
return BorderRadius.zero; return BorderRadius.zero;
} else if (_responsiveUtils.isMobile(context)) { } else if (_responsiveUtils.isMobile(context)) {
return const BorderRadius.only( return const BorderRadius.only(
@@ -598,7 +594,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
} }
double _getWidthDestinationPicker(BuildContext context) { double _getWidthDestinationPicker(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (_responsiveUtils.isMobile(context)) { if (_responsiveUtils.isMobile(context)) {
return double.infinity; return double.infinity;
} else { } else {
@@ -615,7 +611,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
} }
double _getHeightDestinationPicker(BuildContext context) { double _getHeightDestinationPicker(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (_responsiveUtils.isMobile(context)) { if (_responsiveUtils.isMobile(context)) {
return double.infinity; return double.infinity;
} else { } else {
@@ -641,7 +637,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
} }
EdgeInsets _getMarginDestinationPicker(BuildContext context) { EdgeInsets _getMarginDestinationPicker(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (_responsiveUtils.isMobile(context)) { if (_responsiveUtils.isMobile(context)) {
return EdgeInsets.zero; return EdgeInsets.zero;
} else { } else {
@@ -2,7 +2,7 @@ import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
@@ -84,8 +84,8 @@ class DestinationPickerSearchMailboxItemBuilder extends StatelessWidget {
Widget _buildMailboxIcon() { Widget _buildMailboxIcon() {
return SvgPicture.asset( return SvgPicture.asset(
_presentationMailbox.getMailboxIcon(_imagePaths), _presentationMailbox.getMailboxIcon(_imagePaths),
width: BuildUtils.isWeb ? 20 : 24, width: PlatformInfo.isWeb ? 20 : 24,
height: BuildUtils.isWeb ? 20 : 24, height: PlatformInfo.isWeb ? 20 : 24,
fit: BoxFit.fill fit: BoxFit.fill
); );
} }
@@ -3,7 +3,7 @@ import 'dart:io';
import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.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:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart';
@@ -30,7 +30,7 @@ class GetEmailContentInteractor {
try { try {
yield Right<Failure, Success>(GetEmailContentLoading()); yield Right<Failure, Success>(GetEmailContentLoading());
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
yield* _tryToGetOpenedEmailCache(session, accountId, emailId, baseDownloadUrl, composeEmail: composeEmail, draftsEmail: draftsEmail); yield* _tryToGetOpenedEmailCache(session, accountId, emailId, baseDownloadUrl, composeEmail: composeEmail, draftsEmail: draftsEmail);
} else { } else {
yield* _getContentEmailFromServer(session, accountId, emailId, baseDownloadUrl, composeEmail: composeEmail, draftsEmail: draftsEmail); yield* _getContentEmailFromServer(session, accountId, emailId, baseDownloadUrl, composeEmail: composeEmail, draftsEmail: draftsEmail);
@@ -62,7 +62,7 @@ class GetEmailContentInteractor {
draftsEmail: draftsEmail draftsEmail: draftsEmail
); );
final newEmailContentsDisplayed = BuildUtils.isWeb && !composeEmail final newEmailContentsDisplayed = PlatformInfo.isWeb && !composeEmail
? await emailRepository.addTooltipWhenHoverOnLink(newEmailContents) ? await emailRepository.addTooltipWhenHoverOnLink(newEmailContents)
: newEmailContents; : newEmailContents;
@@ -1,6 +1,6 @@
import 'dart:collection'; import 'dart:collection';
import 'package:collection/collection.dart'; 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/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -55,7 +55,7 @@ class EmailSupervisorController extends GetxController {
bool get isSearchActivatedOnMobile { bool get isSearchActivatedOnMobile {
return mailboxDashBoardController.searchController.isSearchEmailRunning return mailboxDashBoardController.searchController.isSearchEmailRunning
&& !BuildUtils.isWeb; && PlatformInfo.isMobile;
} }
void createPageControllerAndJumpToEmailById(EmailId currentEmailId) { void createPageControllerAndJumpToEmailById(EmailId currentEmailId) {
@@ -112,7 +112,7 @@ class EmailSupervisorController extends GetxController {
} }
void _jumpToPage(int page) { void _jumpToPage(int page) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
pageController?.jumpToPage(page); pageController?.jumpToPage(page);
} else { } else {
pageController?.animateToPage( pageController?.animateToPage(
@@ -123,7 +123,7 @@ class EmailSupervisorController extends GetxController {
} }
void updateScrollPhysicPageView({bool isScrollPageViewActivated = false}) { void updateScrollPhysicPageView({bool isScrollPageViewActivated = false}) {
if (BuildUtils.isWeb || !isScrollPageViewActivated) { if (PlatformInfo.isWeb || !isScrollPageViewActivated) {
scrollPhysicsPageView.value = const NeverScrollableScrollPhysics(); scrollPhysicsPageView.value = const NeverScrollableScrollPhysics();
} else { } else {
scrollPhysicsPageView.value = null; scrollPhysicsPageView.value = null;
@@ -382,7 +382,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
initialEmailContents = success.emailContents; initialEmailContents = success.emailContents;
attachments.value = success.attachments; attachments.value = success.attachments;
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
final detailedEmail = DetailedEmail( final detailedEmail = DetailedEmail(
emailId: currentEmail!.id!, emailId: currentEmail!.id!,
attachments: attachments, attachments: attachments,
@@ -655,7 +655,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
session, session,
mailboxIdSelected: currentMailbox.mailboxId mailboxIdSelected: currentMailbox.mailboxId
); );
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -1117,7 +1117,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
void _updateRouteOnBrowser() { void _updateRouteOnBrowser() {
log('SingleEmailController::_updateRouteOnBrowser(): isSearchEmailRunning: ${mailboxDashBoardController.searchController.isSearchEmailRunning}'); log('SingleEmailController::_updateRouteOnBrowser(): isSearchEmailRunning: ${mailboxDashBoardController.searchController.isSearchEmailRunning}');
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
final selectedMailboxId = mailboxDashBoardController.selectedMailbox.value?.id; final selectedMailboxId = mailboxDashBoardController.selectedMailbox.value?.id;
final route = RouteUtils.generateRouteBrowser( final route = RouteUtils.generateRouteBrowser(
AppRoutes.dashboard, AppRoutes.dashboard,
@@ -1159,7 +1159,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
session, session,
emailAddress: emailAddress); emailAddress: emailAddress);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogRuleFilterCreator( showDialogRuleFilterCreator(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -1216,7 +1216,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
} }
Future<bool> backButtonPressedCallbackAction(BuildContext context) async { Future<bool> backButtonPressedCallbackAction(BuildContext context) async {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
closeEmailView(context); closeEmailView(context);
} }
return false; return false;
+11 -11
View File
@@ -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_content_viewer_widget.dart';
import 'package:core/presentation/views/html_viewer/html_viewer_controller_for_web.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/app_logger.dart';
import 'package:core/utils/build_utils.dart'; import 'package:core/utils/platform_info.dart';
import 'package:filesize/filesize.dart'; import 'package:filesize/filesize.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -80,7 +80,7 @@ class EmailView extends GetWidget<SingleEmailController> {
} }
EdgeInsets _getMarginEmailView(BuildContext context) { EdgeInsets _getMarginEmailView(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (responsiveUtils.isDesktop(context)) { if (responsiveUtils.isDesktop(context)) {
return EdgeInsets.only( return EdgeInsets.only(
left: AppUtils.isDirectionRTL(context) ? 16 : 0, left: AppUtils.isDirectionRTL(context) ? 16 : 0,
@@ -134,7 +134,7 @@ class EmailView extends GetWidget<SingleEmailController> {
} }
bool _supportVerticalDivider(BuildContext context) { bool _supportVerticalDivider(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return responsiveUtils.isTabletLarge(context); return responsiveUtils.isTabletLarge(context);
} else { } else {
return responsiveUtils.isLandscapeTablet(context) || return responsiveUtils.isLandscapeTablet(context) ||
@@ -181,7 +181,7 @@ class EmailView extends GetWidget<SingleEmailController> {
_popupMenuEmailActionTile(context, email)); _popupMenuEmailActionTile(context, email));
} }
}, },
optionsWidget: BuildUtils.isWeb && controller.emailSupervisorController.supportedPageView.isTrue optionsWidget: PlatformInfo.isWeb && controller.emailSupervisorController.supportedPageView.isTrue
? _buildNavigatorPageViewWidgets(context) ? _buildNavigatorPageViewWidgets(context)
: null, : null,
)); ));
@@ -225,7 +225,7 @@ class EmailView extends GetWidget<SingleEmailController> {
} }
Widget _buildEmailBody(BuildContext context, PresentationEmail email) { Widget _buildEmailBody(BuildContext context, PresentationEmail email) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _buildEmailMessage(context, email); return _buildEmailMessage(context, email);
} else { } else {
return SingleChildScrollView( return SingleChildScrollView(
@@ -256,8 +256,8 @@ class EmailView extends GetWidget<SingleEmailController> {
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
child: SelectableText( child: SelectableText(
email.getEmailTitle(), email.getEmailTitle(),
maxLines: BuildUtils.isWeb ? 2 : null, maxLines: PlatformInfo.isWeb ? 2 : null,
minLines: BuildUtils.isWeb ? 1 : null, minLines: PlatformInfo.isWeb ? 1 : null,
cursorColor: AppColor.colorTextButton, cursorColor: AppColor.colorTextButton,
style: const TextStyle( style: const TextStyle(
fontSize: 20, fontSize: 20,
@@ -280,7 +280,7 @@ class EmailView extends GetWidget<SingleEmailController> {
), ),
_buildLoadingView(), _buildLoadingView(),
_buildAttachments(context), _buildAttachments(context),
if (BuildUtils.isWeb) if (PlatformInfo.isWeb)
Expanded(child: Padding( Expanded(child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
left: AppUtils.isDirectionRTL(context) ? 0 : 16, left: AppUtils.isDirectionRTL(context) ? 0 : 16,
@@ -400,7 +400,7 @@ class EmailView extends GetWidget<SingleEmailController> {
.map((attachment) => AttachmentFileTileBuilder( .map((attachment) => AttachmentFileTileBuilder(
attachment, attachment,
onDownloadAttachmentFileActionClick: (attachment) { onDownloadAttachmentFileActionClick: (attachment) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
controller.downloadAttachmentForWeb(context, attachment); controller.downloadAttachmentForWeb(context, attachment);
} else { } else {
controller.exportAttachment(context, attachment); controller.exportAttachment(context, attachment);
@@ -423,7 +423,7 @@ class EmailView extends GetWidget<SingleEmailController> {
AttachmentFileTileBuilder( AttachmentFileTileBuilder(
attachments[index], attachments[index],
onDownloadAttachmentFileActionClick: (attachment) { onDownloadAttachmentFileActionClick: (attachment) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
controller.downloadAttachmentForWeb(context, attachment); controller.downloadAttachmentForWeb(context, attachment);
} else { } else {
controller.exportAttachment(context, attachment); controller.exportAttachment(context, attachment);
@@ -445,7 +445,7 @@ class EmailView extends GetWidget<SingleEmailController> {
if (controller.emailContents.value != null) { if (controller.emailContents.value != null) {
final allEmailContents = controller.emailContents.value; final allEmailContents = controller.emailContents.value;
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return HtmlContentViewerOnWeb( return HtmlContentViewerOnWeb(
widthContent: constraints.maxWidth, widthContent: constraints.maxWidth,
heightContent: responsiveUtils.getSizeScreenHeight(context), heightContent: responsiveUtils.getSizeScreenHeight(context),
@@ -92,7 +92,7 @@ class AppBarMailWidgetBuilder extends StatelessWidget {
} }
bool _supportDisplayMailboxNameTitle(BuildContext context) { bool _supportDisplayMailboxNameTitle(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _responsiveUtils.isDesktop(context) || return _responsiveUtils.isDesktop(context) ||
_responsiveUtils.isMobile(context) || _responsiveUtils.isMobile(context) ||
_responsiveUtils.isTablet(context) || _responsiveUtils.isTablet(context) ||
@@ -141,8 +141,8 @@ class AppBarMailWidgetBuilder extends StatelessWidget {
colorFilter: mailboxContain?.isTrash == false colorFilter: mailboxContain?.isTrash == false
? AppColor.colorTextButton.asFilter() ? AppColor.colorTextButton.asFilter()
: AppColor.colorDeletePermanentlyButton.asFilter(), : AppColor.colorDeletePermanentlyButton.asFilter(),
width: BuildUtils.isWeb ? 18 : 20, width: PlatformInfo.isWeb ? 18 : 20,
height: BuildUtils.isWeb ? 18 : 20, height: PlatformInfo.isWeb ? 18 : 20,
fit: BoxFit.fill), fit: BoxFit.fill),
tooltip: mailboxContain?.isTrash == false tooltip: mailboxContain?.isTrash == false
? AppLocalizations.of(context).move_to_trash ? AppLocalizations.of(context).move_to_trash
@@ -31,7 +31,7 @@ class EmailActionCupertinoActionSheetActionBuilder extends CupertinoActionSheetA
return Container( return Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
key: key, key: key,
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
@@ -3,7 +3,7 @@ import 'package:core/presentation/utils/keyboard_utils.dart';
import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.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:flutter/cupertino.dart';
import 'package:get/get_core/get_core.dart'; import 'package:get/get_core/get_core.dart';
import 'package:get/get_instance/get_instance.dart'; import 'package:get/get_instance/get_instance.dart';
@@ -168,7 +168,7 @@ class IdentityCreatorController extends BaseController {
if (identity?.signatureAsString.isNotEmpty == true) { if (identity?.signatureAsString.isNotEmpty == true) {
updateContentHtmlEditor(arguments?.identity?.signatureAsString ?? ''); updateContentHtmlEditor(arguments?.identity?.signatureAsString ?? '');
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
signatureHtmlEditorController.setText(arguments?.identity?.signatureAsString ?? ''); signatureHtmlEditorController.setText(arguments?.identity?.signatureAsString ?? '');
} }
} }
@@ -296,7 +296,7 @@ class IdentityCreatorController extends BaseController {
} }
Future<String?> _getSignatureHtmlText() async { Future<String?> _getSignatureHtmlText() async {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return signatureHtmlEditorController.getText(); return signatureHtmlEditorController.getText();
} else { } else {
return keyboardRichTextController.htmlEditorApi?.getText(); return keyboardRichTextController.htmlEditorApi?.getText();
@@ -318,7 +318,7 @@ class IdentityCreatorController extends BaseController {
return; return;
} }
final signatureHtmlText = BuildUtils.isWeb final signatureHtmlText = PlatformInfo.isWeb
? contentHtmlEditor ? contentHtmlEditor
: await _getSignatureHtmlText(); : await _getSignatureHtmlText();
final bccAddress = bccOfIdentity.value != null && bccOfIdentity.value != noneEmailAddress final bccAddress = bccOfIdentity.value != null && bccOfIdentity.value != noneEmailAddress
@@ -349,7 +349,7 @@ class IdentityCreatorController extends BaseController {
isDefaultIdentity: isDefaultIdentity.value isDefaultIdentity: isDefaultIdentity.value
); );
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onCreatedIdentityCallback?.call(identityRequest); onCreatedIdentityCallback?.call(identityRequest);
} else { } else {
popBack(result: identityRequest); popBack(result: identityRequest);
@@ -360,7 +360,7 @@ class IdentityCreatorController extends BaseController {
identityRequest: newIdentity.toIdentityRequest(), identityRequest: newIdentity.toIdentityRequest(),
isDefaultIdentity: isDefaultIdentity.value); isDefaultIdentity: isDefaultIdentity.value);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onCreatedIdentityCallback?.call(identityRequest); onCreatedIdentityCallback?.call(identityRequest);
} else { } else {
popBack(result: identityRequest); popBack(result: identityRequest);
@@ -426,7 +426,7 @@ class IdentityCreatorController extends BaseController {
} }
void clearFocusEditor(BuildContext context) { void clearFocusEditor(BuildContext context) {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
keyboardRichTextController.htmlEditorApi?.unfocus(); keyboardRichTextController.htmlEditorApi?.unfocus();
KeyboardUtils.hideSystemKeyboardMobile(); KeyboardUtils.hideSystemKeyboardMobile();
} }
@@ -434,7 +434,7 @@ class IdentityCreatorController extends BaseController {
} }
void closeView(BuildContext context) { void closeView(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onDismissIdentityCreator?.call(); onDismissIdentityCreator?.call();
} else { } else {
popBack(); popBack();
@@ -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/button/icon_button_web.dart';
import 'package:core/presentation/views/responsive/responsive_widget.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart';
import 'package:core/utils/app_logger.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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -63,7 +63,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController> {
borderOnForeground: false, borderOnForeground: false,
color: Colors.transparent, color: Colors.transparent,
child: SafeArea( child: SafeArea(
top: !BuildUtils.isWeb, top: PlatformInfo.isMobile,
bottom: false, bottom: false,
left: false, left: false,
right: false, right: false,
@@ -211,7 +211,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController> {
controller.errorNameIdentity.value, controller.errorNameIdentity.value,
AppLocalizations.of(context).required, AppLocalizations.of(context).required,
editingController: controller.inputNameIdentityController, editingController: controller.inputNameIdentityController,
focusNode: BuildUtils.isWeb ? null : controller.inputNameIdentityFocusNode, focusNode: PlatformInfo.isWeb ? null : controller.inputNameIdentityFocusNode,
isMandatory: true, isMandatory: true,
onChangeInputNameAction: (value) => controller.updateNameIdentity(context, value) onChangeInputNameAction: (value) => controller.updateNameIdentity(context, value)
)), )),
@@ -243,7 +243,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController> {
AppLocalizations.of(context).bcc_to, AppLocalizations.of(context).bcc_to,
controller.errorBccIdentity.value, controller.errorBccIdentity.value,
controller.inputBccIdentityController, controller.inputBccIdentityController,
focusNode: BuildUtils.isWeb ? null : controller.inputBccIdentityFocusNode, focusNode: PlatformInfo.isWeb ? null : controller.inputBccIdentityFocusNode,
onSelectedSuggestionAction: (newEmailAddress) { onSelectedSuggestionAction: (newEmailAddress) {
controller.inputBccIdentityController?.text = newEmailAddress?.email ?? ''; controller.inputBccIdentityController?.text = newEmailAddress?.email ?? '';
controller.updateBccOfIdentity(newEmailAddress); controller.updateBccOfIdentity(newEmailAddress);
@@ -287,7 +287,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController> {
child: Column(children: [ child: Column(children: [
_buildHeaderView(context), _buildHeaderView(context),
Expanded( Expanded(
child: BuildUtils.isWeb child: PlatformInfo.isWeb
? PointerInterceptor(child: bodyCreatorView) ? PointerInterceptor(child: bodyCreatorView)
: KeyboardRichText( : KeyboardRichText(
keyBroadToolbar: RichTextKeyboardToolBar( keyBroadToolbar: RichTextKeyboardToolBar(
@@ -343,13 +343,13 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController> {
} }
Widget _buildSignatureHtmlTemplate(BuildContext context) { Widget _buildSignatureHtmlTemplate(BuildContext context) {
final htmlEditor = BuildUtils.isWeb final htmlEditor = PlatformInfo.isWeb
? _buildHtmlEditorWeb(context, controller.contentHtmlEditor ?? '') ? _buildHtmlEditorWeb(context, controller.contentHtmlEditor ?? '')
: _buildHtmlEditor(context, initialContent: controller.contentHtmlEditor ?? ''); : _buildHtmlEditor(context, initialContent: controller.contentHtmlEditor ?? '');
return Column( return Column(
children: [ children: [
if(BuildUtils.isWeb) if(PlatformInfo.isWeb)
ToolbarRichTextWebBuilder( ToolbarRichTextWebBuilder(
richTextWebController: controller.richTextWebController, richTextWebController: controller.richTextWebController,
padding: const EdgeInsets.only(top: 22, bottom: 8.0, left: 24, right: 12)), padding: const EdgeInsets.only(top: 22, bottom: 8.0, left: 24, right: 12)),
@@ -7,5 +7,5 @@ class OIDCConstant {
static const keyAuthorityOidc = 'KEY_AUTHORITY_OIDC'; static const keyAuthorityOidc = 'KEY_AUTHORITY_OIDC';
static const authResponseKey = "auth_info"; static const authResponseKey = "auth_info";
static String get clientId => BuildUtils.isWeb ? AppConfig.webOidcClientId : mobileOidcClientId; static String get clientId => PlatformInfo.isWeb ? AppConfig.webOidcClientId : mobileOidcClientId;
} }
@@ -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:model/oidc/oidc_configuration.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart'; import 'package:tmail_ui_user/main/utils/app_config.dart';
extension OidcConfigurationExtensions on OIDCConfiguration { extension OidcConfigurationExtensions on OIDCConfiguration {
String get redirectUrl { String get redirectUrl {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (AppConfig.domainRedirectUrl.endsWith('/')) { if (AppConfig.domainRedirectUrl.endsWith('/')) {
return AppConfig.domainRedirectUrl + loginRedirectOidcWeb; return AppConfig.domainRedirectUrl + loginRedirectOidcWeb;
} else { } else {
@@ -18,7 +18,7 @@ extension OidcConfigurationExtensions on OIDCConfiguration {
} }
String get logoutRedirectUrl { String get logoutRedirectUrl {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (AppConfig.domainRedirectUrl.endsWith('/')) { if (AppConfig.domainRedirectUrl.endsWith('/')) {
return AppConfig.domainRedirectUrl + logoutRedirectOidcWeb; return AppConfig.domainRedirectUrl + logoutRedirectOidcWeb;
} else { } else {
@@ -3,7 +3,7 @@ import 'package:core/presentation/extensions/url_extension.dart';
import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.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:dartz/dartz.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
@@ -127,7 +127,7 @@ class LoginController extends ReloadableController {
@override @override
void onReady() { void onReady() {
super.onReady(); super.onReady();
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
final arguments = Get.arguments; final arguments = Get.arguments;
if (arguments is LoginArguments) { if (arguments is LoginArguments) {
loginFormType.value = arguments.loginFormType; loginFormType.value = arguments.loginFormType;
@@ -215,7 +215,7 @@ class LoginController extends ReloadableController {
} }
void _checkOIDCIsAvailable() { void _checkOIDCIsAvailable() {
final baseUri = BuildUtils.isWeb ? _parseUri(AppConfig.baseUrl) : _parseUri(_urlText); final baseUri = PlatformInfo.isWeb ? _parseUri(AppConfig.baseUrl) : _parseUri(_urlText);
if (baseUri == null) { if (baseUri == null) {
loginState.value = LoginState(Left(LoginMissUrlAction())); loginState.value = LoginState(Left(LoginMissUrlAction()));
} else { } else {
@@ -286,7 +286,7 @@ class LoginController extends ReloadableController {
void _getOIDCConfigurationSuccess(GetOIDCConfigurationSuccess success) { void _getOIDCConfigurationSuccess(GetOIDCConfigurationSuccess success) {
log('LoginController::_getOIDCConfigurationSuccess():success: $success'); log('LoginController::_getOIDCConfigurationSuccess():success: $success');
loginState.value = LoginState(Right(success)); loginState.value = LoginState(Right(success));
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
_authenticateOidcOnBrowserAction(success.oidcConfiguration); _authenticateOidcOnBrowserAction(success.oidcConfiguration);
} else { } else {
_getTokenOIDCAction(success.oidcConfiguration); _getTokenOIDCAction(success.oidcConfiguration);
@@ -323,8 +323,8 @@ class LoginController extends ReloadableController {
void _getTokenOIDCSuccess(GetTokenOIDCSuccess success) { void _getTokenOIDCSuccess(GetTokenOIDCSuccess success) {
log('LoginController::_getTokenOIDCSuccess(): ${success.tokenOIDC.toString()}'); log('LoginController::_getTokenOIDCSuccess(): ${success.tokenOIDC.toString()}');
loginState.value = LoginState(Right(success)); loginState.value = LoginState(Right(success));
_dynamicUrlInterceptors.setJmapUrl(BuildUtils.isWeb ? AppConfig.baseUrl : _urlText); _dynamicUrlInterceptors.setJmapUrl(PlatformInfo.isWeb ? AppConfig.baseUrl : _urlText);
_dynamicUrlInterceptors.changeBaseUrl(BuildUtils.isWeb ? AppConfig.baseUrl : _urlText); _dynamicUrlInterceptors.changeBaseUrl(PlatformInfo.isWeb ? AppConfig.baseUrl : _urlText);
authorizationInterceptors.setTokenAndAuthorityOidc( authorizationInterceptors.setTokenAndAuthorityOidc(
newToken: success.tokenOIDC.toToken(), newToken: success.tokenOIDC.toToken(),
newConfig: success.configuration); newConfig: success.configuration);
@@ -340,8 +340,8 @@ class LoginController extends ReloadableController {
void _loginSuccessAction(AuthenticationUserSuccess success) { void _loginSuccessAction(AuthenticationUserSuccess success) {
loginState.value = LoginState(Right(success)); loginState.value = LoginState(Right(success));
_dynamicUrlInterceptors.setJmapUrl(BuildUtils.isWeb ? AppConfig.baseUrl : _urlText); _dynamicUrlInterceptors.setJmapUrl(PlatformInfo.isWeb ? AppConfig.baseUrl : _urlText);
_dynamicUrlInterceptors.changeBaseUrl(BuildUtils.isWeb ? AppConfig.baseUrl : _urlText); _dynamicUrlInterceptors.changeBaseUrl(PlatformInfo.isWeb ? AppConfig.baseUrl : _urlText);
authorizationInterceptors.setBasicAuthorization(_userNameText, _passwordText); authorizationInterceptors.setBasicAuthorization(_userNameText, _passwordText);
authorizationIsolateInterceptors.setBasicAuthorization(_userNameText, _passwordText); authorizationIsolateInterceptors.setBasicAuthorization(_userNameText, _passwordText);
pushAndPop(AppRoutes.session, arguments: _dynamicUrlInterceptors.baseUrl); pushAndPop(AppRoutes.session, arguments: _dynamicUrlInterceptors.baseUrl);
@@ -361,7 +361,7 @@ class LoginController extends ReloadableController {
} }
void _saveRecentLoginUrl() { void _saveRecentLoginUrl() {
if (_urlText?.isNotEmpty == true && !BuildUtils.isWeb) { if (_urlText?.isNotEmpty == true && PlatformInfo.isMobile) {
final recentLoginUrl = RecentLoginUrl.now(_urlText!); final recentLoginUrl = RecentLoginUrl.now(_urlText!);
log('LoginController::_saveRecentLoginUrl(): $recentLoginUrl'); log('LoginController::_saveRecentLoginUrl(): $recentLoginUrl');
consumeState(_saveLoginUrlOnMobileInteractor.execute(recentLoginUrl)); consumeState(_saveLoginUrlOnMobileInteractor.execute(recentLoginUrl));
@@ -386,7 +386,7 @@ class LoginController extends ReloadableController {
} }
void _saveRecentLoginUsername() { void _saveRecentLoginUsername() {
if(BuildUtils.isWeb || _userNameText == null || _userNameText!.isEmpty || !_userNameText!.isEmail) { if(PlatformInfo.isWeb || _userNameText == null || _userNameText!.isEmpty || !_userNameText!.isEmail) {
return ; return ;
} }
final recentLoginUsername = RecentLoginUsername.now(_userNameText!); final recentLoginUsername = RecentLoginUsername.now(_userNameText!);
@@ -3,7 +3,7 @@ import 'dart:async';
import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.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:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.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/properties/properties.dart';
@@ -41,7 +41,7 @@ class MailboxIsolateWorker {
int totalEmailUnread, int totalEmailUnread,
StreamController<Either<Failure, Success>> onProgressController StreamController<Either<Failure, Success>> onProgressController
) async { ) async {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _handleMarkAsMailboxReadActionOnWeb( return _handleMarkAsMailboxReadActionOnWeb(
session, session,
accountId, accountId,
@@ -409,7 +409,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
NavigationRouter? get navigationRouter => mailboxDashBoardController.navigationRouter; NavigationRouter? get navigationRouter => mailboxDashBoardController.navigationRouter;
bool get isHasDataFromRoute => BuildUtils.isWeb && navigationRouter != null; bool get isHasDataFromRoute => PlatformInfo.isWeb && navigationRouter != null;
MailboxId? get mailboxIdFromNavigationRouter => navigationRouter?.mailboxId; MailboxId? get mailboxIdFromNavigationRouter => navigationRouter?.mailboxId;
@@ -477,7 +477,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
teamMailboxesTree.value, teamMailboxesTree.value,
mailboxDashBoardController.sessionCurrent!); mailboxDashBoardController.sessionCurrent!);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogMailboxCreator( showDialogMailboxCreator(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -532,7 +532,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
} }
void openSearchViewAction(BuildContext context) { void openSearchViewAction(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
SearchMailboxBindings().dependencies(); SearchMailboxBindings().dependencies();
mailboxDashBoardController.searchMailboxActivated.value = true; mailboxDashBoardController.searchMailboxActivated.value = true;
} else { } else {
@@ -962,7 +962,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
} }
void _updateSelectedMailboxRouteOnBrowser() { void _updateSelectedMailboxRouteOnBrowser() {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
final selectedMailboxId = selectedMailbox?.id; final selectedMailboxId = selectedMailbox?.id;
final route = RouteUtils.generateRouteBrowser( final route = RouteUtils.generateRouteBrowser(
AppRoutes.dashboard, AppRoutes.dashboard,
@@ -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/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -34,7 +34,7 @@ mixin MailboxWidgetMixin {
) { ) {
return [ return [
if (BuildUtils.isWeb) if (PlatformInfo.isWeb)
MailboxActions.openInNewTab, MailboxActions.openInNewTab,
if (mailbox.isSpam) if (mailbox.isSpam)
_mailboxActionForSpam(spamReportEnabled), _mailboxActionForSpam(spamReportEnabled),
@@ -47,7 +47,7 @@ mixin MailboxWidgetMixin {
List<MailboxActions> _listActionForPersonalMailbox(PresentationMailbox mailbox) { List<MailboxActions> _listActionForPersonalMailbox(PresentationMailbox mailbox) {
return [ return [
if (BuildUtils.isWeb && mailbox.isSubscribedMailbox) if (PlatformInfo.isWeb && mailbox.isSubscribedMailbox)
MailboxActions.openInNewTab, MailboxActions.openInNewTab,
if (mailbox.getCountUnReadEmails().isNotEmpty) if (mailbox.getCountUnReadEmails().isNotEmpty)
MailboxActions.markAsRead, MailboxActions.markAsRead,
@@ -63,7 +63,7 @@ mixin MailboxWidgetMixin {
List<MailboxActions> _listActionForTeamMailbox(PresentationMailbox mailbox) { List<MailboxActions> _listActionForTeamMailbox(PresentationMailbox mailbox) {
return [ return [
if (BuildUtils.isWeb && mailbox.isSubscribedMailbox) if (PlatformInfo.isWeb && mailbox.isSubscribedMailbox)
MailboxActions.openInNewTab, MailboxActions.openInNewTab,
if (mailbox.getCountUnReadEmails().isNotEmpty) if (mailbox.getCountUnReadEmails().isNotEmpty)
MailboxActions.markAsRead, MailboxActions.markAsRead,
@@ -41,7 +41,7 @@ class MailboxBottomSheetActionTileBuilder extends CupertinoActionSheetActionBuil
child: Container( child: Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
key: key, key: key,
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
@@ -143,7 +143,7 @@ class MailboxCreatorController extends BaseController {
_session, _session,
mailboxIdSelected: selectedMailbox.value?.id); mailboxIdSelected: selectedMailbox.value?.id);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -194,7 +194,7 @@ class MailboxCreatorController extends BaseController {
MailboxName(nameMailbox), MailboxName(nameMailbox),
mailboxLocation: selectedMailbox.value); mailboxLocation: selectedMailbox.value);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onCreatedMailboxCallback?.call(newMailboxArguments); onCreatedMailboxCallback?.call(newMailboxArguments);
} else { } else {
popBack(result: newMailboxArguments); popBack(result: newMailboxArguments);
@@ -205,7 +205,7 @@ class MailboxCreatorController extends BaseController {
void closeMailboxCreator(BuildContext context) { void closeMailboxCreator(BuildContext context) {
KeyboardUtils.hideKeyboard(context); KeyboardUtils.hideKeyboard(context);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onDismissMailboxCreator?.call(); onDismissMailboxCreator?.call();
} else { } else {
popBack(); popBack();
@@ -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/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/text/text_field_builder.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:core/utils/direction_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@@ -50,7 +50,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
borderOnForeground: false, borderOnForeground: false,
color: Colors.transparent, color: Colors.transparent,
child: SafeArea( child: SafeArea(
top: !BuildUtils.isWeb && _responsiveUtils.isPortraitMobile(context), top: PlatformInfo.isMobile && _responsiveUtils.isPortraitMobile(context),
bottom: false, bottom: false,
left: false, left: false,
right: false, right: false,
@@ -81,8 +81,8 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
child: SafeArea( child: SafeArea(
top: false, top: false,
bottom: false, bottom: false,
left: !BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context), left: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context),
right: !BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context), right: PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context),
child: Column(children: [ child: Column(children: [
_buildAppBar(context), _buildAppBar(context),
const Divider(color: AppColor.colorDividerDestinationPicker, height: 1), const Divider(color: AppColor.colorDividerDestinationPicker, height: 1),
@@ -162,8 +162,8 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
const SizedBox(width: 12), const SizedBox(width: 12),
Obx(() => SvgPicture.asset( Obx(() => SvgPicture.asset(
controller.selectedMailbox.value?.getMailboxIcon(_imagePaths) ?? _imagePaths.icFolderMailbox, controller.selectedMailbox.value?.getMailboxIcon(_imagePaths) ?? _imagePaths.icFolderMailbox,
width: BuildUtils.isWeb ? 20 : 24, width: PlatformInfo.isWeb ? 20 : 24,
height: BuildUtils.isWeb ? 20 : 24, height: PlatformInfo.isWeb ? 20 : 24,
fit: BoxFit.fill)), fit: BoxFit.fill)),
const SizedBox(width: 12), const SizedBox(width: 12),
Expanded(child: Obx(() => Text( Expanded(child: Obx(() => Text(
@@ -192,7 +192,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
} }
double _getWidthView(BuildContext context) { double _getWidthView(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (_responsiveUtils.isMobile(context)) { if (_responsiveUtils.isMobile(context)) {
return double.infinity; return double.infinity;
} else { } else {
@@ -209,7 +209,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
} }
double _getHeightView(BuildContext context) { double _getHeightView(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (_responsiveUtils.isMobile(context)) { if (_responsiveUtils.isMobile(context)) {
return double.infinity; return double.infinity;
} else { } else {
@@ -235,7 +235,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
} }
EdgeInsets _getMarginView(BuildContext context) { EdgeInsets _getMarginView(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (_responsiveUtils.isMobile(context)) { if (_responsiveUtils.isMobile(context)) {
return EdgeInsets.zero; return EdgeInsets.zero;
} else { } else {
@@ -260,7 +260,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
} }
BorderRadius _getRadiusView(BuildContext context) { BorderRadius _getRadiusView(BuildContext context) {
if (!BuildUtils.isWeb && _responsiveUtils.isLandscapeMobile(context)) { if (PlatformInfo.isMobile && _responsiveUtils.isLandscapeMobile(context)) {
return BorderRadius.zero; return BorderRadius.zero;
} else if (_responsiveUtils.isMobile(context)) { } else if (_responsiveUtils.isMobile(context)) {
return const BorderRadius.only( return const BorderRadius.only(
@@ -64,7 +64,7 @@ class AdvancedFilterController extends BaseController {
@override @override
void onReady() { void onReady() {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
Future.delayed( Future.delayed(
const Duration(milliseconds: 500), const Duration(milliseconds: 500),
() => _checkContactPermission()); () => _checkContactPermission());
@@ -136,7 +136,7 @@ class AdvancedFilterController extends BaseController {
session, session,
mailboxIdSelected: searchController.searchEmailFilter.value.mailbox?.id); mailboxIdSelected: searchController.searchEmailFilter.value.mailbox?.id);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -455,7 +455,7 @@ class MailboxDashBoardController extends ReloadableController {
getAllSendingEmails(); getAllSendingEmails();
_storeSessionAction(sessionCurrent!); _storeSessionAction(sessionCurrent!);
} }
if (!BuildUtils.isWeb && !_notificationManager.isNotificationClickedOnTerminate) { if (PlatformInfo.isMobile && !_notificationManager.isNotificationClickedOnTerminate) {
_handleClickLocalNotificationOnTerminated(); _handleClickLocalNotificationOnTerminated();
} else { } else {
dispatchRoute(DashboardRoutes.thread); dispatchRoute(DashboardRoutes.thread);
@@ -539,7 +539,7 @@ class MailboxDashBoardController extends ReloadableController {
void openEmailDetailedView(PresentationEmail presentationEmail) { void openEmailDetailedView(PresentationEmail presentationEmail) {
setSelectedEmail(presentationEmail); setSelectedEmail(presentationEmail);
dispatchRoute(DashboardRoutes.emailDetailed); dispatchRoute(DashboardRoutes.emailDetailed);
if (BuildUtils.isWeb && presentationEmail.routeWeb != null) { if (PlatformInfo.isWeb && presentationEmail.routeWeb != null) {
RouteUtils.updateRouteOnBrowser( RouteUtils.updateRouteOnBrowser(
'Email-${presentationEmail.id?.id.value ?? ''}', 'Email-${presentationEmail.id?.id.value ?? ''}',
presentationEmail.routeWeb! presentationEmail.routeWeb!
@@ -585,7 +585,7 @@ class MailboxDashBoardController extends ReloadableController {
} }
bool _searchInsideEmailDetailedViewIsActive(BuildContext context) { bool _searchInsideEmailDetailedViewIsActive(BuildContext context) {
return BuildUtils.isWeb return PlatformInfo.isWeb
&& _responsiveUtils.isDesktop(context) && _responsiveUtils.isDesktop(context)
&& dashboardRoute.value == DashboardRoutes.emailDetailed; && dashboardRoute.value == DashboardRoutes.emailDetailed;
} }
@@ -792,7 +792,7 @@ class MailboxDashBoardController extends ReloadableController {
sessionCurrent, sessionCurrent,
mailboxIdSelected: currentMailbox.mailboxId); mailboxIdSelected: currentMailbox.mailboxId);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -1625,7 +1625,7 @@ class MailboxDashBoardController extends ReloadableController {
void handleOnForegroundGained() { void handleOnForegroundGained() {
log('MailboxDashBoardController::handleOnForegroundGained():'); log('MailboxDashBoardController::handleOnForegroundGained():');
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
_updateTheme(); _updateTheme();
} }
refreshActionWhenBackToApp(); refreshActionWhenBackToApp();
@@ -3,7 +3,7 @@ import 'dart:io';
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/views/text/slogan_builder.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:external_app_launcher/external_app_launcher.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get_core/get_core.dart'; import 'package:get/get_core/get_core.dart';
@@ -35,7 +35,7 @@ class AppListDashboardItem extends StatelessWidget {
} }
void _openApp(BuildContext context, LinagoraApp app) async { void _openApp(BuildContext context, LinagoraApp app) async {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (await launcher.canLaunchUrl(app.appUri)) { if (await launcher.canLaunchUrl(app.appUri)) {
await launcher.launchUrl(app.appUri); await launcher.launchUrl(app.appUri);
} }
@@ -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/dom/script_transformers.dart';
import 'package:core/presentation/utils/html_transformer/html_transform.dart'; import 'package:core/presentation/utils/html_transformer/html_transform.dart';
import 'package:core/presentation/utils/html_transformer/transform_configuration.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/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart';
@@ -63,7 +63,7 @@ class IdentityDataSourceImpl extends IdentityDataSource {
const BlockCodeTransformer(), const BlockCodeTransformer(),
const AddTargetBlankInTagATransformer(), const AddTargetBlankInTagATransformer(),
const ImageTransformer(), const ImageTransformer(),
if (BuildUtils.isWeb) const AddTooltipLinkTransformer() if (PlatformInfo.isWeb) const AddTooltipLinkTransformer()
])); ]));
return signatureUnescape; return signatureUnescape;
}).catchError(_exceptionThrower.throwException); }).catchError(_exceptionThrower.throwException);
@@ -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/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart';
import 'package:core/utils/app_logger.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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -88,7 +88,7 @@ class EmailRulesController extends BaseController {
if (accountId != null && session != null) { if (accountId != null && session != null) {
final arguments = RulesFilterCreatorArguments(accountId, session); final arguments = RulesFilterCreatorArguments(accountId, session);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogRuleFilterCreator( showDialogRuleFilterCreator(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -140,7 +140,7 @@ class EmailRulesController extends BaseController {
actionType: CreatorActionType.edit, actionType: CreatorActionType.edit,
tMailRule: rule); tMailRule: rule);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogRuleFilterCreator( showDialogRuleFilterCreator(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -30,7 +30,7 @@ class EmailRuleBottomSheetActionTileBuilder
return Container( return Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb cursor: PlatformInfo.isWeb
? MaterialStateMouseCursor.clickable ? MaterialStateMouseCursor.clickable
: MouseCursor.defer, : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
@@ -4,7 +4,7 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/image/avatar_builder.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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -39,7 +39,7 @@ class EmailForwardItemWidget extends StatelessWidget {
color: Colors.transparent, color: Colors.transparent,
child: InkWell( child: InkWell(
onLongPress: () { onLongPress: () {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
onSelectRecipientCallback?.call(recipientForward); onSelectRecipientCallback?.call(recipientForward);
} }
}, },
@@ -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/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_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/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<MailboxVisibilityController> class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
with AppLoaderMixin, with AppLoaderMixin,
@@ -138,11 +137,7 @@ class MailboxVisibilityView extends GetWidget<MailboxVisibilityController>
context, context,
key: const Key('children_tree_mailbox_child'), key: const Key('children_tree_mailbox_child'),
isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND,
isDirectionRTL: AppUtils.isDirectionRTL(context), paddingChild: const EdgeInsetsDirectional.only(start: 10),
paddingChild: EdgeInsets.only(
left: AppUtils.isDirectionRTL(context) ? 0 : 10,
right: AppUtils.isDirectionRTL(context) ? 10 : 0,
),
parent: MailBoxVisibilityFolderTileBuilder( parent: MailBoxVisibilityFolderTileBuilder(
_imagePaths, _imagePaths,
mailboxNode, mailboxNode,
@@ -290,7 +290,7 @@ class ManageAccountDashBoardController extends ReloadableController {
} }
Future<bool> backButtonPressedCallbackAction(BuildContext context) async { Future<bool> backButtonPressedCallbackAction(BuildContext context) async {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
backToMailboxDashBoard(context); backToMailboxDashBoard(context);
} }
return false; return false;
@@ -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/image/avatar_builder.dart';
import 'package:core/presentation/views/responsive/responsive_widget.dart'; import 'package:core/presentation/views/responsive/responsive_widget.dart';
import 'package:core/presentation/views/text/slogan_builder.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:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mixin/user_setting_popup_menu_mixin.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<ManageAccountDashBoardControl
return VacationNotificationMessageWidget( return VacationNotificationMessageWidget(
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
top: 16, top: 16,
left: BuildUtils.isWeb ? 24 : 16, left: PlatformInfo.isWeb ? 24 : 16,
right: BuildUtils.isWeb ? 24 : 16), right: PlatformInfo.isWeb ? 24 : 16),
fromAccountDashBoard: true, fromAccountDashBoard: true,
vacationResponse: controller.vacationResponse.value!, vacationResponse: controller.vacationResponse.value!,
actionGotoVacationSetting: !controller.inVacationSettings() actionGotoVacationSetting: !controller.inVacationSettings()
@@ -101,8 +101,8 @@ class ManageAccountDashBoardView extends GetWidget<ManageAccountDashBoardControl
return VacationNotificationMessageWidget( return VacationNotificationMessageWidget(
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
top: 16, top: 16,
left: BuildUtils.isWeb ? 24 : 16, left: PlatformInfo.isWeb ? 24 : 16,
right: BuildUtils.isWeb ? 24 : 16), right: PlatformInfo.isWeb ? 24 : 16),
fromAccountDashBoard: true, fromAccountDashBoard: true,
vacationResponse: controller.vacationResponse.value!, vacationResponse: controller.vacationResponse.value!,
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16), padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16),
@@ -9,7 +9,6 @@ import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings
import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/setting_first_level_tile_builder.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/widgets/setting_first_level_tile_builder.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/account_menu_item.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
class SettingsFirstLevelView extends GetWidget<SettingsController> { class SettingsFirstLevelView extends GetWidget<SettingsController> {
SettingsFirstLevelView({Key? key}) : super(key: key); SettingsFirstLevelView({Key? key}) : super(key: key);
@@ -21,16 +20,11 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column(children: [ child: Column(children: [
Obx(() => Padding( Obx(() => UserInformationWidgetBuilder(
_imagePaths,
controller.manageAccountDashboardController.userProfile.value,
padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils), padding: SettingsUtils.getPaddingInFirstLevel(context, _responsiveUtils),
child: UserInformationWidgetBuilder( titlePadding: const EdgeInsetsDirectional.only(start: 16))),
_imagePaths,
controller.manageAccountDashboardController.userProfile.value,
titlePadding: EdgeInsets.only(
left: AppUtils.isDirectionRTL(context) ? 0 : 16,
right: AppUtils.isDirectionRTL(context) ? 16 : 0
))
)),
Divider( Divider(
color: AppColor.colorDividerComposer, color: AppColor.colorDividerComposer,
height: 1, height: 1,
@@ -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/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -50,8 +50,8 @@ class SettingsView extends GetWidget<SettingsController> {
if (controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsValid == true) { if (controller.manageAccountDashboardController.vacationResponse.value?.vacationResponderIsValid == true) {
return VacationNotificationMessageWidget( return VacationNotificationMessageWidget(
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
left: BuildUtils.isWeb ? 24 : 16, left: PlatformInfo.isWeb ? 24 : 16,
right: BuildUtils.isWeb ? 24 : 16, right: PlatformInfo.isWeb ? 24 : 16,
top: 16), top: 16),
fromAccountDashBoard: true, fromAccountDashBoard: true,
vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!, vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!,
@@ -64,8 +64,8 @@ class SettingsView extends GetWidget<SettingsController> {
&& controller.manageAccountDashboardController.inVacationSettings()) { && controller.manageAccountDashboardController.inVacationSettings()) {
return VacationNotificationMessageWidget( return VacationNotificationMessageWidget(
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
left: BuildUtils.isWeb ? 24 : 16, left: PlatformInfo.isWeb ? 24 : 16,
right: BuildUtils.isWeb ? 24 : 16, right: PlatformInfo.isWeb ? 24 : 16,
top: 16), top: 16),
fromAccountDashBoard: true, fromAccountDashBoard: true,
vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!, vacationResponse: controller.manageAccountDashboardController.vacationResponse.value!,
@@ -1,6 +1,6 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/utils/responsive_utils.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:flutter/material.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart'; import 'package:tmail_ui_user/main/utils/app_utils.dart';
@@ -32,7 +32,7 @@ class SettingsUtils {
} }
static EdgeInsets getMarginViewForSettingDetails(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getMarginViewForSettingDetails(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (responsiveUtils.isDesktop(context)) { if (responsiveUtils.isDesktop(context)) {
return const EdgeInsets.all(16); return const EdgeInsets.all(16);
} else if (responsiveUtils.isTabletLarge(context) || } else if (responsiveUtils.isTabletLarge(context) ||
@@ -6,7 +6,7 @@ import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/app_toast.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -152,7 +152,7 @@ class IdentitiesController extends BaseController {
if (accountId != null && session != null && userProfile != null) { if (accountId != null && session != null && userProfile != null) {
final arguments = IdentityCreatorArguments(accountId, session, userProfile); final arguments = IdentityCreatorArguments(accountId, session, userProfile);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogIdentityCreator( showDialogIdentityCreator(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -277,7 +277,7 @@ class IdentitiesController extends BaseController {
identity: identity, identity: identity,
actionType: IdentityActionType.edit); actionType: IdentityActionType.edit);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogIdentityCreator( showDialogIdentityCreator(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -26,7 +26,7 @@ class DeleteIdentityDialogBuilder extends StatelessWidget {
responsiveUtils: responsiveUtils, responsiveUtils: responsiveUtils,
mobile: (_buildDeleteDialog(context) mobile: (_buildDeleteDialog(context)
..alignment(Alignment.bottomCenter) ..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) ..widthDialog(MediaQuery.of(context).size.width - 16)
..heightDialog(280)) ..heightDialog(280))
.build(), .build(),
@@ -36,7 +36,7 @@ class DeleteIdentityDialogBuilder extends StatelessWidget {
landscapeTablet: _buildDeleteDialog(context).build(), landscapeTablet: _buildDeleteDialog(context).build(),
desktop: _buildDeleteDialog(context).build()); desktop: _buildDeleteDialog(context).build());
return BuildUtils.isWeb return PlatformInfo.isWeb
? PointerInterceptor(child: deleteDialogBuilder) ? PointerInterceptor(child: deleteDialogBuilder)
: deleteDialogBuilder; : deleteDialogBuilder;
} }
@@ -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_on_web_widget.dart';
import 'package:core/presentation/views/html_viewer/html_content_viewer_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/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:flutter/material.dart';
import 'package:tmail_ui_user/main/utils/app_utils.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) { Widget _buildSignature(BuildContext context, double width, double height) {
if (signatureSelected.isNotEmpty) { if (signatureSelected.isNotEmpty) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return HtmlContentViewerOnWeb( return HtmlContentViewerOnWeb(
contentHtml: signatureSelected, contentHtml: signatureSelected,
widthContent: width, widthContent: width,
@@ -118,7 +118,7 @@ class VacationController extends BaseController {
messageTextController.text = newVacation.messagePlainText ?? ''; messageTextController.text = newVacation.messagePlainText ?? '';
subjectTextController.text = newVacation.subject ?? ''; subjectTextController.text = newVacation.subject ?? '';
updateMessageHtmlText(newVacation.messageHtmlText ?? ''); updateMessageHtmlText(newVacation.messageHtmlText ?? '');
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
_richTextControllerForWeb.editorController.setText(newVacation.messageHtmlText ?? ''); _richTextControllerForWeb.editorController.setText(newVacation.messageHtmlText ?? '');
} else { } else {
richTextControllerForMobile.htmlEditorApi?.setText(newVacation.messageHtmlText ?? ''); richTextControllerForMobile.htmlEditorApi?.setText(newVacation.messageHtmlText ?? '');
@@ -264,7 +264,7 @@ class VacationController extends BaseController {
} }
final messagePlainText = messageTextController.text; 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 (messagePlainText.isEmpty && messageHtmlText.isEmpty && context.mounted) {
if (currentOverlayContext != null && currentContext != null) { if (currentOverlayContext != null && currentContext != null) {
_appToast.showToastErrorMessage( _appToast.showToastErrorMessage(
@@ -322,7 +322,7 @@ class VacationController extends BaseController {
void updateMessageHtmlText(String? text) => _vacationMessageHtmlText = text; void updateMessageHtmlText(String? text) => _vacationMessageHtmlText = text;
Future<String>? _getMessageHtmlText() { Future<String>? _getMessageHtmlText() {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _richTextControllerForWeb.editorController.getText(); return _richTextControllerForWeb.editorController.getText();
} else { } else {
return richTextControllerForMobile.htmlEditorApi?.getText(); return richTextControllerForMobile.htmlEditorApi?.getText();
@@ -330,7 +330,7 @@ class VacationController extends BaseController {
} }
void selectVacationMessageType(BuildContext context, VacationMessageType newMessageType) { void selectVacationMessageType(BuildContext context, VacationMessageType newMessageType) {
if (newMessageType == VacationMessageType.plainText && !BuildUtils.isWeb) { if (newMessageType == VacationMessageType.plainText && PlatformInfo.isMobile) {
_storeMessageHtmlTextOnMobile(); _storeMessageHtmlTextOnMobile();
} }
clearFocusEditor(context); clearFocusEditor(context);
@@ -343,7 +343,7 @@ class VacationController extends BaseController {
} }
void clearFocusEditor(BuildContext context) { void clearFocusEditor(BuildContext context) {
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
richTextControllerForMobile.htmlEditorApi?.unfocus(); richTextControllerForMobile.htmlEditorApi?.unfocus();
} }
KeyboardUtils.hideKeyboard(context); KeyboardUtils.hideKeyboard(context);
@@ -32,7 +32,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _buildVacationFormView(context); return _buildVacationFormView(context);
} else { } else {
return KeyboardRichText( return KeyboardRichText(
@@ -394,7 +394,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
padding: const EdgeInsets.only(left: 12, right: 12, top: 12), padding: const EdgeInsets.only(left: 12, right: 12, top: 12),
child: Column(children: [ child: Column(children: [
_buildMessageHtmlTextEditor(context), _buildMessageHtmlTextEditor(context),
if (BuildUtils.isWeb) if (PlatformInfo.isWeb)
Center(child: Obx(() { Center(child: Obx(() {
return PointerInterceptor( return PointerInterceptor(
child: buildToolbarRichTextForWeb( child: buildToolbarRichTextForWeb(
@@ -428,7 +428,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
} }
Widget _buildMessageHtmlTextEditor(BuildContext context) { Widget _buildMessageHtmlTextEditor(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return html_editor_browser.HtmlEditor( return html_editor_browser.HtmlEditor(
key: const Key('vacation_message_html_text_editor_web'), key: const Key('vacation_message_html_text_editor_web'),
controller: controller.richTextControllerForWeb.editorController, controller: controller.richTextControllerForWeb.editorController,
@@ -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/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.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/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.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); _handleRemoveNotificationWhenEmailMarkAsRead(action.newState, action.accountId, action.session);
} }
_synchronizeEmailOnForegroundAction(action.newState); _synchronizeEmailOnForegroundAction(action.newState);
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
_getNewReceiveEmailFromNotificationAction(action.session, action.accountId, action.newState); _getNewReceiveEmailFromNotificationAction(action.session, action.accountId, action.newState);
} }
} else if (action is PushNotificationAction) { } else if (action is PushNotificationAction) {
@@ -134,7 +134,7 @@ class EmailChangeListener extends ChangeListener {
_userName = userName; _userName = userName;
log('EmailChangeListener::_pushNotificationAction():newState: $newState'); log('EmailChangeListener::_pushNotificationAction():newState: $newState');
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
_storeEmailDeliveryStateAction(accountId, userName, _newStateEmailDelivery!); _storeEmailDeliveryStateAction(accountId, userName, _newStateEmailDelivery!);
} else { } else {
if (Platform.isAndroid) { if (Platform.isAndroid) {
@@ -2,7 +2,7 @@
import 'dart:io'; import 'dart:io';
import 'package:core/utils/app_logger.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:dartz/dartz.dart';
import 'package:fcm/model/type_name.dart'; import 'package:fcm/model/type_name.dart';
import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/account_id.dart';
@@ -81,7 +81,7 @@ class FcmUtils {
String get platformOS { String get platformOS {
var platformName = ''; var platformName = '';
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
platformName = 'Web'; platformName = 'Web';
} else { } else {
if (Platform.isAndroid) { if (Platform.isAndroid) {
@@ -109,5 +109,5 @@ class FcmUtils {
return deviceId; return deviceId;
} }
bool get isMobileAndroid => !BuildUtils.isWeb && Platform.isAndroid; bool get isMobileAndroid => PlatformInfo.isMobile && Platform.isAndroid;
} }
@@ -3,7 +3,7 @@ import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/app_toast.dart';
import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/presentation/utils/keyboard_utils.dart';
import 'package:core/utils/app_logger.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:flutter/cupertino.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/account_id.dart';
@@ -223,7 +223,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
MailboxActions.selectForRuleAction, MailboxActions.selectForRuleAction,
_session); _session);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -306,7 +306,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
_listEmailRule ?? [], _listEmailRule ?? [],
newTMailRule); newTMailRule);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onCreatedRuleFilterCallback?.call(ruleFilterRequest); onCreatedRuleFilterCallback?.call(ruleFilterRequest);
} else { } else {
popBack(result: ruleFilterRequest); popBack(result: ruleFilterRequest);
@@ -316,7 +316,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
_listEmailRule?.withIds ?? [], _listEmailRule?.withIds ?? [],
newTMailRule); newTMailRule);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onCreatedRuleFilterCallback?.call(ruleFilterRequest); onCreatedRuleFilterCallback?.call(ruleFilterRequest);
} else { } else {
popBack(result: ruleFilterRequest); popBack(result: ruleFilterRequest);
@@ -344,7 +344,7 @@ class RulesFilterCreatorController extends BaseMailboxController {
_clearAll(); _clearAll();
KeyboardUtils.hideKeyboard(context); KeyboardUtils.hideKeyboard(context);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
onDismissRuleFilterCreator?.call(); onDismissRuleFilterCreator?.call();
} else { } else {
popBack(); popBack();
@@ -47,7 +47,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
child: ResponsiveWidget( child: ResponsiveWidget(
responsiveUtils: _responsiveUtils, responsiveUtils: _responsiveUtils,
mobile: Scaffold( mobile: Scaffold(
backgroundColor: BuildUtils.isWeb backgroundColor: PlatformInfo.isWeb
? Colors.black.withAlpha(24) ? Colors.black.withAlpha(24)
: Colors.black38, : Colors.black38,
body: GestureDetector( body: GestureDetector(
@@ -62,7 +62,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
topLeft: Radius.circular(16), topLeft: Radius.circular(16),
topRight: Radius.circular(16)), topRight: Radius.circular(16)),
color: Colors.white), color: Colors.white),
margin: const EdgeInsets.only(top: BuildUtils.isWeb ? 70 : 0), margin: const EdgeInsets.only(top: PlatformInfo.isWeb ? 70 : 0),
child: ClipRRect( child: ClipRRect(
borderRadius: const BorderRadius.only( borderRadius: const BorderRadius.only(
topLeft: Radius.circular(16), topLeft: Radius.circular(16),
@@ -33,7 +33,7 @@ class RuleActionSheetActionTileBuilder
return Container( return Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb cursor: PlatformInfo.isWeb
? MaterialStateMouseCursor.clickable ? MaterialStateMouseCursor.clickable
: MouseCursor.defer, : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
@@ -33,7 +33,7 @@ class RuleConditionComparatorSheetActionTileBuilder
return Container( return Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb cursor: PlatformInfo.isWeb
? MaterialStateMouseCursor.clickable ? MaterialStateMouseCursor.clickable
: MouseCursor.defer, : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
@@ -33,7 +33,7 @@ class RuleConditionFieldSheetActionTileBuilder
return Container( return Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb cursor: PlatformInfo.isWeb
? MaterialStateMouseCursor.clickable ? MaterialStateMouseCursor.clickable
: MouseCursor.defer, : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
@@ -3,7 +3,7 @@ import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/utils/keyboard_utils.dart'; import 'package:core/presentation/utils/keyboard_utils.dart';
import 'package:core/utils/app_logger.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:dartz/dartz.dart';
import 'package:debounce_throttle/debounce_throttle.dart'; import 'package:debounce_throttle/debounce_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -483,7 +483,7 @@ class SearchEmailController extends BaseController
mailboxDashBoardController.sessionCurrent, mailboxDashBoardController.sessionCurrent,
mailboxIdSelected: mailbox?.id); mailboxIdSelected: mailbox?.id);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -526,7 +526,7 @@ class SearchEmailController extends BaseController
final listContactSelected = simpleSearchFilter.value.getContactApplied(prefixEmailAddress); final listContactSelected = simpleSearchFilter.value.getContactApplied(prefixEmailAddress);
final arguments = ContactArguments(accountId!, session!, listContactSelected); final arguments = ContactArguments(accountId!, session!, listContactSelected);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogContactView( showDialogContactView(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -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/background/background_widget_builder.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/text/text_field_builder.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:core/utils/direction_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@@ -440,7 +440,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
} }
double? _getItemExtent(BuildContext context) { double? _getItemExtent(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _responsiveUtils.isDesktop(context) ? 52 : 95; return _responsiveUtils.isDesktop(context) ? 52 : 95;
} else { } else {
return null; return null;
@@ -1,11 +1,11 @@
import 'package:core/presentation/utils/responsive_utils.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:flutter/material.dart';
class SearchEmailUtils { class SearchEmailUtils {
static EdgeInsets getPaddingAppBar(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getPaddingAppBar(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(horizontal: 16); return const EdgeInsets.symmetric(horizontal: 16);
} else { } else {
if (responsiveUtils.isScreenWithShortestSide(context)) { if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -17,7 +17,7 @@ class SearchEmailUtils {
} }
static EdgeInsets getPaddingSearchSuggestionList(BuildContext context, ResponsiveUtils responsiveUtils) { 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); return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
} else { } else {
return const EdgeInsets.symmetric(horizontal: 16, vertical: 12); return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
@@ -25,7 +25,7 @@ class SearchEmailUtils {
} }
static EdgeInsets getPaddingShowAllResultButton(BuildContext context, ResponsiveUtils responsiveUtils) { 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); return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
} else { } else {
return const EdgeInsets.symmetric(horizontal: 16, vertical: 12); return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
@@ -33,7 +33,7 @@ class SearchEmailUtils {
} }
static EdgeInsets getPaddingSearchRecentTitle(BuildContext context, ResponsiveUtils responsiveUtils) { 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); return const EdgeInsets.symmetric(horizontal: 32, vertical: 8);
} else { } else {
return const EdgeInsets.symmetric(horizontal: 16, vertical: 8); return const EdgeInsets.symmetric(horizontal: 16, vertical: 8);
@@ -41,7 +41,7 @@ class SearchEmailUtils {
} }
static EdgeInsets getPaddingListRecentSearch(BuildContext context, ResponsiveUtils responsiveUtils) { 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); return const EdgeInsets.symmetric(horizontal: 32, vertical: 12);
} else { } else {
return const EdgeInsets.symmetric(horizontal: 16, vertical: 12); return const EdgeInsets.symmetric(horizontal: 16, vertical: 12);
@@ -49,7 +49,7 @@ class SearchEmailUtils {
} }
static EdgeInsets getPaddingSearchFilterButton(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getPaddingSearchFilterButton(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) { if (PlatformInfo.isWeb || !responsiveUtils.isScreenWithShortestSide(context)) {
return const EdgeInsets.all(12); return const EdgeInsets.all(12);
} else { } else {
return const EdgeInsets.symmetric(vertical: 12, horizontal: 16); return const EdgeInsets.symmetric(vertical: 12, horizontal: 16);
@@ -57,7 +57,7 @@ class SearchEmailUtils {
} }
static EdgeInsets getMarginSearchFilterButton(BuildContext context, ResponsiveUtils responsiveUtils) { 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); return const EdgeInsets.symmetric(horizontal: 20);
} else { } else {
return EdgeInsets.zero; return EdgeInsets.zero;
@@ -65,7 +65,7 @@ class SearchEmailUtils {
} }
static EdgeInsets getPaddingSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getPaddingSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return const EdgeInsets.only(left: 10); return const EdgeInsets.only(left: 10);
} else { } else {
if (responsiveUtils.isScreenWithShortestSide(context)) { if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -77,7 +77,7 @@ class SearchEmailUtils {
} }
static EdgeInsets getPaddingDividerSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) { static EdgeInsets getPaddingDividerSearchResultList(BuildContext context, ResponsiveUtils responsiveUtils) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return const EdgeInsets.symmetric(horizontal: 16); return const EdgeInsets.symmetric(horizontal: 16);
} else { } else {
if (responsiveUtils.isScreenWithShortestSide(context)) { if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -1,6 +1,6 @@
import 'package:core/presentation/views/bottom_popup/cupertino_action_sheet_no_icon_builder.dart'; 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/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
@@ -32,7 +32,7 @@ class EmailReceiveTimeCupertinoActionSheetActionBuilder
return Container( return Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
key: key, key: key,
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
@@ -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/keyboard_utils.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/utils/app_logger.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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -614,7 +614,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
void closeSearchView(BuildContext context) { void closeSearchView(BuildContext context) {
KeyboardUtils.hideKeyboard(context); KeyboardUtils.hideKeyboard(context);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
dashboardController.searchMailboxActivated.value = false; dashboardController.searchMailboxActivated.value = false;
clearAllTextInputSearchForm(); clearAllTextInputSearchForm();
SearchMailboxBindings().disposeBindings(); SearchMailboxBindings().disposeBindings();
@@ -2,7 +2,7 @@
import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/views/button/icon_button_web.dart'; import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/text/text_field_builder.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:core/utils/direction_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@@ -36,7 +36,7 @@ class SearchMailboxView extends GetWidget<SearchMailboxController>
return Scaffold( return Scaffold(
body: GestureDetector( body: GestureDetector(
onTap: () => FocusScope.of(context).unfocus(), onTap: () => FocusScope.of(context).unfocus(),
child: BuildUtils.isWeb child: PlatformInfo.isWeb
? PointerInterceptor(child: _buildSearchBody(context)) ? PointerInterceptor(child: _buildSearchBody(context))
: SafeArea(child: _buildSearchBody(context)), : SafeArea(child: _buildSearchBody(context)),
), ),
@@ -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/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/responsive/responsive_widget.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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:focused_menu_custom/focused_menu.dart'; import 'package:focused_menu_custom/focused_menu.dart';
@@ -51,7 +51,7 @@ class _MailboxSearchedItemBuilderState extends State<MailboxSearchedItemBuilder>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return DragTarget<List<PresentationEmail>>( return DragTarget<List<PresentationEmail>>(
builder: (_, __, ___) => _buildMailboxItem(context), builder: (_, __, ___) => _buildMailboxItem(context),
onAccept: (emails) { onAccept: (emails) {
@@ -64,7 +64,7 @@ class _MailboxSearchedItemBuilderState extends State<MailboxSearchedItemBuilder>
} }
Widget _buildMailboxItem(BuildContext context) { Widget _buildMailboxItem(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return InkWell( return InkWell(
onTap: _onTapMailboxAction, onTap: _onTapMailboxAction,
onHover: (value) => setState(() => isHoverItem = value), onHover: (value) => setState(() => isHoverItem = value),
@@ -1,7 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:core/utils/app_logger.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/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart';
@@ -31,7 +31,7 @@ class ThreadIsolateWorker {
MailboxId mailboxId, MailboxId mailboxId,
Future<void> Function(List<EmailId>? newDestroyed) updateDestroyedEmailCache, Future<void> Function(List<EmailId>? newDestroyed) updateDestroyedEmailCache,
) async { ) async {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _emptyTrashFolderOnWeb(session, accountId, mailboxId, updateDestroyedEmailCache); return _emptyTrashFolderOnWeb(session, accountId, mailboxId, updateDestroyedEmailCache);
} else { } else {
final result = await _isolateExecutor.execute( final result = await _isolateExecutor.execute(
@@ -2,7 +2,7 @@ import 'dart:io';
import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.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:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.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/properties/properties.dart';
@@ -29,7 +29,7 @@ class GetEmailByIdInteractor {
) async* { ) async* {
try { try {
yield Right<Failure, Success>(GetEmailByIdLoading()); yield Right<Failure, Success>(GetEmailByIdLoading());
if (!BuildUtils.isWeb) { if (PlatformInfo.isMobile) {
yield* _tryToGetEmailFromCache(session, accountId, emailId, properties: properties); yield* _tryToGetEmailFromCache(session, accountId, emailId, properties: properties);
} else { } else {
yield* _getEmailByIdFromServer(session, accountId, emailId, properties: properties); yield* _getEmailByIdFromServer(session, accountId, emailId, properties: properties);
@@ -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:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/presentation_email_extension.dart'; import 'package:model/extensions/presentation_email_extension.dart';
@@ -41,7 +41,7 @@ extension ListPresentationEmailExtensions on List<PresentationEmail> {
bool isSearchEmailRunning = false, bool isSearchEmailRunning = false,
SearchQuery? searchQuery, SearchQuery? searchQuery,
}) { }) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
final route = RouteUtils.generateRouteBrowser( final route = RouteUtils.generateRouteBrowser(
AppRoutes.dashboard, AppRoutes.dashboard,
NavigationRouter( NavigationRouter(
@@ -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/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart'; import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/text/rich_text_builder.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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -250,7 +250,7 @@ mixin BaseEmailItemTile {
TextStyle? textStyle TextStyle? textStyle
} }
) { ) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return Container( return Container(
color: Colors.transparent, color: Colors.transparent,
width: iconSize ?? 48, width: iconSize ?? 48,
@@ -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/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart'; import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart';
import 'package:core/utils/app_logger.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/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -131,7 +131,7 @@ mixin EmailActionController on ViewAsDialogActionMixin {
session, session,
mailboxIdSelected: mailboxContain.mailboxId); mailboxIdSelected: mailboxContain.mailboxId);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
showDialogDestinationPicker( showDialogDestinationPicker(
context: context, context: context,
arguments: arguments, arguments: arguments,
@@ -3,7 +3,7 @@ import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/presentation/utils/app_toast.dart'; import 'package:core/presentation/utils/app_toast.dart';
import 'package:core/utils/app_logger.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:dartz/dartz.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@@ -694,7 +694,7 @@ class ThreadController extends BaseController with EmailActionController {
} }
void _updateSearchRouteOnBrowser() { void _updateSearchRouteOnBrowser() {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
final route = RouteUtils.generateRouteBrowser( final route = RouteUtils.generateRouteBrowser(
AppRoutes.dashboard, AppRoutes.dashboard,
NavigationRouter( NavigationRouter(
@@ -922,7 +922,7 @@ class ThreadController extends BaseController with EmailActionController {
} }
PresentationEmail generateEmailByPlatform(PresentationEmail currentEmail) { PresentationEmail generateEmailByPlatform(PresentationEmail currentEmail) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
final route = RouteUtils.generateRouteBrowser( final route = RouteUtils.generateRouteBrowser(
AppRoutes.dashboard, AppRoutes.dashboard,
NavigationRouter( NavigationRouter(
@@ -86,7 +86,7 @@ class ThreadView extends GetWidget<ThreadController>
} }
bool supportVerticalDivider(BuildContext context) { bool supportVerticalDivider(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _responsiveUtils.isTabletLarge(context); return _responsiveUtils.isTabletLarge(context);
} else { } else {
return _responsiveUtils.isDesktop(context) || return _responsiveUtils.isDesktop(context) ||
@@ -101,7 +101,7 @@ class ThreadView extends GetWidget<ThreadController>
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: 16, horizontal: 16,
vertical: _responsiveUtils.isWebNotDesktop(context) ? 8 : 0), 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, child: SearchBarView(_imagePaths,
hintTextSearch: AppLocalizations.of(context).search_emails, hintTextSearch: AppLocalizations.of(context).search_emails,
onOpenSearchViewAction: controller.goToSearchView)); onOpenSearchViewAction: controller.goToSearchView));
@@ -124,7 +124,7 @@ class ThreadView extends GetWidget<ThreadController>
Widget _buildListButtonSelectionForMobile(BuildContext context) { Widget _buildListButtonSelectionForMobile(BuildContext context) {
return Obx(() { return Obx(() {
if ((!BuildUtils.isWeb || (BuildUtils.isWeb && controller.isSelectionEnabled() if ((PlatformInfo.isMobile || (PlatformInfo.isWeb && controller.isSelectionEnabled()
&& controller.isSearchActive() && !_responsiveUtils.isDesktop(context))) && controller.isSearchActive() && !_responsiveUtils.isDesktop(context)))
&& controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected.isNotEmpty) { && controller.mailboxDashBoardController.emailsInCurrentMailbox.listEmailSelected.isNotEmpty) {
return BottomBarThreadSelectionWidget( return BottomBarThreadSelectionWidget(
@@ -183,7 +183,7 @@ class ThreadView extends GetWidget<ThreadController>
return Obx(() { return Obx(() {
if (controller.isAllSearchInActive) { if (controller.isAllSearchInActive) {
return Container( return Container(
padding: BuildUtils.isWeb padding: PlatformInfo.isWeb
? EdgeInsets.zero ? EdgeInsets.zero
: controller.listEmailSelected.isNotEmpty ? const EdgeInsets.only(bottom: 70) : EdgeInsets.zero, : controller.listEmailSelected.isNotEmpty ? const EdgeInsets.only(bottom: 70) : EdgeInsets.zero,
child: ComposeFloatingButton( child: ComposeFloatingButton(
@@ -266,7 +266,7 @@ class ThreadView extends GetWidget<ThreadController>
Widget _buildListEmail(BuildContext context) { Widget _buildListEmail(BuildContext context) {
return Container( return Container(
margin: BuildUtils.isWeb && _responsiveUtils.isDesktop(context) margin: PlatformInfo.isWeb && _responsiveUtils.isDesktop(context)
? const EdgeInsets.symmetric(horizontal: 4) ? const EdgeInsets.symmetric(horizontal: 4)
: EdgeInsets.zero, : EdgeInsets.zero,
alignment: Alignment.center, alignment: Alignment.center,
@@ -463,7 +463,7 @@ class ThreadView extends GetWidget<ThreadController>
} }
double? _getItemExtent(BuildContext context) { double? _getItemExtent(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _responsiveUtils.isDesktop(context) ? 52 : 95; return _responsiveUtils.isDesktop(context) ? 52 : 95;
} else { } else {
return null; return null;
@@ -24,7 +24,7 @@ class AppActionSheetActionBuilder extends CupertinoActionSheetActionBuilder {
return Container( return Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
key: key, key: key,
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
@@ -56,7 +56,7 @@ class AppBarThreadWidgetBuilder extends StatelessWidget {
} }
Widget _buildAppBar(BuildContext context, BoxConstraints constraints) { Widget _buildAppBar(BuildContext context, BoxConstraints constraints) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _selectMode == SelectMode.INACTIVE return _selectMode == SelectMode.INACTIVE
? _buildBodyAppBarForWeb(context) ? _buildBodyAppBarForWeb(context)
: _buildBodyAppBarForWebSelection(context); : _buildBodyAppBarForWebSelection(context);
@@ -400,7 +400,7 @@ class AppBarThreadWidgetBuilder extends StatelessWidget {
} }
double _getXTranslationValues(BuildContext context) { double _getXTranslationValues(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _responsiveUtils.isWebDesktop(context) ? -2.0 : -16.0; return _responsiveUtils.isWebDesktop(context) ? -2.0 : -16.0;
} else { } else {
return _responsiveUtils.isTabletLarge(context) ? 0.0 : -16.0; return _responsiveUtils.isTabletLarge(context) ? 0.0 : -16.0;
@@ -2,7 +2,7 @@ import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/button/button_builder.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:flutter/material.dart';
import 'package:model/email/email_action_type.dart'; import 'package:model/email/email_action_type.dart';
import 'package:model/email/presentation_email.dart'; import 'package:model/email/presentation_email.dart';
@@ -164,7 +164,7 @@ class BottomBarThreadSelectionWidget extends StatelessWidget{
} }
bool _isMailboxDashboardSplitView(BuildContext context) { bool _isMailboxDashboardSplitView(BuildContext context) {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _responsiveUtils.isTabletLarge(context); return _responsiveUtils.isTabletLarge(context);
} else { } else {
return _responsiveUtils.isLandscapeTablet(context) || return _responsiveUtils.isLandscapeTablet(context) ||
@@ -34,7 +34,7 @@ class FilterMessageCupertinoActionSheetActionBuilder
return Container( return Container(
color: bgColor ?? Colors.white, color: bgColor ?? Colors.white,
child: MouseRegion( child: MouseRegion(
cursor: BuildUtils.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer, cursor: PlatformInfo.isWeb ? MaterialStateMouseCursor.clickable : MouseCursor.defer,
child: CupertinoActionSheetAction( child: CupertinoActionSheetAction(
key: key, key: key,
child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
@@ -7,7 +7,7 @@ import 'package:core/data/network/dio_client.dart';
import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart'; import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.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:dartz/dartz.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:model/email/attachment.dart'; import 'package:model/email/attachment.dart';
@@ -33,7 +33,7 @@ class FileUploader {
Uri uploadUri, Uri uploadUri,
{CancelToken? cancelToken} {CancelToken? cancelToken}
) async { ) async {
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
return _handleUploadAttachmentActionOnWeb( return _handleUploadAttachmentActionOnWeb(
uploadId, uploadId,
onSendController, onSendController,
+1 -1
View File
@@ -66,7 +66,7 @@ class AppPages {
() => manage_account_dashboard.ManageAccountDashBoardView()), () => manage_account_dashboard.ManageAccountDashBoardView()),
binding: ManageAccountDashBoardBindings()), binding: ManageAccountDashBoardBindings()),
unknownRoutePage, unknownRoutePage,
if (!BuildUtils.isWeb) if (PlatformInfo.isMobile)
...[ ...[
GetPage( GetPage(
name: AppRoutes.composer, name: AppRoutes.composer,
+2 -2
View File
@@ -2,7 +2,7 @@
import 'package:core/data/model/query/query_parameter.dart'; import 'package:core/data/model/query/query_parameter.dart';
import 'package:core/data/network/config/service_path.dart'; import 'package:core/data/network/config/service_path.dart';
import 'package:core/utils/app_logger.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/core/id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.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) { static String generateNavigationRoute(String route, NavigationRouter router) {
ServicePath servicePath = ServicePath(route); ServicePath servicePath = ServicePath(route);
if (BuildUtils.isWeb) { if (PlatformInfo.isWeb) {
if (router.emailId != null) { if (router.emailId != null) {
servicePath = servicePath.withPathParameter(router.emailId!.id.value); servicePath = servicePath.withPathParameter(router.emailId!.id.value);
} }
+2 -2
View File
@@ -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/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:tmail_ui_user/main/utils/app_config.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) { static bool isDirectionRTL(BuildContext context) {
return intl.Bidi.isRtlLanguage(Localizations.localeOf(context).languageCode); return intl.Bidi.isRtlLanguage(Localizations.localeOf(context).languageCode);