TF-2134 Add MailtoURLView page
(cherry picked from commit 7bb895470d300178ddccf493d0a6927e3d81e811)
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/datasource/authentication_oidc_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/datasource_impl/authentication_oidc_datasource_impl.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/oidc_http_client.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/repository/authentication_oidc_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_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/update_authentication_account_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailto/presentation/mailto_url_controller.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
||||
|
||||
class MailtoUrlBindings extends BaseBindings {
|
||||
|
||||
@override
|
||||
void bindingsController() {
|
||||
Get.lazyPut(() => MailtoUrlController(
|
||||
Get.find<GetAuthenticatedAccountInteractor>(),
|
||||
Get.find<UpdateAuthenticationAccountInteractor>(),
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSource() {
|
||||
Get.lazyPut<AuthenticationOIDCDataSource>(() => Get.find<AuthenticationOIDCDataSourceImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {
|
||||
Get.lazyPut(() => AuthenticationOIDCDataSourceImpl(
|
||||
Get.find<OIDCHttpClient>(),
|
||||
Get.find<AuthenticationClientBase>(),
|
||||
Get.find<TokenOidcCacheManager>(),
|
||||
Get.find<OidcConfigurationCacheManager>(),
|
||||
Get.find<RemoteExceptionThrower>(),
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
Get.lazyPut(() => GetStoredTokenOidcInteractor(
|
||||
Get.find<AuthenticationOIDCRepository>(),
|
||||
Get.find<CredentialRepository>(),
|
||||
));
|
||||
Get.lazyPut(() => GetAuthenticatedAccountInteractor(
|
||||
Get.find<AccountRepository>(),
|
||||
Get.find<GetCredentialInteractor>(),
|
||||
Get.find<GetStoredTokenOidcInteractor>(),
|
||||
));
|
||||
Get.lazyPut(() => UpdateAuthenticationAccountInteractor(Get.find<AccountRepository>()));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
Get.lazyPut<AuthenticationOIDCRepository>(() => Get.find<AuthenticationOIDCRepositoryImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
Get.lazyPut(() => AuthenticationOIDCRepositoryImpl(Get.find<AuthenticationOIDCDataSource>()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
import 'package:core/utils/app_logger.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/get_authenticated_account_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/usecases/update_authentication_account_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/mailto/presentation/model/mailto_arguments.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
|
||||
class MailtoUrlController extends ReloadableController {
|
||||
|
||||
MailtoUrlController(
|
||||
GetAuthenticatedAccountInteractor getAuthenticatedAccountInteractor,
|
||||
UpdateAuthenticationAccountInteractor updateAuthenticationAccountInteractor,
|
||||
) : super(
|
||||
getAuthenticatedAccountInteractor,
|
||||
updateAuthenticationAccountInteractor
|
||||
);
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
super.onReady();
|
||||
final parameters = Get.parameters;
|
||||
log('MailtoUrlController::onReady():parameters: $parameters');
|
||||
if (parameters.containsKey('uri')) {
|
||||
reload();
|
||||
} else {
|
||||
popAndPush(AppRoutes.unknownRoutePage);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void handleReloaded(Session session) {
|
||||
final parameters = Get.parameters;
|
||||
log('MailtoUrlController::handleReloaded():parameters: $parameters');
|
||||
if (parameters.containsKey('uri')) {
|
||||
final mailtoArgument = MailtoArguments(
|
||||
session: session,
|
||||
emailAddress: parameters['uri']
|
||||
);
|
||||
popAndPush(
|
||||
RouteUtils.generateNavigationRoute(
|
||||
AppRoutes.dashboard,
|
||||
NavigationRouter.initial()
|
||||
),
|
||||
arguments: mailtoArgument
|
||||
);
|
||||
} else {
|
||||
popAndPush(AppRoutes.unknownRoutePage);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/mailto/presentation/mailto_url_controller.dart';
|
||||
|
||||
class MailtoUrlView extends GetWidget<MailtoUrlController> {
|
||||
const MailtoUrlView({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ThemeUtils.setSystemDarkUIStyle();
|
||||
|
||||
return Container(
|
||||
color: AppColor.primaryLightColor,
|
||||
child: const SizedBox(
|
||||
width: 100,
|
||||
height: 100,
|
||||
child: CupertinoActivityIndicator(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/router_arguments.dart';
|
||||
|
||||
class MailtoArguments extends RouterArguments {
|
||||
|
||||
final Session session;
|
||||
final String? emailAddress;
|
||||
|
||||
MailtoArguments({required this.session, this.emailAddress});
|
||||
|
||||
Map<String, String?> toMapRouter() {
|
||||
return {
|
||||
'routeName': AppRoutes.mailtoURL,
|
||||
'emailAddress': emailAddress
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [session, emailAddress];
|
||||
}
|
||||
Reference in New Issue
Block a user