From f2a20970aa557b0f7e62bba28c1d44490de215d5 Mon Sep 17 00:00:00 2001 From: Dat Vu Date: Tue, 10 Sep 2024 18:09:24 +0700 Subject: [PATCH] TF-3113 Fix cannot empty spam on mobile (#3129) --- .../data/network/thread_isolate_worker.dart | 18 ++--- lib/main.dart | 3 +- .../network/network_isolate_binding.dart | 70 ++++++++++++++----- 3 files changed, 65 insertions(+), 26 deletions(-) diff --git a/lib/features/thread/data/network/thread_isolate_worker.dart b/lib/features/thread/data/network/thread_isolate_worker.dart index 83062371c..73b69e666 100644 --- a/lib/features/thread/data/network/thread_isolate_worker.dart +++ b/lib/features/thread/data/network/thread_isolate_worker.dart @@ -66,12 +66,13 @@ class ThreadIsolateWorker { EmptyMailboxFolderArguments args, TypeSendPort sendPort ) async { - final rootIsolateToken = args.isolateToken; - BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken); - await HiveCacheConfig.instance.setUp(); - - List emailListCompleted = List.empty(growable: true); try { + final rootIsolateToken = args.isolateToken; + BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken); + await HiveCacheConfig.instance.setUp(); + + List emailListCompleted = List.empty(growable: true); + var hasEmails = true; Email? lastEmail; @@ -104,11 +105,12 @@ class ThreadIsolateWorker { hasEmails = false; } } + log('ThreadIsolateWorker::_emptyMailboxFolderAction(): TOTAL_REMOVE: ${emailListCompleted.length}'); + return emailListCompleted; } catch (e) { - log('ThreadIsolateWorker::_emptyMailboxFolderAction(): ERROR: $e'); + logError('ThreadIsolateWorker::_emptyMailboxFolderAction(): ERROR: $e'); + rethrow; } - log('ThreadIsolateWorker::_emptyMailboxFolderAction(): TOTAL_REMOVE: ${emailListCompleted.length}'); - return emailListCompleted; } Future> _emptyMailboxFolderOnWeb( diff --git a/lib/main.dart b/lib/main.dart index 1ff6496fe..86435990a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'package:core/presentation/utils/theme_utils.dart'; import 'package:core/utils/app_logger.dart'; +import 'package:core/utils/build_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:get/get.dart'; @@ -22,7 +23,7 @@ void main() async { await Future.wait([ MainBindings().dependencies(), HiveCacheConfig.instance.setUp(), - Executor().warmUp(), + Executor().warmUp(log: BuildUtils.isDebugMode), AppUtils.loadEnvFile() ]); await HiveCacheConfig.instance.initializeEncryptionKey(); diff --git a/lib/main/bindings/network/network_isolate_binding.dart b/lib/main/bindings/network/network_isolate_binding.dart index a7b81d0fd..e1ca8614d 100644 --- a/lib/main/bindings/network/network_isolate_binding.dart +++ b/lib/main/bindings/network/network_isolate_binding.dart @@ -1,17 +1,22 @@ import 'package:core/core.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:dio/dio.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter_appauth/flutter_appauth.dart'; import 'package:get/get.dart'; import 'package:jmap_dart_client/http/http_client.dart'; import 'package:tmail_ui_user/features/email/data/network/email_api.dart'; import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.dart'; +import 'package:tmail_ui_user/features/login/data/local/authentication_info_cache_manager.dart'; +import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart'; import 'package:tmail_ui_user/features/login/data/network/interceptors/authorization_interceptors.dart'; +import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart'; import 'package:tmail_ui_user/features/login/data/utils/library_platform/app_auth_plugin/app_auth_plugin.dart'; +import 'package:tmail_ui_user/features/mailbox/data/local/mailbox_cache_manager.dart'; +import 'package:tmail_ui_user/features/mailbox/data/local/state_cache_manager.dart'; import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.dart'; +import 'package:tmail_ui_user/features/push_notification/data/keychain/keychain_sharing_manager.dart'; import 'package:tmail_ui_user/features/thread/data/network/thread_api.dart'; import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker.dart'; import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart'; @@ -24,41 +29,57 @@ class NetworkIsolateBindings extends Bindings { @override void dependencies() { _bindingDio(); + _bindingSharing(); + _bindingInterceptors(); _bindingApi(); _bindingIsolateWorker(); } void _bindingDio() { - final dio = Get.put(Dio(Get.find()), tag: BindingTag.isolateTag); - Get.put(DioClient(dio), tag: BindingTag.isolateTag); + Get.put(Dio(Get.find()), tag: BindingTag.isolateTag); + Get.put(DioClient( + Get.find(tag: BindingTag.isolateTag)), + tag: BindingTag.isolateTag); Get.put(const FlutterAppAuth(), tag: BindingTag.isolateTag); Get.put(AppAuthWebPlugin(), tag: BindingTag.isolateTag); - Get.put(AuthenticationClientBase(tag: BindingTag.isolateTag), tag: BindingTag.isolateTag); - _bindingInterceptors(dio); + Get.put( + AuthenticationClientBase(tag: BindingTag.isolateTag), + tag: BindingTag.isolateTag); } - void _bindingInterceptors(Dio dio) { + void _bindingInterceptors() { Get.put(AuthorizationInterceptors( - dio, + Get.find(tag: BindingTag.isolateTag), Get.find(tag: BindingTag.isolateTag), Get.find(tag: BindingTag.isolateTag), Get.find(tag: BindingTag.isolateTag), - Get.find(), + Get.find(tag: BindingTag.isolateTag), ), tag: BindingTag.isolateTag); - dio.interceptors.add(Get.find()); - dio.interceptors.add(Get.find(tag: BindingTag.isolateTag)); - if (kDebugMode) { - dio.interceptors.add(LogInterceptor(requestBody: true)); + Get.find(tag: BindingTag.isolateTag).interceptors + .add(Get.find()); + Get.find(tag: BindingTag.isolateTag).interceptors + .add(Get.find(tag: BindingTag.isolateTag)); + if (BuildUtils.isDebugMode) { + Get.find(tag: BindingTag.isolateTag).interceptors + .add(LogInterceptor(requestBody: true)); } } void _bindingApi() { - final httpClient = Get.put(HttpClient(Get.find(tag: BindingTag.isolateTag)), tag: BindingTag.isolateTag); - Get.put(DownloadClient(Get.find(tag: BindingTag.isolateTag), Get.find()), tag: BindingTag.isolateTag); - Get.put(DownloadManager(Get.find(tag: BindingTag.isolateTag), Get.find()), tag: BindingTag.isolateTag); - Get.put(ThreadAPI(httpClient), tag: BindingTag.isolateTag); + Get.put(HttpClient( + Get.find(tag: BindingTag.isolateTag)), + tag: BindingTag.isolateTag); + Get.put(DownloadClient( + Get.find(tag: BindingTag.isolateTag), + Get.find()), tag: BindingTag.isolateTag); + Get.put(DownloadManager( + Get.find(tag: BindingTag.isolateTag), + Get.find()), tag: BindingTag.isolateTag); + Get.put(ThreadAPI( + Get.find(tag: BindingTag.isolateTag)), + tag: BindingTag.isolateTag); Get.put(EmailAPI( - httpClient, + Get.find(tag: BindingTag.isolateTag), Get.find(tag: BindingTag.isolateTag), Get.find(tag: BindingTag.isolateTag), Get.find() @@ -78,4 +99,19 @@ class NetworkIsolateBindings extends Bindings { Get.find(), )); } + + void _bindingSharing() { + Get.put(OIDCHttpClient( + Get.find(tag: BindingTag.isolateTag)), + tag: BindingTag.isolateTag); + Get.put(IOSSharingManager( + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(), + Get.find(tag: BindingTag.isolateTag), + Get.find(), + ), tag: BindingTag.isolateTag); + } } \ No newline at end of file