TF-2676 Add loading bar when load identities
This commit is contained in:
+11
-11
@@ -38,7 +38,7 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
class IdentitiesController extends BaseController {
|
||||
|
||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||
final accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||
|
||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||
final CreateNewIdentityInteractor _createNewIdentityInteractor;
|
||||
@@ -95,8 +95,8 @@ class IdentitiesController extends BaseController {
|
||||
}
|
||||
|
||||
void _registerObxStreamListener() {
|
||||
ever(_accountDashBoardController.accountId, (accountId) {
|
||||
final session = _accountDashBoardController.sessionCurrent;
|
||||
ever(accountDashBoardController.accountId, (accountId) {
|
||||
final session = accountDashBoardController.sessionCurrent;
|
||||
if (accountId != null && session != null) {
|
||||
_getAllIdentities(session, accountId);
|
||||
}
|
||||
@@ -111,8 +111,8 @@ class IdentitiesController extends BaseController {
|
||||
identitySelected.value = null;
|
||||
listAllIdentities.clear();
|
||||
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
final session = _accountDashBoardController.sessionCurrent;
|
||||
final accountId = accountDashBoardController.accountId.value;
|
||||
final session = accountDashBoardController.sessionCurrent;
|
||||
if (accountId != null && session != null) {
|
||||
_getAllIdentities(session, accountId);
|
||||
}
|
||||
@@ -141,8 +141,8 @@ class IdentitiesController extends BaseController {
|
||||
}
|
||||
|
||||
void goToCreateNewIdentity(BuildContext context) async {
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
final session = _accountDashBoardController.sessionCurrent;
|
||||
final accountId = accountDashBoardController.accountId.value;
|
||||
final session = accountDashBoardController.sessionCurrent;
|
||||
if (accountId != null && session != null) {
|
||||
final arguments = IdentityCreatorArguments(accountId, session);
|
||||
|
||||
@@ -204,8 +204,8 @@ class IdentitiesController extends BaseController {
|
||||
void _deleteIdentityAction(Identity identity) {
|
||||
popBack();
|
||||
|
||||
final session = _accountDashBoardController.sessionCurrent;
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
final session = accountDashBoardController.sessionCurrent;
|
||||
final accountId = accountDashBoardController.accountId.value;
|
||||
if (accountId != null && session != null && identity.id != null) {
|
||||
consumeState(_deleteIdentityInteractor.execute(session, accountId, identity.id!));
|
||||
}
|
||||
@@ -247,8 +247,8 @@ class IdentitiesController extends BaseController {
|
||||
}
|
||||
|
||||
void goToEditIdentity(BuildContext context, Identity identity) async {
|
||||
final accountId = _accountDashBoardController.accountId.value;
|
||||
final session = _accountDashBoardController.sessionCurrent;
|
||||
final accountId = accountDashBoardController.accountId.value;
|
||||
final session = accountDashBoardController.sessionCurrent;
|
||||
if (accountId != null && session != null) {
|
||||
final arguments = IdentityCreatorArguments(
|
||||
accountId,
|
||||
|
||||
+17
-3
@@ -8,6 +8,7 @@ import 'package:get/get_state_manager/get_state_manager.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/transform_html_signature_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/identities_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/widgets/identity_list_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/widgets/identity_loading_widget.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/widgets/signature_builder.dart';
|
||||
|
||||
class IdentitiesRadioListBuilder extends StatelessWidget {
|
||||
@@ -34,9 +35,22 @@ class IdentitiesRadioListBuilder extends StatelessWidget {
|
||||
),
|
||||
child: ClipRRect(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(16.0)),
|
||||
child: responsiveUtils.isWebDesktop(context)
|
||||
? _buildIdentityViewHorizontal(context)
|
||||
: _buildIdentityViewVertical(context))
|
||||
child: Stack(
|
||||
children: [
|
||||
if (responsiveUtils.isWebDesktop(context))
|
||||
_buildIdentityViewHorizontal(context)
|
||||
else
|
||||
_buildIdentityViewVertical(context),
|
||||
Obx(() => Align(
|
||||
alignment: AlignmentDirectional.topCenter,
|
||||
child: IdentityLoadingWidget(
|
||||
identityViewState: controller.viewState.value,
|
||||
settingViewState: controller.accountDashBoardController.viewState.value
|
||||
)
|
||||
))
|
||||
],
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/circle_loading_widget.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/state/get_session_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart';
|
||||
|
||||
class IdentityLoadingWidget extends StatelessWidget {
|
||||
|
||||
final Either<Failure, Success> identityViewState;
|
||||
final Either<Failure, Success> settingViewState;
|
||||
|
||||
const IdentityLoadingWidget({
|
||||
super.key,
|
||||
required this.identityViewState,
|
||||
required this.settingViewState
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return settingViewState.fold(
|
||||
(failure) => identityViewState.fold(
|
||||
(failure) => const SizedBox.shrink(),
|
||||
(success) {
|
||||
if (success is GetAllIdentitiesLoading || success is GetSessionLoading) {
|
||||
return const CircleLoadingWidget(padding: EdgeInsets.all(16.0));
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}
|
||||
),
|
||||
(success) => identityViewState.fold(
|
||||
(failure) => const SizedBox.shrink(),
|
||||
(success) {
|
||||
if (success is GetAllIdentitiesLoading || success is GetSessionLoading) {
|
||||
return const CircleLoadingWidget(padding: EdgeInsets.all(16.0));
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user