TF-3671 Fix all composer interaction are blocked without network (#3682)
This commit is contained in:
@@ -119,6 +119,7 @@ class _WebEditorState extends State<WebEditorWidget> {
|
|||||||
shouldEnsureVisible: true,
|
shouldEnsureVisible: true,
|
||||||
hint: '',
|
hint: '',
|
||||||
darkMode: false,
|
darkMode: false,
|
||||||
|
cacheHTMLAssetOffline: true,
|
||||||
initialText: widget.content,
|
initialText: widget.content,
|
||||||
customBodyCssStyle: HtmlUtils.customCssStyleHtmlEditor(
|
customBodyCssStyle: HtmlUtils.customCssStyleHtmlEditor(
|
||||||
direction: widget.direction,
|
direction: widget.direction,
|
||||||
|
|||||||
@@ -504,6 +504,7 @@ class IdentityCreatorView extends GetWidget<IdentityCreatorController>
|
|||||||
shouldEnsureVisible: true,
|
shouldEnsureVisible: true,
|
||||||
hint: '',
|
hint: '',
|
||||||
darkMode: false,
|
darkMode: false,
|
||||||
|
cacheHTMLAssetOffline: true,
|
||||||
initialText: initContent.isEmpty ? null : initContent,
|
initialText: initContent.isEmpty ? null : initContent,
|
||||||
disableDragAndDrop: true,
|
disableDragAndDrop: true,
|
||||||
spellCheck: true,
|
spellCheck: true,
|
||||||
|
|||||||
@@ -480,6 +480,7 @@ class VacationView extends GetWidget<VacationController> with RichTextButtonMixi
|
|||||||
htmlEditorOptions: html_editor_browser.HtmlEditorOptions(
|
htmlEditorOptions: html_editor_browser.HtmlEditorOptions(
|
||||||
hint: '',
|
hint: '',
|
||||||
darkMode: false,
|
darkMode: false,
|
||||||
|
cacheHTMLAssetOffline: true,
|
||||||
initialText: controller.vacationMessageHtmlText,
|
initialText: controller.vacationMessageHtmlText,
|
||||||
spellCheck: true,
|
spellCheck: true,
|
||||||
customBodyCssStyle: HtmlUtils.customCssStyleHtmlEditor(direction: AppUtils.getCurrentDirection(context))
|
customBodyCssStyle: HtmlUtils.customCssStyleHtmlEditor(direction: AppUtils.getCurrentDirection(context))
|
||||||
|
|||||||
+4
-1
@@ -16,6 +16,7 @@ import 'package:tmail_ui_user/main/pages/app_pages.dart';
|
|||||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||||
|
import 'package:tmail_ui_user/main/utils/asset_preloader.dart';
|
||||||
import 'package:url_strategy/url_strategy.dart';
|
import 'package:url_strategy/url_strategy.dart';
|
||||||
import 'package:worker_manager/worker_manager.dart';
|
import 'package:worker_manager/worker_manager.dart';
|
||||||
|
|
||||||
@@ -33,7 +34,9 @@ Future<void> runTmail() async {
|
|||||||
MainBindings().dependencies(),
|
MainBindings().dependencies(),
|
||||||
HiveCacheConfig.instance.setUp(),
|
HiveCacheConfig.instance.setUp(),
|
||||||
Executor().warmUp(log: BuildUtils.isDebugMode),
|
Executor().warmUp(log: BuildUtils.isDebugMode),
|
||||||
AppUtils.loadEnvFile()
|
AppUtils.loadEnvFile(),
|
||||||
|
if (PlatformInfo.isWeb)
|
||||||
|
AssetPreloader.preloadHtmlEditorAssets(),
|
||||||
]);
|
]);
|
||||||
await HiveCacheConfig.instance.initializeEncryptionKey();
|
await HiveCacheConfig.instance.initializeEncryptionKey();
|
||||||
|
|
||||||
|
|||||||
@@ -7,10 +7,13 @@ import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.d
|
|||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
class AppConfig {
|
class AppConfig {
|
||||||
|
const AppConfig._();
|
||||||
|
|
||||||
static const int defaultMinInputLengthAutocomplete = 3;
|
static const int defaultMinInputLengthAutocomplete = 3;
|
||||||
static const int warningAttachmentFileSizeInMegabytes = 10;
|
static const int warningAttachmentFileSizeInMegabytes = 10;
|
||||||
static const int defaultLimitAutocomplete = 8;
|
static const int defaultLimitAutocomplete = 8;
|
||||||
|
|
||||||
|
static const String envFileName = 'env.file';
|
||||||
static const String appDashboardConfigurationPath = "configurations/app_dashboard.json";
|
static const String appDashboardConfigurationPath = "configurations/app_dashboard.json";
|
||||||
static const String appFCMConfigurationPath = "configurations/env.fcm";
|
static const String appFCMConfigurationPath = "configurations/env.fcm";
|
||||||
static const String iOSKeychainSharingGroupId = 'KUT463DS29.com.linagora.ios.teammail.shared';
|
static const String iOSKeychainSharingGroupId = 'KUT463DS29.com.linagora.ios.teammail.shared';
|
||||||
|
|||||||
@@ -11,17 +11,16 @@ import 'package:tmail_ui_user/main/utils/app_config.dart';
|
|||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
class AppUtils {
|
class AppUtils {
|
||||||
|
const AppUtils._();
|
||||||
static const String envFileName = 'env.file';
|
|
||||||
|
|
||||||
static Future<void> loadEnvFile() async {
|
static Future<void> loadEnvFile() async {
|
||||||
await dotenv.load(fileName: envFileName);
|
await dotenv.load(fileName: AppConfig.envFileName);
|
||||||
final mapEnvData = Map<String, String>.from(dotenv.env);
|
final mapEnvData = Map<String, String>.from(dotenv.env);
|
||||||
try {
|
try {
|
||||||
await AppUtils.loadFcmConfigFileToEnv(currentMapEnvData: mapEnvData);
|
await loadFcmConfigFileToEnv(currentMapEnvData: mapEnvData);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logError('AppUtils::loadEnvFile:loadFcmConfigFileToEnv: Exception = $e');
|
logError('AppUtils::loadEnvFile:loadFcmConfigFileToEnv: Exception = $e');
|
||||||
await dotenv.load(fileName: envFileName);
|
await dotenv.load(fileName: AppConfig.envFileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
import 'package:core/utils/app_logger.dart';
|
||||||
|
import 'package:html_editor_enhanced/utils/html_editor_constants.dart';
|
||||||
|
import 'package:html_editor_enhanced/utils/html_editor_utils.dart';
|
||||||
|
|
||||||
|
class AssetPreloader {
|
||||||
|
const AssetPreloader._();
|
||||||
|
|
||||||
|
static Future<void> preloadHtmlEditorAssets() async {
|
||||||
|
try {
|
||||||
|
await Future.wait([
|
||||||
|
HtmlEditorUtils.loadAsset(HtmlEditorConstants.summernoteHtmlAssetPath),
|
||||||
|
HtmlEditorUtils.loadAsset(HtmlEditorConstants.jqueryAssetPath),
|
||||||
|
HtmlEditorUtils.loadAsset(HtmlEditorConstants.summernoteCSSAssetPath),
|
||||||
|
HtmlEditorUtils.loadAsset(HtmlEditorConstants.summernoteJSAssetPath),
|
||||||
|
HtmlEditorUtils.loadAsset(HtmlEditorConstants.summernoteFontEOTAssetPath),
|
||||||
|
HtmlEditorUtils.loadAsset(HtmlEditorConstants.summernoteFontTTFAssetPath),
|
||||||
|
]);
|
||||||
|
} catch (e) {
|
||||||
|
logError('AssetPreloader::preloadHtmlEditorAssets:Exception = $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user