TF-501 [iOS] add Mail app to be Default mail
This commit is contained in:
@@ -15,6 +15,18 @@ import receive_sharing_intent
|
|||||||
FlutterDownloaderPlugin.register(with: registry.registrar(forPlugin: "FlutterDownloaderPlugin")!)
|
FlutterDownloaderPlugin.register(with: registry.registrar(forPlugin: "FlutterDownloaderPlugin")!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let sharingIntent = SwiftReceiveSharingIntentPlugin.instance
|
||||||
|
if let url = launchOptions?[UIApplication.LaunchOptionsKey.url] as? URL {
|
||||||
|
if url.scheme == "mailto" {
|
||||||
|
if let url = handleEmailAndress(open: url) {
|
||||||
|
let corrected = launchOptions!.map { (key, value) in key != .url ? (key, value) : (key, url) }
|
||||||
|
|
||||||
|
return sharingIntent.application(application, didFinishLaunchingWithOptions: Dictionary(uniqueKeysWithValues: corrected))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,6 +36,11 @@ import receive_sharing_intent
|
|||||||
return sharingIntent.application(app, open: url, options: options)
|
return sharingIntent.application(app, open: url, options: options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if url.scheme == "mailto" {
|
||||||
|
if let url = handleEmailAndress(open: url) {
|
||||||
|
return sharingIntent.application(app, open: url, options: options)
|
||||||
|
}
|
||||||
|
}
|
||||||
// For example load MSALPublicClientApplication
|
// For example load MSALPublicClientApplication
|
||||||
// return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[.sourceApplication] as? String)
|
// return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[.sourceApplication] as? String)
|
||||||
|
|
||||||
@@ -34,4 +51,18 @@ import receive_sharing_intent
|
|||||||
return super.application(app, open: url, options:options)
|
return super.application(app, open: url, options:options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func handleEmailAndress(open url: URL) -> URL? {
|
||||||
|
let appDomain = Bundle.main.bundleIdentifier!
|
||||||
|
let appGroupId = (Bundle.main.object(forInfoDictionaryKey: "AppGroupId") as? String) ?? "group.\(Bundle.main.bundleIdentifier!)"
|
||||||
|
let sharedKey = "ShareKey"
|
||||||
|
var sharedText: [String] = []
|
||||||
|
if let email = url.absoluteString.components(separatedBy: ":").last {
|
||||||
|
sharedText.append(email)
|
||||||
|
}
|
||||||
|
let userDefaults = UserDefaults(suiteName: appGroupId)
|
||||||
|
userDefaults?.set(sharedText, forKey: sharedKey)
|
||||||
|
userDefaults?.synchronize()
|
||||||
|
return URL(string: "ShareMedia-\(appDomain)://dataUrl=\(sharedKey)#text")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>com.apple.developer.mail-client</key>
|
||||||
|
<true/>
|
||||||
<key>AppGroupId</key>
|
<key>AppGroupId</key>
|
||||||
<string>${APP_GROUP_ID}</string>
|
<string>${APP_GROUP_ID}</string>
|
||||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||||
@@ -33,6 +35,7 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>ShareMedia-$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
<string>ShareMedia-$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
<string>teammail.mobile</string>
|
<string>teammail.mobile</string>
|
||||||
|
<string>mailto</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ 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/caching_manager.dart';
|
||||||
import 'package:tmail_ui_user/features/caching/config/hive_cache_config.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_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_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/state/get_stored_token_oidc_state.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/delete_authority_oidc_interactor.dart';
|
||||||
@@ -25,13 +24,14 @@ import 'package:tmail_ui_user/features/manage_account/domain/state/log_out_oidc_
|
|||||||
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/usecases/log_out_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart';
|
import 'package:tmail_ui_user/features/session/domain/state/get_session_state.dart';
|
||||||
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
import 'package:tmail_ui_user/features/session/domain/usecases/get_session_interactor.dart';
|
||||||
|
import 'package:tmail_ui_user/main/bindings/network/binding_tag.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';
|
||||||
|
|
||||||
abstract class ReloadableController extends BaseController {
|
abstract class ReloadableController extends BaseController {
|
||||||
final DynamicUrlInterceptors _dynamicUrlInterceptors = Get.find<DynamicUrlInterceptors>();
|
final DynamicUrlInterceptors _dynamicUrlInterceptors = Get.find<DynamicUrlInterceptors>();
|
||||||
final AuthorizationInterceptors _authorizationInterceptors = Get.find<AuthorizationInterceptors>();
|
final AuthorizationInterceptors _authorizationInterceptors = Get.find<AuthorizationInterceptors>();
|
||||||
final AuthorizationIsolateInterceptors _authorizationIsolateInterceptors = Get.find<AuthorizationIsolateInterceptors>();
|
final AuthorizationInterceptors _authorizationIsolateInterceptors = Get.find<AuthorizationInterceptors>(tag: BindingTag.isolateTag);
|
||||||
final GetSessionInteractor _getSessionInteractor = Get.find<GetSessionInteractor>();
|
final GetSessionInteractor _getSessionInteractor = Get.find<GetSessionInteractor>();
|
||||||
final DeleteCredentialInteractor _deleteCredentialInteractor = Get.find<DeleteCredentialInteractor>();
|
final DeleteCredentialInteractor _deleteCredentialInteractor = Get.find<DeleteCredentialInteractor>();
|
||||||
final CachingManager _cachingManager = Get.find<CachingManager>();
|
final CachingManager _cachingManager = Get.find<CachingManager>();
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class ComposerBindings extends BaseBindings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _bindingsUtils() {
|
void _bindingsUtils() {
|
||||||
Get.lazyPut(() => FileUploader(Get.find<DioClient>(tag: BindingTag.isoLateTag), Get.find<Executor>()));
|
Get.lazyPut(() => FileUploader(Get.find<DioClient>(tag: BindingTag.isolateTag), Get.find<Executor>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ 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/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/config/authorization_interceptors.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/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/account_repository_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart';
|
import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart';
|
||||||
@@ -33,6 +32,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_a
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_credential_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_token_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/data/local/email_cache_manager.dart';
|
import 'package:tmail_ui_user/features/thread/data/local/email_cache_manager.dart';
|
||||||
|
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
|
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
|
||||||
|
|
||||||
class HomeBindings extends BaseBindings {
|
class HomeBindings extends BaseBindings {
|
||||||
@@ -43,7 +43,7 @@ class HomeBindings extends BaseBindings {
|
|||||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||||
Get.find<DynamicUrlInterceptors>(),
|
Get.find<DynamicUrlInterceptors>(),
|
||||||
Get.find<AuthorizationInterceptors>(),
|
Get.find<AuthorizationInterceptors>(),
|
||||||
Get.find<AuthorizationIsolateInterceptors>(),
|
Get.find<AuthorizationInterceptors>(tag: BindingTag.isolateTag),
|
||||||
Get.find<CleanupEmailCacheInteractor>(),
|
Get.find<CleanupEmailCacheInteractor>(),
|
||||||
Get.find<EmailReceiveManager>(),
|
Get.find<EmailReceiveManager>(),
|
||||||
Get.find<CleanupRecentSearchCacheInteractor>(),
|
Get.find<CleanupRecentSearchCacheInteractor>(),
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ 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_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/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_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/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_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/state/get_stored_token_oidc_state.dart';
|
||||||
@@ -31,7 +30,7 @@ class HomeController extends BaseController {
|
|||||||
final GetAuthenticatedAccountInteractor _getAuthenticatedAccountInteractor;
|
final GetAuthenticatedAccountInteractor _getAuthenticatedAccountInteractor;
|
||||||
final DynamicUrlInterceptors _dynamicUrlInterceptors;
|
final DynamicUrlInterceptors _dynamicUrlInterceptors;
|
||||||
final AuthorizationInterceptors _authorizationInterceptors;
|
final AuthorizationInterceptors _authorizationInterceptors;
|
||||||
final AuthorizationIsolateInterceptors _authorizationIsolateInterceptors;
|
final AuthorizationInterceptors _authorizationIsolateInterceptors;
|
||||||
final CleanupEmailCacheInteractor _cleanupEmailCacheInteractor;
|
final CleanupEmailCacheInteractor _cleanupEmailCacheInteractor;
|
||||||
final EmailReceiveManager _emailReceiveManager;
|
final EmailReceiveManager _emailReceiveManager;
|
||||||
final CleanupRecentSearchCacheInteractor _cleanupRecentSearchCacheInteractor;
|
final CleanupRecentSearchCacheInteractor _cleanupRecentSearchCacheInteractor;
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,7 +13,6 @@ 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/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/config/authorization_interceptors.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/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/account_repository_impl.dart';
|
||||||
import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart';
|
import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart';
|
||||||
@@ -31,6 +30,7 @@ import 'package:tmail_ui_user/features/login/domain/usecases/get_oidc_configurat
|
|||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_oidc_configuration_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_stored_oidc_configuration_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
|
import 'package:tmail_ui_user/features/login/domain/usecases/get_token_oidc_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/login/presentation/login_controller.dart';
|
import 'package:tmail_ui_user/features/login/presentation/login_controller.dart';
|
||||||
|
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
|
||||||
|
|
||||||
class LoginBindings extends BaseBindings {
|
class LoginBindings extends BaseBindings {
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ class LoginBindings extends BaseBindings {
|
|||||||
Get.find<AuthenticationInteractor>(),
|
Get.find<AuthenticationInteractor>(),
|
||||||
Get.find<DynamicUrlInterceptors>(),
|
Get.find<DynamicUrlInterceptors>(),
|
||||||
Get.find<AuthorizationInterceptors>(),
|
Get.find<AuthorizationInterceptors>(),
|
||||||
Get.find<AuthorizationIsolateInterceptors>(),
|
Get.find<AuthorizationInterceptors>(tag: BindingTag.isolateTag),
|
||||||
Get.find<CheckOIDCIsAvailableInteractor>(),
|
Get.find<CheckOIDCIsAvailableInteractor>(),
|
||||||
Get.find<GetOIDCConfigurationInteractor>(),
|
Get.find<GetOIDCConfigurationInteractor>(),
|
||||||
Get.find<GetTokenOIDCInteractor>(),
|
Get.find<GetTokenOIDCInteractor>(),
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import 'package:get/get.dart';
|
|||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:tmail_ui_user/features/base/base_controller.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_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/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/authentication_user_state.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/check_oidc_is_available_state.dart';
|
||||||
@@ -36,7 +35,7 @@ class LoginController extends BaseController {
|
|||||||
final AuthenticationInteractor _authenticationInteractor;
|
final AuthenticationInteractor _authenticationInteractor;
|
||||||
final DynamicUrlInterceptors _dynamicUrlInterceptors;
|
final DynamicUrlInterceptors _dynamicUrlInterceptors;
|
||||||
final AuthorizationInterceptors _authorizationInterceptors;
|
final AuthorizationInterceptors _authorizationInterceptors;
|
||||||
final AuthorizationIsolateInterceptors _authorizationIsolateInterceptors;
|
final AuthorizationInterceptors _authorizationIsolateInterceptors;
|
||||||
final CheckOIDCIsAvailableInteractor _checkOIDCIsAvailableInteractor;
|
final CheckOIDCIsAvailableInteractor _checkOIDCIsAvailableInteractor;
|
||||||
final GetOIDCConfigurationInteractor _getOIDCConfigurationInteractor;
|
final GetOIDCConfigurationInteractor _getOIDCConfigurationInteractor;
|
||||||
final GetTokenOIDCInteractor _getTokenOIDCInteractor;
|
final GetTokenOIDCInteractor _getTokenOIDCInteractor;
|
||||||
|
|||||||
-2
@@ -59,7 +59,6 @@ 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/routes/router_arguments.dart';
|
import 'package:tmail_ui_user/main/routes/router_arguments.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
|
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
|
||||||
import 'package:worker_manager/worker_manager.dart';
|
|
||||||
|
|
||||||
class MailboxDashBoardController extends ReloadableController {
|
class MailboxDashBoardController extends ReloadableController {
|
||||||
|
|
||||||
@@ -644,7 +643,6 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
_fileReceiveManagerStreamSubscription.cancel();
|
_fileReceiveManagerStreamSubscription.cancel();
|
||||||
_connectivityStreamSubscription.cancel();
|
_connectivityStreamSubscription.cancel();
|
||||||
_progressStateController.close();
|
_progressStateController.close();
|
||||||
Executor().dispose();
|
|
||||||
Get.delete<DownloadController>();
|
Get.delete<DownloadController>();
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:tmail_ui_user/main/bindings/core/core_bindings.dart';
|
|||||||
import 'package:tmail_ui_user/main/bindings/credential/credential_bindings.dart';
|
import 'package:tmail_ui_user/main/bindings/credential/credential_bindings.dart';
|
||||||
import 'package:tmail_ui_user/main/bindings/local/local_bindings.dart';
|
import 'package:tmail_ui_user/main/bindings/local/local_bindings.dart';
|
||||||
import 'package:tmail_ui_user/main/bindings/network/network_bindings.dart';
|
import 'package:tmail_ui_user/main/bindings/network/network_bindings.dart';
|
||||||
|
import 'package:tmail_ui_user/main/bindings/network/network_isolate_binding.dart';
|
||||||
import 'package:tmail_ui_user/main/bindings/session/session_bindings.dart';
|
import 'package:tmail_ui_user/main/bindings/session/session_bindings.dart';
|
||||||
|
|
||||||
class MainBindings extends Bindings {
|
class MainBindings extends Bindings {
|
||||||
@@ -11,6 +12,7 @@ class MainBindings extends Bindings {
|
|||||||
await CoreBindings().dependencies();
|
await CoreBindings().dependencies();
|
||||||
LocalBindings().dependencies();
|
LocalBindings().dependencies();
|
||||||
NetworkBindings().dependencies();
|
NetworkBindings().dependencies();
|
||||||
|
NetworkIsolateBindings().dependencies();
|
||||||
CredentialBindings().dependencies();
|
CredentialBindings().dependencies();
|
||||||
SessionBindings().dependencies();
|
SessionBindings().dependencies();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
class BindingTag {
|
class BindingTag {
|
||||||
static const isoLateTag = 'isoLateTag';
|
static const isolateTag = 'isolateTag';
|
||||||
}
|
}
|
||||||
@@ -13,17 +13,12 @@ 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/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/config/authorization_interceptors.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/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/network/mailbox_api.dart';
|
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_api.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/data/network/mailbox_isolate_worker.dart';
|
|
||||||
import 'package:tmail_ui_user/features/manage_account/data/network/manage_account_api.dart';
|
import 'package:tmail_ui_user/features/manage_account/data/network/manage_account_api.dart';
|
||||||
import 'package:tmail_ui_user/features/session/data/network/session_api.dart';
|
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_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';
|
|
||||||
import 'package:worker_manager/worker_manager.dart';
|
|
||||||
|
|
||||||
class NetworkBindings extends Bindings {
|
class NetworkBindings extends Bindings {
|
||||||
|
|
||||||
@@ -31,7 +26,6 @@ class NetworkBindings extends Bindings {
|
|||||||
void dependencies() {
|
void dependencies() {
|
||||||
_bindingDio();
|
_bindingDio();
|
||||||
_bindingApi();
|
_bindingApi();
|
||||||
_bindingIsolateWorker();
|
|
||||||
_bindingConnection();
|
_bindingConnection();
|
||||||
_bindingException();
|
_bindingException();
|
||||||
}
|
}
|
||||||
@@ -47,9 +41,7 @@ class NetworkBindings extends Bindings {
|
|||||||
void _bindingDio() {
|
void _bindingDio() {
|
||||||
_bindingBaseOption();
|
_bindingBaseOption();
|
||||||
Get.put(Dio(Get.find<BaseOptions>()));
|
Get.put(Dio(Get.find<BaseOptions>()));
|
||||||
Get.put(Dio(Get.find<BaseOptions>()), tag: BindingTag.isoLateTag);
|
|
||||||
Get.put(DioClient(Get.find<Dio>()));
|
Get.put(DioClient(Get.find<Dio>()));
|
||||||
Get.put(DioClient(Get.find<Dio>(tag: BindingTag.isoLateTag)), tag: BindingTag.isoLateTag);
|
|
||||||
Get.put(const FlutterAppAuth());
|
Get.put(const FlutterAppAuth());
|
||||||
Get.put(AppAuthWebPlugin());
|
Get.put(AppAuthWebPlugin());
|
||||||
Get.put(OIDCHttpClient(Get.find<DioClient>()));
|
Get.put(OIDCHttpClient(Get.find<DioClient>()));
|
||||||
@@ -59,20 +51,16 @@ class NetworkBindings extends Bindings {
|
|||||||
|
|
||||||
void _bindingInterceptors() {
|
void _bindingInterceptors() {
|
||||||
Get.put(DynamicUrlInterceptors());
|
Get.put(DynamicUrlInterceptors());
|
||||||
Get.put(AuthorizationIsolateInterceptors());
|
|
||||||
Get.put(AuthorizationInterceptors(
|
Get.put(AuthorizationInterceptors(
|
||||||
Get.find<Dio>(),
|
Get.find<Dio>(),
|
||||||
Get.find<AuthenticationClientBase>(),
|
Get.find<AuthenticationClientBase>(),
|
||||||
Get.find<TokenOidcCacheManager>(),
|
Get.find<TokenOidcCacheManager>(),
|
||||||
Get.find<AccountCacheManager>(),
|
Get.find<AccountCacheManager>(),
|
||||||
));
|
));
|
||||||
Get.find<Dio>(tag: BindingTag.isoLateTag).interceptors.add(Get.find<DynamicUrlInterceptors>());
|
|
||||||
Get.find<Dio>(tag: BindingTag.isoLateTag).interceptors.add(Get.find<AuthorizationIsolateInterceptors>());
|
|
||||||
Get.find<Dio>().interceptors.add(Get.find<DynamicUrlInterceptors>());
|
Get.find<Dio>().interceptors.add(Get.find<DynamicUrlInterceptors>());
|
||||||
Get.find<Dio>().interceptors.add(Get.find<AuthorizationInterceptors>());
|
Get.find<Dio>().interceptors.add(Get.find<AuthorizationInterceptors>());
|
||||||
if (kDebugMode) {
|
if (kDebugMode) {
|
||||||
Get.find<Dio>().interceptors.add(LogInterceptor(requestBody: true));
|
Get.find<Dio>().interceptors.add(LogInterceptor(requestBody: true));
|
||||||
Get.find<Dio>(tag: BindingTag.isoLateTag).interceptors.add(LogInterceptor(requestBody: true));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,18 +86,4 @@ class NetworkBindings extends Bindings {
|
|||||||
void _bindingException() {
|
void _bindingException() {
|
||||||
Get.put(RemoteExceptionThrower());
|
Get.put(RemoteExceptionThrower());
|
||||||
}
|
}
|
||||||
|
|
||||||
void _bindingIsolateWorker() {
|
|
||||||
Get.put(Executor());
|
|
||||||
Get.put(ThreadIsolateWorker(
|
|
||||||
Get.find<ThreadAPI>(),
|
|
||||||
Get.find<EmailAPI>(),
|
|
||||||
Get.find<Executor>(),
|
|
||||||
));
|
|
||||||
Get.put(MailboxIsolateWorker(
|
|
||||||
Get.find<ThreadAPI>(),
|
|
||||||
Get.find<EmailAPI>(),
|
|
||||||
Get.find<Executor>(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
import 'package:core/core.dart';
|
||||||
|
import 'package:dio/dio.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:jmap_dart_client/http/http_client.dart' as JmapHttpClient;
|
||||||
|
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/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/mailbox/data/network/mailbox_isolate_worker.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';
|
||||||
|
import 'package:worker_manager/worker_manager.dart';
|
||||||
|
|
||||||
|
class NetworkIsolateBindings extends Bindings {
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dependencies() {
|
||||||
|
_bindingDio();
|
||||||
|
_bindingApi();
|
||||||
|
_bindingIsolateWorker();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _bindingDio() {
|
||||||
|
final dio = Get.put(Dio(Get.find<BaseOptions>()), tag: BindingTag.isolateTag);
|
||||||
|
Get.put(DioClient(dio), tag: BindingTag.isolateTag);
|
||||||
|
_bindingInterceptors(dio);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _bindingInterceptors(Dio dio) {
|
||||||
|
Get.put(AuthorizationInterceptors(
|
||||||
|
dio,
|
||||||
|
Get.find<AuthenticationClientBase>(),
|
||||||
|
Get.find<TokenOidcCacheManager>(),
|
||||||
|
Get.find<AccountCacheManager>(),
|
||||||
|
), tag: BindingTag.isolateTag);
|
||||||
|
dio.interceptors.add(Get.find<DynamicUrlInterceptors>());
|
||||||
|
dio.interceptors.add(Get.find<AuthorizationInterceptors>(tag: BindingTag.isolateTag));
|
||||||
|
if (kDebugMode) {
|
||||||
|
dio.interceptors.add(LogInterceptor(requestBody: true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _bindingApi() {
|
||||||
|
final JmapHttpClient.HttpClient httpClient = Get.put(JmapHttpClient.HttpClient(Get.find<Dio>(tag: BindingTag.isolateTag)), 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)), tag: BindingTag.isolateTag);
|
||||||
|
Get.put(ThreadAPI(httpClient), tag: BindingTag.isolateTag);
|
||||||
|
Get.put(EmailAPI(
|
||||||
|
httpClient,
|
||||||
|
Get.find<DownloadManager>(tag: BindingTag.isolateTag),
|
||||||
|
Get.find<DioClient>(tag: BindingTag.isolateTag)), tag: BindingTag.isolateTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _bindingIsolateWorker() {
|
||||||
|
Get.put(Executor());
|
||||||
|
Get.put(ThreadIsolateWorker(
|
||||||
|
Get.find<ThreadAPI>(tag: BindingTag.isolateTag),
|
||||||
|
Get.find<EmailAPI>(tag: BindingTag.isolateTag),
|
||||||
|
Get.find<Executor>(),
|
||||||
|
));
|
||||||
|
Get.put(MailboxIsolateWorker(
|
||||||
|
Get.find<ThreadAPI>(tag: BindingTag.isolateTag),
|
||||||
|
Get.find<EmailAPI>(tag: BindingTag.isolateTag),
|
||||||
|
Get.find<Executor>(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user