TF-2387 Add loading bar when click sign in saas
This commit is contained in:
+32
-1
@@ -1,14 +1,19 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:tip_dialog/tip_dialog.dart';
|
||||
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/state/get_session_state.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/domain/state/sign_in_saas_state.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/domain/usecase/sign_in_saas_interactor.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.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_utils.dart';
|
||||
@@ -31,7 +36,9 @@ class TwakeWelcomeController extends ReloadableController {
|
||||
AppUtils.launchLink(AppConfig.linagoraPrivacyUrl);
|
||||
}
|
||||
|
||||
void onClickSignIn() {
|
||||
void onClickSignIn(BuildContext context) {
|
||||
TipDialogHelper.loading(AppLocalizations.of(context).loadingPleaseWait);
|
||||
|
||||
if (AppConfig.saasServerUrl.isEmpty) {
|
||||
consumeState(Stream.value(Left(SignInSaasFailure(CanNotFoundSaasServerUrl()))));
|
||||
return;
|
||||
@@ -63,13 +70,31 @@ class TwakeWelcomeController extends ReloadableController {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void handleFailureViewState(Failure failure) {
|
||||
if (failure is SignInSaasFailure) {
|
||||
_handleSignInSaasFailure(failure);
|
||||
} else {
|
||||
super.handleFailureViewState(failure);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void handleReloaded(Session session) {
|
||||
TipDialogHelper.dismiss();
|
||||
|
||||
popAndPush(
|
||||
RouteUtils.generateNavigationRoute(AppRoutes.dashboard),
|
||||
arguments: session);
|
||||
}
|
||||
|
||||
@override
|
||||
void handleGetSessionFailure(GetSessionFailure failure) {
|
||||
TipDialogHelper.dismiss();
|
||||
|
||||
toastManager.showMessageFailure(failure);
|
||||
}
|
||||
|
||||
void _handleSignInSaasSuccess(SignInSaasSuccess success) {
|
||||
dynamicUrlInterceptors.setJmapUrl(success.baseUri.toString());
|
||||
dynamicUrlInterceptors.changeBaseUrl(success.baseUri.toString());
|
||||
@@ -81,4 +106,10 @@ class TwakeWelcomeController extends ReloadableController {
|
||||
newConfig: success.oidcConfiguration);
|
||||
getSessionAction();
|
||||
}
|
||||
|
||||
void _handleSignInSaasFailure(SignInSaasFailure failure) {
|
||||
TipDialogHelper.dismiss();
|
||||
|
||||
toastManager.showMessageFailure(failure);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import 'package:flutter/services.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:linagora_design_flutter/linagora_design_flutter.dart';
|
||||
import 'package:tip_dialog/tip_dialog.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/presentation/twake_welcome/twake_welcome_controller.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/presentation/twake_welcome/twake_welcome_view_style.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
@@ -19,32 +20,45 @@ class TwakeWelcomeView extends GetWidget<TwakeWelcomeController> {
|
||||
DeviceOrientation.portraitDown
|
||||
]);
|
||||
|
||||
return TwakeWelcomeScreen(
|
||||
logo: Padding(
|
||||
padding: const EdgeInsetsDirectional.only(bottom: 16),
|
||||
child: SvgPicture.asset(
|
||||
controller.imagePaths.icLogoTwakeWelcome,
|
||||
width: TwakeWelcomeViewStyle.logoWidth,
|
||||
height: TwakeWelcomeViewStyle.logoHeight,
|
||||
return Stack(
|
||||
children: [
|
||||
TwakeWelcomeScreen(
|
||||
logo: Padding(
|
||||
padding: const EdgeInsetsDirectional.only(bottom: 16),
|
||||
child: SvgPicture.asset(
|
||||
controller.imagePaths.icLogoTwakeWelcome,
|
||||
width: TwakeWelcomeViewStyle.logoWidth,
|
||||
height: TwakeWelcomeViewStyle.logoHeight,
|
||||
),
|
||||
),
|
||||
focusColor: Colors.transparent,
|
||||
hoverColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
overlayColor: WidgetStateProperty.all(Colors.transparent),
|
||||
signInTitle: AppConfig.isSaasPlatForm
|
||||
? AppLocalizations.of(context).signIn.capitalizeFirst ?? ''
|
||||
: null,
|
||||
onSignInOnTap: () => controller.onClickSignIn(context),
|
||||
createTwakeIdTitle: AppConfig.isSaasPlatForm
|
||||
? AppLocalizations.of(context).createTwakeId
|
||||
: null,
|
||||
useCompanyServerTitle: AppLocalizations.of(context).useCompanyServer,
|
||||
description: AppLocalizations.of(context).descriptionWelcomeTo,
|
||||
privacyPolicy: AppLocalizations.of(context).privacyPolicy,
|
||||
descriptionPrivacyPolicy: AppLocalizations.of(context).byContinuingYouAreAgreeingToOur,
|
||||
onPrivacyPolicyOnTap: controller.onClickPrivacyPolicy,
|
||||
onUseCompanyServerOnTap: controller.handleUseCompanyServer,
|
||||
),
|
||||
),
|
||||
focusColor: Colors.transparent,
|
||||
hoverColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
overlayColor: WidgetStateProperty.all(Colors.transparent),
|
||||
signInTitle: AppConfig.isSaasPlatForm
|
||||
? AppLocalizations.of(context).signIn.capitalizeFirst ?? ''
|
||||
: null,
|
||||
onSignInOnTap: controller.onClickSignIn,
|
||||
createTwakeIdTitle: AppConfig.isSaasPlatForm
|
||||
? AppLocalizations.of(context).createTwakeId
|
||||
: null,
|
||||
useCompanyServerTitle: AppLocalizations.of(context).useCompanyServer,
|
||||
description: AppLocalizations.of(context).descriptionWelcomeTo,
|
||||
privacyPolicy: AppLocalizations.of(context).privacyPolicy,
|
||||
descriptionPrivacyPolicy: AppLocalizations.of(context).byContinuingYouAreAgreeingToOur,
|
||||
onPrivacyPolicyOnTap: controller.onClickPrivacyPolicy,
|
||||
onUseCompanyServerOnTap: controller.handleUseCompanyServer,
|
||||
TipDialogContainer(
|
||||
duration: const Duration(seconds: 2),
|
||||
outsideTouchable: true,
|
||||
onOutsideTouch: (tipDialog) {
|
||||
if (tipDialog is TipDialog && tipDialog.type == TipDialogType.LOADING) {
|
||||
TipDialogHelper.dismiss();
|
||||
}
|
||||
}
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user