TF-3113 Fix cannot empty spam on mobile (#3129)

This commit is contained in:
Dat Vu
2024-09-10 18:09:24 +07:00
committed by GitHub
parent 9281262712
commit f2a20970aa
3 changed files with 65 additions and 26 deletions
@@ -66,12 +66,13 @@ class ThreadIsolateWorker {
EmptyMailboxFolderArguments args, EmptyMailboxFolderArguments args,
TypeSendPort sendPort TypeSendPort sendPort
) async { ) async {
final rootIsolateToken = args.isolateToken;
BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken);
await HiveCacheConfig.instance.setUp();
List<EmailId> emailListCompleted = List.empty(growable: true);
try { try {
final rootIsolateToken = args.isolateToken;
BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken);
await HiveCacheConfig.instance.setUp();
List<EmailId> emailListCompleted = List.empty(growable: true);
var hasEmails = true; var hasEmails = true;
Email? lastEmail; Email? lastEmail;
@@ -104,11 +105,12 @@ class ThreadIsolateWorker {
hasEmails = false; hasEmails = false;
} }
} }
log('ThreadIsolateWorker::_emptyMailboxFolderAction(): TOTAL_REMOVE: ${emailListCompleted.length}');
return emailListCompleted;
} catch (e) { } catch (e) {
log('ThreadIsolateWorker::_emptyMailboxFolderAction(): ERROR: $e'); logError('ThreadIsolateWorker::_emptyMailboxFolderAction(): ERROR: $e');
rethrow;
} }
log('ThreadIsolateWorker::_emptyMailboxFolderAction(): TOTAL_REMOVE: ${emailListCompleted.length}');
return emailListCompleted;
} }
Future<List<EmailId>> _emptyMailboxFolderOnWeb( Future<List<EmailId>> _emptyMailboxFolderOnWeb(
+2 -1
View File
@@ -1,5 +1,6 @@
import 'package:core/presentation/utils/theme_utils.dart'; import 'package:core/presentation/utils/theme_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:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -22,7 +23,7 @@ void main() async {
await Future.wait([ await Future.wait([
MainBindings().dependencies(), MainBindings().dependencies(),
HiveCacheConfig.instance.setUp(), HiveCacheConfig.instance.setUp(),
Executor().warmUp(), Executor().warmUp(log: BuildUtils.isDebugMode),
AppUtils.loadEnvFile() AppUtils.loadEnvFile()
]); ]);
await HiveCacheConfig.instance.initializeEncryptionKey(); await HiveCacheConfig.instance.initializeEncryptionKey();
@@ -1,17 +1,22 @@
import 'package:core/core.dart'; import 'package:core/core.dart';
import 'package:device_info_plus/device_info_plus.dart'; import 'package:device_info_plus/device_info_plus.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_appauth/flutter_appauth.dart'; import 'package:flutter_appauth/flutter_appauth.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:jmap_dart_client/http/http_client.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/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/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/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/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/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/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/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_api.dart';
import 'package:tmail_ui_user/features/thread/data/network/thread_isolate_worker.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'; import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
@@ -24,41 +29,57 @@ class NetworkIsolateBindings extends Bindings {
@override @override
void dependencies() { void dependencies() {
_bindingDio(); _bindingDio();
_bindingSharing();
_bindingInterceptors();
_bindingApi(); _bindingApi();
_bindingIsolateWorker(); _bindingIsolateWorker();
} }
void _bindingDio() { void _bindingDio() {
final dio = Get.put(Dio(Get.find<BaseOptions>()), tag: BindingTag.isolateTag); Get.put(Dio(Get.find<BaseOptions>()), tag: BindingTag.isolateTag);
Get.put(DioClient(dio), tag: BindingTag.isolateTag); Get.put(DioClient(
Get.find<Dio>(tag: BindingTag.isolateTag)),
tag: BindingTag.isolateTag);
Get.put(const FlutterAppAuth(), tag: BindingTag.isolateTag); Get.put(const FlutterAppAuth(), tag: BindingTag.isolateTag);
Get.put(AppAuthWebPlugin(), tag: BindingTag.isolateTag); Get.put(AppAuthWebPlugin(), tag: BindingTag.isolateTag);
Get.put(AuthenticationClientBase(tag: BindingTag.isolateTag), tag: BindingTag.isolateTag); Get.put(
_bindingInterceptors(dio); AuthenticationClientBase(tag: BindingTag.isolateTag),
tag: BindingTag.isolateTag);
} }
void _bindingInterceptors(Dio dio) { void _bindingInterceptors() {
Get.put(AuthorizationInterceptors( Get.put(AuthorizationInterceptors(
dio, Get.find<Dio>(tag: BindingTag.isolateTag),
Get.find<AuthenticationClientBase>(tag: BindingTag.isolateTag), Get.find<AuthenticationClientBase>(tag: BindingTag.isolateTag),
Get.find<TokenOidcCacheManager>(tag: BindingTag.isolateTag), Get.find<TokenOidcCacheManager>(tag: BindingTag.isolateTag),
Get.find<AccountCacheManager>(tag: BindingTag.isolateTag), Get.find<AccountCacheManager>(tag: BindingTag.isolateTag),
Get.find<IOSSharingManager>(), Get.find<IOSSharingManager>(tag: BindingTag.isolateTag),
), tag: BindingTag.isolateTag); ), tag: BindingTag.isolateTag);
dio.interceptors.add(Get.find<DynamicUrlInterceptors>()); Get.find<Dio>(tag: BindingTag.isolateTag).interceptors
dio.interceptors.add(Get.find<AuthorizationInterceptors>(tag: BindingTag.isolateTag)); .add(Get.find<DynamicUrlInterceptors>());
if (kDebugMode) { Get.find<Dio>(tag: BindingTag.isolateTag).interceptors
dio.interceptors.add(LogInterceptor(requestBody: true)); .add(Get.find<AuthorizationInterceptors>(tag: BindingTag.isolateTag));
if (BuildUtils.isDebugMode) {
Get.find<Dio>(tag: BindingTag.isolateTag).interceptors
.add(LogInterceptor(requestBody: true));
} }
} }
void _bindingApi() { void _bindingApi() {
final httpClient = Get.put(HttpClient(Get.find<Dio>(tag: BindingTag.isolateTag)), tag: BindingTag.isolateTag); Get.put(HttpClient(
Get.put(DownloadClient(Get.find<DioClient>(tag: BindingTag.isolateTag), Get.find<CompressFileUtils>()), tag: BindingTag.isolateTag); Get.find<Dio>(tag: BindingTag.isolateTag)),
Get.put(DownloadManager(Get.find<DownloadClient>(tag: BindingTag.isolateTag), Get.find<DeviceInfoPlugin>()), tag: BindingTag.isolateTag); tag: BindingTag.isolateTag);
Get.put(ThreadAPI(httpClient), tag: BindingTag.isolateTag); Get.put(DownloadClient(
Get.find<DioClient>(tag: BindingTag.isolateTag),
Get.find<CompressFileUtils>()), tag: BindingTag.isolateTag);
Get.put(DownloadManager(
Get.find<DownloadClient>(tag: BindingTag.isolateTag),
Get.find<DeviceInfoPlugin>()), tag: BindingTag.isolateTag);
Get.put(ThreadAPI(
Get.find<HttpClient>(tag: BindingTag.isolateTag)),
tag: BindingTag.isolateTag);
Get.put(EmailAPI( Get.put(EmailAPI(
httpClient, Get.find<HttpClient>(tag: BindingTag.isolateTag),
Get.find<DownloadManager>(tag: BindingTag.isolateTag), Get.find<DownloadManager>(tag: BindingTag.isolateTag),
Get.find<DioClient>(tag: BindingTag.isolateTag), Get.find<DioClient>(tag: BindingTag.isolateTag),
Get.find<Uuid>() Get.find<Uuid>()
@@ -78,4 +99,19 @@ class NetworkIsolateBindings extends Bindings {
Get.find<Executor>(), Get.find<Executor>(),
)); ));
} }
void _bindingSharing() {
Get.put(OIDCHttpClient(
Get.find<DioClient>(tag: BindingTag.isolateTag)),
tag: BindingTag.isolateTag);
Get.put(IOSSharingManager(
Get.find<KeychainSharingManager>(),
Get.find<StateCacheManager>(),
Get.find<TokenOidcCacheManager>(),
Get.find<AuthenticationInfoCacheManager>(),
Get.find<OidcConfigurationCacheManager>(),
Get.find<OIDCHttpClient>(tag: BindingTag.isolateTag),
Get.find<MailboxCacheManager>(),
), tag: BindingTag.isolateTag);
}
} }