diff --git a/lib/features/login/presentation/base_login_view.dart b/lib/features/login/presentation/base_login_view.dart index 8ce39a53a..9af6715c0 100644 --- a/lib/features/login/presentation/base_login_view.dart +++ b/lib/features/login/presentation/base_login_view.dart @@ -129,4 +129,12 @@ abstract class BaseLoginView extends GetWidget { ..hintText(AppLocalizations.of(context).password)) .build())); } + + Widget buildLoadingCircularProgress() { + return const SizedBox( + key: Key('login_loading_icon'), + width: 40, + height: 40, + child: CircularProgressIndicator(color: AppColor.primaryColor)); + } } \ No newline at end of file diff --git a/lib/features/login/presentation/login_view.dart b/lib/features/login/presentation/login_view.dart index abbb2371a..d09256698 100644 --- a/lib/features/login/presentation/login_view.dart +++ b/lib/features/login/presentation/login_view.dart @@ -85,19 +85,19 @@ class LoginView extends BaseLoginView { return Obx(() => loginController.loginState.value.viewState.fold( (failure) => _buildNextButtonInContext(context), (success) => success is LoginLoadingAction - ? _buildLoadingCircularProgress() + ? buildLoadingCircularProgress() : _buildNextButtonInContext(context))); case LoginFormType.credentialForm: return Obx(() => loginController.loginState.value.viewState.fold( (failure) => _buildLoginButtonInContext(context), (success) => success is LoginLoadingAction - ? _buildLoadingCircularProgress() + ? buildLoadingCircularProgress() : _buildLoginButtonInContext(context))); case LoginFormType.ssoForm: return Obx(() => loginController.loginState.value.viewState.fold( (failure) => _buildLoginButtonInContext(context), (success) => success is LoginLoadingAction - ? _buildLoadingCircularProgress() + ? buildLoadingCircularProgress() : _buildLoginButtonInContext(context))); default: return const SizedBox.shrink(); @@ -189,14 +189,6 @@ class LoginView extends BaseLoginView { ? buildLoginButton(context) : _buildExpandedButton(context, buildLoginButton(context)); } - - Widget _buildLoadingCircularProgress() { - return const SizedBox( - key: Key('login_loading_icon'), - width: 40, - height: 40, - child: CircularProgressIndicator(color: AppColor.primaryColor)); - } bool _supportScrollForm(BuildContext context) { return !(responsiveUtils.isMobile(context) && responsiveUtils.isPortrait(context)); diff --git a/lib/features/login/presentation/login_view_web.dart b/lib/features/login/presentation/login_view_web.dart index 5cc8bd49f..d1db4ea92 100644 --- a/lib/features/login/presentation/login_view_web.dart +++ b/lib/features/login/presentation/login_view_web.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart'; import 'package:tmail_ui_user/features/login/presentation/base_login_view.dart'; +import 'package:tmail_ui_user/features/login/presentation/state/login_state.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class LoginView extends BaseLoginView { @@ -47,7 +48,11 @@ class LoginView extends BaseLoginView { Obx(() => buildLoginMessage(context, loginController.loginState.value)), buildInputCredentialForm(context), buildLoginButton(context), - buildSSOButton(context), + Obx(() => loginController.loginState.value.viewState.fold( + (failure) => _buildSSOButton(context), + (success) => success is LoginLoadingAction + ? buildLoadingCircularProgress() + : _buildSSOButton(context))), ], ) ), @@ -163,7 +168,11 @@ class LoginView extends BaseLoginView { Obx(() => buildLoginMessage(context, loginController.loginState.value)), buildInputCredentialForm(context), buildLoginButton(context), - buildSSOButton(context), + Obx(() => loginController.loginState.value.viewState.fold( + (failure) => _buildSSOButton(context), + (success) => success is LoginLoadingAction + ? buildLoadingCircularProgress() + : _buildSSOButton(context))), ], ) ) @@ -201,7 +210,7 @@ class LoginView extends BaseLoginView { ); } - Widget buildSSOButton(BuildContext context) { + Widget _buildSSOButton(BuildContext context) { return Container( margin: const EdgeInsets.only(bottom: 16, left: 24, right: 24), width: responsiveUtils.getDeviceWidth(context),height: 48,