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