TF-3671 Fix all composer interaction are blocked without network (#3682)

This commit is contained in:
Dat Vu
2025-05-08 12:50:07 +07:00
committed by GitHub
parent 1615f8be4d
commit d5946542e0
7 changed files with 37 additions and 6 deletions
@@ -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
View File
@@ -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();
+3
View File
@@ -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';
+4 -5
View File
@@ -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);
} }
} }
+23
View File
@@ -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');
}
}
}