diff --git a/lib/features/base/reloadable/reloadable_controller.dart b/lib/features/base/reloadable/reloadable_controller.dart index 2067b7a2a..b05b679c3 100644 --- a/lib/features/base/reloadable/reloadable_controller.dart +++ b/lib/features/base/reloadable/reloadable_controller.dart @@ -11,6 +11,7 @@ import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/caching/caching_manager.dart'; import 'package:tmail_ui_user/features/caching/config/hive_cache_config.dart'; import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart'; +import 'package:tmail_ui_user/features/login/data/network/config/authorization_isolate_interceptors.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_credential_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_stored_token_oidc_state.dart'; import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart'; @@ -30,6 +31,7 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart'; abstract class ReloadableController extends BaseController { final DynamicUrlInterceptors _dynamicUrlInterceptors = Get.find(); final AuthorizationInterceptors _authorizationInterceptors = Get.find(); + final AuthorizationIsolateInterceptors _authorizationIsolateInterceptors = Get.find(); final GetSessionInteractor _getSessionInteractor = Get.find(); final DeleteCredentialInteractor _deleteCredentialInteractor = Get.find(); final CachingManager _cachingManager = Get.find(); @@ -95,6 +97,10 @@ abstract class ReloadableController extends BaseController { credentialViewState.userName.userName, credentialViewState.password.value, ); + _authorizationIsolateInterceptors.setBasicAuthorization( + credentialViewState.userName.userName, + credentialViewState.password.value, + ); } void _handleGetCredentialSuccess(GetCredentialViewState credentialViewState) { @@ -138,6 +144,7 @@ abstract class ReloadableController extends BaseController { _languageCacheManager.removeLanguage(), ]); _authorizationInterceptors.clear(); + _authorizationIsolateInterceptors.clear(); await HiveCacheConfig().closeHive(); _goToLogin(arguments: LoginArguments(LoginFormType.credentialForm)); } @@ -151,6 +158,7 @@ abstract class ReloadableController extends BaseController { _cachingManager.clearAll(), _languageCacheManager.removeLanguage(), ]); + _authorizationIsolateInterceptors.clear(); _authorizationInterceptors.clear(); await HiveCacheConfig().closeHive(); _goToLogin(arguments: LoginArguments(LoginFormType.ssoForm)); @@ -166,6 +174,9 @@ abstract class ReloadableController extends BaseController { _authorizationInterceptors.setTokenAndAuthorityOidc( newToken: tokenOidcSuccess.tokenOidc.toToken(), newConfig: tokenOidcSuccess.oidcConfiguration); + _authorizationIsolateInterceptors.setTokenAndAuthorityOidc( + newToken: tokenOidcSuccess.tokenOidc.toToken(), + newConfig: tokenOidcSuccess.oidcConfiguration); } void injectAutoCompleteBindings() { diff --git a/lib/features/composer/presentation/composer_bindings.dart b/lib/features/composer/presentation/composer_bindings.dart index a28d3bcc7..413e1fa43 100644 --- a/lib/features/composer/presentation/composer_bindings.dart +++ b/lib/features/composer/presentation/composer_bindings.dart @@ -53,7 +53,7 @@ import 'package:tmail_ui_user/features/upload/data/datasource_impl/attachment_up import 'package:tmail_ui_user/features/upload/data/network/file_uploader.dart'; import 'package:tmail_ui_user/features/upload/domain/usecases/local_file_picker_interactor.dart'; import 'package:tmail_ui_user/features/upload/presentation/controller/upload_controller.dart'; -import 'package:worker_manager/worker_manager.dart'; +import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart'; class ComposerBindings extends BaseBindings { @@ -64,7 +64,7 @@ class ComposerBindings extends BaseBindings { } void _bindingsUtils() { - Get.lazyPut(() => FileUploader(Get.find(), Get.find())); + Get.lazyPut(() => FileUploader(Get.find(tag: BindingTag.isoLateTag))); } @override @@ -171,6 +171,7 @@ class ComposerBindings extends BaseBindings { void dispose() { Get.delete(); Get.delete(); + Get.delete(); Get.delete(); } } \ No newline at end of file diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 07cb7dc51..c60023a8e 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -245,7 +245,9 @@ class ComposerController extends BaseController { listIdentities.value = success.identities! .where((identity) => identity.mayDelete == true) .toList(); - selectIdentity(listIdentities.first); + if (listIdentities.isNotEmpty) { + selectIdentity(listIdentities.first); + } } } else if (success is DownloadImageAsBase64Success) { if(kIsWeb) { diff --git a/lib/features/home/presentation/home_bindings.dart b/lib/features/home/presentation/home_bindings.dart index 83258bfe3..017473ae0 100644 --- a/lib/features/home/presentation/home_bindings.dart +++ b/lib/features/home/presentation/home_bindings.dart @@ -19,6 +19,7 @@ import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache 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/config/authorization_interceptors.dart'; +import 'package:tmail_ui_user/features/login/data/network/config/authorization_isolate_interceptors.dart'; import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart'; import 'package:tmail_ui_user/features/login/data/repository/account_repository_impl.dart'; import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart'; @@ -42,6 +43,7 @@ class HomeBindings extends BaseBindings { Get.find(), Get.find(), Get.find(), + Get.find(), Get.find(), Get.find(), Get.find(), diff --git a/lib/features/home/presentation/home_controller.dart b/lib/features/home/presentation/home_controller.dart index a49cfb099..49ba2aa83 100644 --- a/lib/features/home/presentation/home_controller.dart +++ b/lib/features/home/presentation/home_controller.dart @@ -12,6 +12,7 @@ import 'package:tmail_ui_user/features/cleanup/domain/model/recent_search_cleanu import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_email_cache_interactor.dart'; import 'package:tmail_ui_user/features/cleanup/domain/usecases/cleanup_recent_search_cache_interactor.dart'; import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart'; +import 'package:tmail_ui_user/features/login/data/network/config/authorization_isolate_interceptors.dart'; import 'package:tmail_ui_user/features/login/domain/state/check_oidc_is_available_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_credential_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/get_stored_token_oidc_state.dart'; @@ -30,6 +31,7 @@ class HomeController extends BaseController { final GetAuthenticatedAccountInteractor _getAuthenticatedAccountInteractor; final DynamicUrlInterceptors _dynamicUrlInterceptors; final AuthorizationInterceptors _authorizationInterceptors; + final AuthorizationIsolateInterceptors _authorizationIsolateInterceptors; final CleanupEmailCacheInteractor _cleanupEmailCacheInteractor; final EmailReceiveManager _emailReceiveManager; final CleanupRecentSearchCacheInteractor _cleanupRecentSearchCacheInteractor; @@ -42,6 +44,7 @@ class HomeController extends BaseController { this._getAuthenticatedAccountInteractor, this._dynamicUrlInterceptors, this._authorizationInterceptors, + this._authorizationIsolateInterceptors, this._cleanupEmailCacheInteractor, this._emailReceiveManager, this._cleanupRecentSearchCacheInteractor, @@ -176,6 +179,9 @@ class HomeController extends BaseController { _authorizationInterceptors.setTokenAndAuthorityOidc( newToken: storedTokenOidcSuccess.tokenOidc.toToken(), newConfig: storedTokenOidcSuccess.oidcConfiguration); + _authorizationIsolateInterceptors.setTokenAndAuthorityOidc( + newToken: storedTokenOidcSuccess.tokenOidc.toToken(), + newConfig: storedTokenOidcSuccess.oidcConfiguration); pushAndPop(AppRoutes.SESSION); } @@ -185,6 +191,10 @@ class HomeController extends BaseController { credentialViewState.userName.userName, credentialViewState.password.value, ); + _authorizationIsolateInterceptors.setBasicAuthorization( + credentialViewState.userName.userName, + credentialViewState.password.value, + ); pushAndPop(AppRoutes.SESSION); } } \ No newline at end of file diff --git a/lib/features/login/data/network/config/authorization_isolate_interceptors.dart b/lib/features/login/data/network/config/authorization_isolate_interceptors.dart new file mode 100644 index 000000000..ab94dcc5a --- /dev/null +++ b/lib/features/login/data/network/config/authorization_isolate_interceptors.dart @@ -0,0 +1,65 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:dio/dio.dart'; +import 'package:core/core.dart'; +import 'package:model/account/authentication_type.dart'; +import 'package:model/oidc/oidc_configuration.dart'; +import 'package:model/oidc/token.dart'; + +class AuthorizationIsolateInterceptors extends QueuedInterceptorsWrapper { + + AuthenticationType _authenticationType = AuthenticationType.none; + OIDCConfiguration? _configOIDC; + Token? _token; + String? _authorization; + + void setBasicAuthorization(String? userName, String? password) { + _authorization = base64Encode(utf8.encode('$userName:$password')); + _authenticationType = AuthenticationType.basic; + } + + void setTokenAndAuthorityOidc({Token? newToken, OIDCConfiguration? newConfig}) { + _token = newToken; + _configOIDC = newConfig; + _authenticationType = AuthenticationType.oidc; + log('AuthorizationIsolateInterceptors::setToken(): newToken: $newToken'); + log('AuthorizationIsolateInterceptors::setToken(): tokenId: ${newToken?.tokenIdHash}'); + log('AuthorizationIsolateInterceptors::setToken(): EXPIRE_DATE: ${newToken?.expiredTime?.toIso8601String()}'); + } + + OIDCConfiguration? get oidcConfig => _configOIDC; + + AuthenticationType get authenticationType => _authenticationType; + + @override + void onRequest(RequestOptions options, RequestInterceptorHandler handler) { + switch(_authenticationType) { + case AuthenticationType.basic: + if (_authorization != null) { + options.headers[HttpHeaders.authorizationHeader] = _getAuthorizationAsBasicHeader(_authorization); + } + break; + case AuthenticationType.oidc: + if (_token != null && _token?.isTokenValid() == true) { + options.headers[HttpHeaders.authorizationHeader] = _getTokenAsBearerHeader(_token!.token); + } + break; + case AuthenticationType.none: + break; + } + + super.onRequest(options, handler); + } + + String _getAuthorizationAsBasicHeader(String? authorization) => 'Basic $authorization'; + + String _getTokenAsBearerHeader(String token) => 'Bearer $token'; + + void clear() { + _authorization = null; + _token = null; + _configOIDC = null; + _authenticationType = AuthenticationType.none; + } +} diff --git a/lib/features/login/presentation/login_bindings.dart b/lib/features/login/presentation/login_bindings.dart index 94c1edb75..21d7213a1 100644 --- a/lib/features/login/presentation/login_bindings.dart +++ b/lib/features/login/presentation/login_bindings.dart @@ -13,6 +13,7 @@ import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache 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/config/authorization_interceptors.dart'; +import 'package:tmail_ui_user/features/login/data/network/config/authorization_isolate_interceptors.dart'; import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart'; import 'package:tmail_ui_user/features/login/data/repository/account_repository_impl.dart'; import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart'; @@ -39,6 +40,7 @@ class LoginBindings extends BaseBindings { Get.find(), Get.find(), Get.find(), + Get.find(), Get.find(), Get.find(), Get.find(), diff --git a/lib/features/login/presentation/login_controller.dart b/lib/features/login/presentation/login_controller.dart index 201d9c1eb..3b217ed62 100644 --- a/lib/features/login/presentation/login_controller.dart +++ b/lib/features/login/presentation/login_controller.dart @@ -9,6 +9,7 @@ import 'package:get/get.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/login/data/network/config/authorization_interceptors.dart'; +import 'package:tmail_ui_user/features/login/data/network/config/authorization_isolate_interceptors.dart'; import 'package:tmail_ui_user/features/login/domain/state/authenticate_oidc_on_browser_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/authentication_user_state.dart'; import 'package:tmail_ui_user/features/login/domain/state/check_oidc_is_available_state.dart'; @@ -35,6 +36,7 @@ class LoginController extends BaseController { final AuthenticationInteractor _authenticationInteractor; final DynamicUrlInterceptors _dynamicUrlInterceptors; final AuthorizationInterceptors _authorizationInterceptors; + final AuthorizationIsolateInterceptors _authorizationIsolateInterceptors; final CheckOIDCIsAvailableInteractor _checkOIDCIsAvailableInteractor; final GetOIDCConfigurationInteractor _getOIDCConfigurationInteractor; final GetTokenOIDCInteractor _getTokenOIDCInteractor; @@ -52,6 +54,7 @@ class LoginController extends BaseController { this._authenticationInteractor, this._dynamicUrlInterceptors, this._authorizationInterceptors, + this._authorizationIsolateInterceptors, this._checkOIDCIsAvailableInteractor, this._getOIDCConfigurationInteractor, this._getTokenOIDCInteractor, @@ -300,6 +303,9 @@ class LoginController extends BaseController { _authorizationInterceptors.setTokenAndAuthorityOidc( newToken: success.tokenOIDC.toToken(), newConfig: config); + _authorizationIsolateInterceptors.setTokenAndAuthorityOidc( + newToken: success.tokenOIDC.toToken(), + newConfig: config); pushAndPop(AppRoutes.SESSION); } @@ -315,6 +321,7 @@ class LoginController extends BaseController { loginState.value = LoginState(Right(success)); _dynamicUrlInterceptors.changeBaseUrl(kIsWeb ? AppConfig.baseUrl : _urlText); _authorizationInterceptors.setBasicAuthorization(_userNameText, _passwordText); + _authorizationIsolateInterceptors.setBasicAuthorization(_userNameText, _passwordText); pushAndPop(AppRoutes.SESSION); } diff --git a/lib/features/mailbox/data/network/mailbox_isolate_worker.dart b/lib/features/mailbox/data/network/mailbox_isolate_worker.dart index d0f46ae50..889ed2867 100644 --- a/lib/features/mailbox/data/network/mailbox_isolate_worker.dart +++ b/lib/features/mailbox/data/network/mailbox_isolate_worker.dart @@ -29,9 +29,8 @@ class MailboxIsolateWorker { final ThreadAPI _threadApi; final EmailAPI _emailApi; - final Executor _isolateExecutor; - MailboxIsolateWorker(this._threadApi, this._emailApi, this._isolateExecutor); + MailboxIsolateWorker(this._threadApi, this._emailApi); Future> markAsMailboxRead( AccountId accountId, @@ -46,7 +45,7 @@ class MailboxIsolateWorker { totalEmailUnread, onProgressController); } else { - final result = await _isolateExecutor.execute( + final result = await Executor().execute( arg1: MailboxMarkAsReadArguments( _threadApi, _emailApi, diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 41acd17e0..d7435741f 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -70,7 +70,6 @@ class MailboxDashBoardController extends ReloadableController { final ResponsiveUtils _responsiveUtils = Get.find(); final EmailReceiveManager _emailReceiveManager = Get.find(); final SearchController searchController = Get.find(); - final Executor _isolateExecutor = Get.find(); final DownloadController downloadController = Get.find(); final MoveToMailboxInteractor _moveToMailboxInteractor; @@ -94,7 +93,6 @@ class MailboxDashBoardController extends ReloadableController { final composerOverlayState = ComposerOverlayState.inActive.obs; final viewStateMarkAsReadMailbox = Rx>(Right(UIState.idle)); final vacationResponse = Rxn(); - Session? sessionCurrent; Map mapDefaultMailboxId = {}; Map mapMailbox = {}; @@ -123,10 +121,9 @@ class MailboxDashBoardController extends ReloadableController { @override void onInit() { + _registerProgressState(); _registerNetworkConnectivityState(); - _registerPendingEmailAddress(); - _registerPendingFileInfo(); - _initializeIsolateExecutor(); + super.onInit(); } @@ -134,6 +131,8 @@ class MailboxDashBoardController extends ReloadableController { void onReady() { log('MailboxDashBoardController::onReady()'); dispatchRoute(AppRoutes.THREAD); + _registerPendingEmailAddress(); + _registerPendingFileInfo(); _setSessionCurrent(); _getUserProfile(); _getVacationResponse(); @@ -266,7 +265,7 @@ class MailboxDashBoardController extends ReloadableController { _fileReceiveManagerStreamSubscription = _emailReceiveManager.pendingFileInfo.stream.listen((listFile) { log('MailboxDashBoardController::_registerPendingFileInfo(): ${listFile.length}'); - if (listFile.isNotEmpty) { + if (listFile.isNotEmpty && sessionCurrent != null) { _emailReceiveManager.clearPendingFileInfo(); final arguments = ComposerArguments( emailActionType: EmailActionType.edit, @@ -278,9 +277,7 @@ class MailboxDashBoardController extends ReloadableController { }); } - void _initializeIsolateExecutor() async { - await _isolateExecutor.warmUp(log: BuildUtils.isDebugMode); - + void _registerProgressState() async { progressState.listen((state) { viewStateMarkAsReadMailbox.value = state; }); @@ -647,7 +644,7 @@ class MailboxDashBoardController extends ReloadableController { _fileReceiveManagerStreamSubscription.cancel(); _connectivityStreamSubscription.cancel(); _progressStateController.close(); - _isolateExecutor.dispose(); + Executor().dispose(); Get.delete(); super.onClose(); } diff --git a/lib/features/thread/data/network/thread_isolate_worker.dart b/lib/features/thread/data/network/thread_isolate_worker.dart index 445641df5..4a131fbe6 100644 --- a/lib/features/thread/data/network/thread_isolate_worker.dart +++ b/lib/features/thread/data/network/thread_isolate_worker.dart @@ -19,9 +19,8 @@ import 'package:worker_manager/worker_manager.dart'; class ThreadIsolateWorker { final ThreadAPI _threadAPI; final EmailAPI _emailAPI; - final Executor _isolateExecutor; - ThreadIsolateWorker(this._threadAPI, this._emailAPI, this._isolateExecutor); + ThreadIsolateWorker(this._threadAPI, this._emailAPI); Future> emptyTrashFolder( AccountId accountId, @@ -31,7 +30,7 @@ class ThreadIsolateWorker { if (BuildUtils.isWeb) { return _emptyTrashFolderOnWeb(accountId, mailboxId, updateDestroyedEmailCache); } else { - final result = await _isolateExecutor.execute( + final result = await Executor().execute( arg1: EmptyTrashFolderArguments(_threadAPI, _emailAPI, accountId, mailboxId), fun1: _emptyTrashFolderAction, notification: (value) { diff --git a/lib/features/upload/data/network/file_uploader.dart b/lib/features/upload/data/network/file_uploader.dart index 149f6cff1..bc1265ca4 100644 --- a/lib/features/upload/data/network/file_uploader.dart +++ b/lib/features/upload/data/network/file_uploader.dart @@ -17,9 +17,8 @@ import 'package:worker_manager/worker_manager.dart' as worker; class FileUploader { final DioClient _dioClient; - final worker.Executor _isolateExecutor; - FileUploader(this._dioClient, this._isolateExecutor); + FileUploader(this._dioClient); Future uploadAttachment( UploadTaskId uploadId, @@ -36,7 +35,7 @@ class FileUploader { uploadUri, cancelToken: cancelToken); } else { - final attachmentUploaded = await _isolateExecutor.execute( + final attachmentUploaded = await worker.Executor().execute( arg1: UploadFileArguments( _dioClient, uploadId, diff --git a/lib/main.dart b/lib/main.dart index 55bb8a358..4f1101248 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,6 +11,7 @@ import 'package:tmail_ui_user/main/localizations/app_localizations_delegate.dart import 'package:tmail_ui_user/main/localizations/localization_service.dart'; import 'package:tmail_ui_user/main/pages/app_pages.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart'; +import 'package:worker_manager/worker_manager.dart'; void main() async { initLogger(() async { @@ -23,6 +24,7 @@ void main() async { )); await MainBindings().dependencies(); await HiveCacheConfig().setUp(); + await Executor().warmUp(); await dotenv.load(fileName: 'env.file'); runApp(const TMailApp()); }); diff --git a/lib/main/bindings/network/binding_tag.dart b/lib/main/bindings/network/binding_tag.dart new file mode 100644 index 000000000..1e8abdbaf --- /dev/null +++ b/lib/main/bindings/network/binding_tag.dart @@ -0,0 +1,3 @@ +class BindingTag { + static const isoLateTag = 'isoLateTag'; +} \ No newline at end of file diff --git a/lib/main/bindings/network/network_bindings.dart b/lib/main/bindings/network/network_bindings.dart index 00eaec1aa..1b0484373 100644 --- a/lib/main/bindings/network/network_bindings.dart +++ b/lib/main/bindings/network/network_bindings.dart @@ -13,6 +13,7 @@ import 'package:tmail_ui_user/features/login/data/local/account_cache_manager.da 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/config/authorization_interceptors.dart'; +import 'package:tmail_ui_user/features/login/data/network/config/authorization_isolate_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/network/mailbox_api.dart'; @@ -21,7 +22,7 @@ import 'package:tmail_ui_user/features/manage_account/data/network/manage_accoun import 'package:tmail_ui_user/features/session/data/network/session_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:worker_manager/worker_manager.dart'; +import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart'; class NetworkBindings extends Bindings { @@ -45,7 +46,9 @@ class NetworkBindings extends Bindings { void _bindingDio() { _bindingBaseOption(); Get.put(Dio(Get.find())); + Get.put(Dio(Get.find()), tag: BindingTag.isoLateTag); Get.put(DioClient(Get.find())); + Get.put(DioClient(Get.find(tag: BindingTag.isoLateTag)), tag: BindingTag.isoLateTag); Get.put(const FlutterAppAuth()); Get.put(AppAuthWebPlugin()); Get.put(OIDCHttpClient(Get.find())); @@ -55,16 +58,20 @@ class NetworkBindings extends Bindings { void _bindingInterceptors() { Get.put(DynamicUrlInterceptors()); + Get.put(AuthorizationIsolateInterceptors()); Get.put(AuthorizationInterceptors( Get.find(), Get.find(), Get.find(), - Get.find() + Get.find(), )); + Get.find(tag: BindingTag.isoLateTag).interceptors.add(Get.find()); + Get.find(tag: BindingTag.isoLateTag).interceptors.add(Get.find()); Get.find().interceptors.add(Get.find()); Get.find().interceptors.add(Get.find()); if (kDebugMode) { Get.find().interceptors.add(LogInterceptor(requestBody: true)); + Get.find(tag: BindingTag.isoLateTag).interceptors.add(LogInterceptor(requestBody: true)); } } @@ -92,14 +99,11 @@ class NetworkBindings extends Bindings { } void _bindingIsolateWorker() { - Get.put(Executor()); Get.put(ThreadIsolateWorker( Get.find(), - Get.find(), - Get.find())); + Get.find())); Get.put(MailboxIsolateWorker( Get.find(), - Get.find(), - Get.find())); + Get.find())); } } \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index 9c36dc885..a7f17bb2e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -176,7 +176,7 @@ dependencies: percent_indicator: 4.2.2 # Isolate - worker_manager: 4.4.0 + worker_manager: 4.4.6 async: 2.8.2