TF-4068 Change profile (set identity as default) in setting
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
import 'package:core/presentation/extensions/either_view_state_extension.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:core/presentation/views/list/no_stretch_scroll_behavior.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/edit_default_identity_state.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/base/setting_detail_view_builder.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/change_identity_as_default_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/identities/identities_controller.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/identities/widgets/create_new_identity_button_widget.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/identities/widgets/identity_list_tile_builder.dart';
|
||||
@@ -88,41 +91,60 @@ class IdentitiesView extends GetWidget<IdentitiesController> {
|
||||
)),
|
||||
Expanded(
|
||||
child: Obx(() {
|
||||
final identities = controller.listAllIdentities;
|
||||
final isDefaultIdentitySupported = controller.isDefaultIdentitySupported;
|
||||
final identitySelected = controller.identitySelected.value;
|
||||
|
||||
final Widget listView = ListView.separated(
|
||||
shrinkWrap: true,
|
||||
itemCount: controller.listAllIdentities.length + 1,
|
||||
itemCount: identities.length + 1,
|
||||
controller: controller.listIdentityScrollController,
|
||||
padding: const EdgeInsetsDirectional.only(
|
||||
start: 24,
|
||||
padding: EdgeInsetsDirectional.only(
|
||||
start: isDefaultIdentitySupported ? 12 : 24,
|
||||
end: 24,
|
||||
bottom: 24,
|
||||
),
|
||||
itemBuilder: (context, index) {
|
||||
if (index == controller.listAllIdentities.length) {
|
||||
if (index == identities.length) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
final identity = controller.listAllIdentities[index];
|
||||
final isSelected = identity == controller.identitySelected.value;
|
||||
return Obx(() => IdentityListTileBuilder(
|
||||
imagePaths: controller.imagePaths,
|
||||
identity: identity,
|
||||
isSelected: isSelected,
|
||||
mapIdentitySignatures: controller.mapIdentitySignatures,
|
||||
signatureViewState: controller.signatureViewState.value,
|
||||
isDesktop: isDesktop,
|
||||
scrollController: controller.listIdentityScrollController,
|
||||
onEditIdentityAction: (identitySelected) =>
|
||||
controller.goToEditIdentity(context, identitySelected),
|
||||
onDeleteIdentityAction: (identitySelected) =>
|
||||
controller.openConfirmationDialogDeleteIdentityAction(
|
||||
context,
|
||||
identitySelected,
|
||||
),
|
||||
));
|
||||
final identity = identities[index];
|
||||
final isSelected = identity == identitySelected;
|
||||
|
||||
return Obx(() {
|
||||
final loadingState = controller.viewState.value
|
||||
.foldSuccessWithResult<EditDefaultIdentityLoading>();
|
||||
|
||||
bool isItemLoading =
|
||||
loadingState is EditDefaultIdentityLoading &&
|
||||
loadingState.isSetAsDefault;
|
||||
|
||||
return IdentityListTileBuilder(
|
||||
imagePaths: controller.imagePaths,
|
||||
identity: identity,
|
||||
isSelected: isSelected,
|
||||
isDefaultIdentitySupported: isDefaultIdentitySupported,
|
||||
mapIdentitySignatures: controller.mapIdentitySignatures,
|
||||
signatureViewState: controller.signatureViewState.value,
|
||||
isDesktop: isDesktop,
|
||||
isItemLoading: isItemLoading,
|
||||
scrollController: controller.listIdentityScrollController,
|
||||
onEditIdentityAction: (identitySelected) =>
|
||||
controller.goToEditIdentity(context, identitySelected),
|
||||
onDeleteIdentityAction: (identitySelected) =>
|
||||
controller.openConfirmationDialogDeleteIdentityAction(
|
||||
context,
|
||||
identitySelected,
|
||||
),
|
||||
onChangeIdentityAsDefaultAction: controller.changeIdentityAsDefault,
|
||||
);
|
||||
});
|
||||
},
|
||||
separatorBuilder: (_, index) => Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 24),
|
||||
padding: isDefaultIdentitySupported
|
||||
? const EdgeInsets.only(top: 24, bottom: 12)
|
||||
: const EdgeInsets.symmetric(vertical: 24),
|
||||
child: Divider(color: Colors.black.withValues(alpha: 0.08)),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user