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 {
|
class IdentitiesController extends BaseController {
|
||||||
|
|
||||||
final _accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
final accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
|
|
||||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||||
final CreateNewIdentityInteractor _createNewIdentityInteractor;
|
final CreateNewIdentityInteractor _createNewIdentityInteractor;
|
||||||
@@ -95,8 +95,8 @@ class IdentitiesController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _registerObxStreamListener() {
|
void _registerObxStreamListener() {
|
||||||
ever(_accountDashBoardController.accountId, (accountId) {
|
ever(accountDashBoardController.accountId, (accountId) {
|
||||||
final session = _accountDashBoardController.sessionCurrent;
|
final session = accountDashBoardController.sessionCurrent;
|
||||||
if (accountId != null && session != null) {
|
if (accountId != null && session != null) {
|
||||||
_getAllIdentities(session, accountId);
|
_getAllIdentities(session, accountId);
|
||||||
}
|
}
|
||||||
@@ -111,8 +111,8 @@ class IdentitiesController extends BaseController {
|
|||||||
identitySelected.value = null;
|
identitySelected.value = null;
|
||||||
listAllIdentities.clear();
|
listAllIdentities.clear();
|
||||||
|
|
||||||
final accountId = _accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
final session = _accountDashBoardController.sessionCurrent;
|
final session = accountDashBoardController.sessionCurrent;
|
||||||
if (accountId != null && session != null) {
|
if (accountId != null && session != null) {
|
||||||
_getAllIdentities(session, accountId);
|
_getAllIdentities(session, accountId);
|
||||||
}
|
}
|
||||||
@@ -141,8 +141,8 @@ class IdentitiesController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void goToCreateNewIdentity(BuildContext context) async {
|
void goToCreateNewIdentity(BuildContext context) async {
|
||||||
final accountId = _accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
final session = _accountDashBoardController.sessionCurrent;
|
final session = accountDashBoardController.sessionCurrent;
|
||||||
if (accountId != null && session != null) {
|
if (accountId != null && session != null) {
|
||||||
final arguments = IdentityCreatorArguments(accountId, session);
|
final arguments = IdentityCreatorArguments(accountId, session);
|
||||||
|
|
||||||
@@ -204,8 +204,8 @@ class IdentitiesController extends BaseController {
|
|||||||
void _deleteIdentityAction(Identity identity) {
|
void _deleteIdentityAction(Identity identity) {
|
||||||
popBack();
|
popBack();
|
||||||
|
|
||||||
final session = _accountDashBoardController.sessionCurrent;
|
final session = accountDashBoardController.sessionCurrent;
|
||||||
final accountId = _accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
if (accountId != null && session != null && identity.id != null) {
|
if (accountId != null && session != null && identity.id != null) {
|
||||||
consumeState(_deleteIdentityInteractor.execute(session, accountId, identity.id!));
|
consumeState(_deleteIdentityInteractor.execute(session, accountId, identity.id!));
|
||||||
}
|
}
|
||||||
@@ -247,8 +247,8 @@ class IdentitiesController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void goToEditIdentity(BuildContext context, Identity identity) async {
|
void goToEditIdentity(BuildContext context, Identity identity) async {
|
||||||
final accountId = _accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
final session = _accountDashBoardController.sessionCurrent;
|
final session = accountDashBoardController.sessionCurrent;
|
||||||
if (accountId != null && session != null) {
|
if (accountId != null && session != null) {
|
||||||
final arguments = IdentityCreatorArguments(
|
final arguments = IdentityCreatorArguments(
|
||||||
accountId,
|
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/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/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_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';
|
import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/widgets/signature_builder.dart';
|
||||||
|
|
||||||
class IdentitiesRadioListBuilder extends StatelessWidget {
|
class IdentitiesRadioListBuilder extends StatelessWidget {
|
||||||
@@ -34,9 +35,22 @@ class IdentitiesRadioListBuilder extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(16.0)),
|
borderRadius: const BorderRadius.all(Radius.circular(16.0)),
|
||||||
child: responsiveUtils.isWebDesktop(context)
|
child: Stack(
|
||||||
? _buildIdentityViewHorizontal(context)
|
children: [
|
||||||
: _buildIdentityViewVertical(context))
|
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