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