From bc1463d9d0cea6bb3fe52df1b4b8a3e796911d2f Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 23 Jul 2024 13:37:17 +0700 Subject: [PATCH] TF-2893 Fix data loss when executing `dotenv.load()` and `dotenv.get()` simultaneously --- lib/features/base/base_controller.dart | 4 ---- lib/main/utils/app_utils.dart | 12 ++++++++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/features/base/base_controller.dart b/lib/features/base/base_controller.dart index aa67abef39..39f9d3dc28 100644 --- a/lib/features/base/base_controller.dart +++ b/lib/features/base/base_controller.dart @@ -18,7 +18,6 @@ import 'package:dartz/dartz.dart'; import 'package:fcm/model/firebase_capability.dart'; import 'package:fcm/model/firebase_registration_id.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:forward/forward/capability_forward.dart'; import 'package:get/get.dart'; @@ -63,7 +62,6 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.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/utils/app_config.dart'; -import 'package:tmail_ui_user/main/utils/app_utils.dart'; import 'package:tmail_ui_user/main/universal_import/html_stub.dart' as html; import 'package:uuid/uuid.dart'; @@ -355,8 +353,6 @@ abstract class BaseController extends GetxController requireCapability(session!, accountId!, [FirebaseCapability.fcmIdentifier]); log('$runtimeType::injectFCMBindings: fcmAvailable = ${AppConfig.fcmAvailable}'); if (AppConfig.fcmAvailable) { - final mapEnvData = Map.from(dotenv.env); - await AppUtils.loadFcmConfigFileToEnv(currentMapEnvData: mapEnvData); await FcmConfiguration.initialize(); FcmInteractorBindings().dependencies(); FcmService.instance.initialStreamController(); diff --git a/lib/main/utils/app_utils.dart b/lib/main/utils/app_utils.dart index cfbde8b7a0..1f527f8601 100644 --- a/lib/main/utils/app_utils.dart +++ b/lib/main/utils/app_utils.dart @@ -1,3 +1,4 @@ +import 'package:core/utils/app_logger.dart'; import 'package:date_format/date_format.dart' as date_format; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -13,8 +14,15 @@ class AppUtils { static const String envFileName = 'env.file'; - static Future loadEnvFile() { - return dotenv.load(fileName: envFileName); + static Future loadEnvFile() async { + await dotenv.load(fileName: envFileName); + final mapEnvData = Map.from(dotenv.env); + try { + await AppUtils.loadFcmConfigFileToEnv(currentMapEnvData: mapEnvData); + } catch (e) { + logError('AppUtils::loadEnvFile:loadFcmConfigFileToEnv: Exception = $e'); + await dotenv.load(fileName: envFileName); + } } static Future loadFcmConfigFileToEnv({Map? currentMapEnvData}) {