From 553c77d1e31de0aaf1824fbe732181f8b954ccf2 Mon Sep 17 00:00:00 2001 From: Abdullah Alassaf Date: Tue, 25 Feb 2025 00:55:44 +0300 Subject: [PATCH] Added space tree to the add user dialog --- .../add_user_dialog/bloc/users_bloc.dart | 94 +++++------ .../add_user_dialog/view/add_user_dialog.dart | 1 - .../view/spaces_access_view.dart | 156 +++++++++--------- .../users_table/view/users_page.dart | 115 +++++-------- 4 files changed, 163 insertions(+), 203 deletions(-) diff --git a/lib/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_bloc.dart b/lib/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_bloc.dart index 356c4e31..2fed09da 100644 --- a/lib/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_bloc.dart +++ b/lib/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_bloc.dart @@ -1,5 +1,6 @@ import 'package:bloc/bloc.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/common/bloc/project_manager.dart'; import 'package:syncrow_web/pages/common/custom_dialog.dart'; import 'package:syncrow_web/pages/roles_and_permission/model/edit_user_model.dart'; @@ -8,14 +9,13 @@ import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialo import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_status.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/model/permission_option_model.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/model/tree_node_model.dart'; +import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/model/community_model.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_model.dart'; import 'package:syncrow_web/services/space_mana_api.dart'; import 'package:syncrow_web/services/user_permission.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; -import 'package:syncrow_web/utils/constants/strings_manager.dart'; -import 'package:syncrow_web/utils/constants/temp_const.dart'; -import 'package:syncrow_web/utils/helpers/shared_preferences_helper.dart'; +import 'package:syncrow_web/utils/navigation_service.dart'; class UsersBloc extends Bloc { UsersBloc() : super(UsersInitial()) { @@ -62,11 +62,11 @@ class UsersBloc extends Bloc { int numberSpaces = 0; int numberRole = 0; - void isCompleteSpacesFun( - CheckSpacesStepStatus event, Emitter emit) { + void isCompleteSpacesFun(CheckSpacesStepStatus event, Emitter emit) { emit(UsersLoadingState()); - List selectedIds = getSelectedIds(updatedCommunities); - isCompleteSpaces = selectedIds.isNotEmpty; + var spaceBloc = NavigationService.navigatorKey.currentContext!.read(); + + isCompleteSpaces = spaceBloc.state.selectedCommunities.isNotEmpty; emit(ChangeStatusSteps()); } @@ -76,19 +76,16 @@ class UsersBloc extends Bloc { emit(ChangeStatusSteps()); } - Future> _fetchSpacesForCommunity( - String communityUuid) async { + Future> _fetchSpacesForCommunity(String communityUuid) async { final projectUuid = await ProjectManager.getProjectUUID() ?? ''; - return await CommunitySpaceManagementApi() - .getSpaceHierarchy(communityUuid, projectUuid); + return await CommunitySpaceManagementApi().getSpaceHierarchy(communityUuid, projectUuid); } List updatedCommunities = []; List spacesNodes = []; List communityIds = []; - _onLoadCommunityAndSpaces( - LoadCommunityAndSpacesEvent event, Emitter emit) async { + _onLoadCommunityAndSpaces(LoadCommunityAndSpacesEvent event, Emitter emit) async { try { emit(UsersLoadingState()); final projectUuid = await ProjectManager.getProjectUUID() ?? ''; @@ -98,8 +95,7 @@ class UsersBloc extends Bloc { communityIds = communities.map((community) => community.uuid).toList(); updatedCommunities = await Future.wait( communities.map((community) async { - List spaces = - await _fetchSpacesForCommunity(community.uuid); + List spaces = await _fetchSpacesForCommunity(community.uuid); spacesNodes = _buildTreeNodes(spaces); return TreeNode( uuid: community.uuid, @@ -126,8 +122,7 @@ class UsersBloc extends Bloc { // Build tree nodes from your data model. List _buildTreeNodes(List spaces) { return spaces.map((space) { - List childNodes = - space.children.isNotEmpty ? _buildTreeNodes(space.children) : []; + List childNodes = space.children.isNotEmpty ? _buildTreeNodes(space.children) : []; return TreeNode( uuid: space.uuid!, title: space.name, @@ -188,8 +183,7 @@ class UsersBloc extends Bloc { bool _searchAndHighlightNodes(List nodes, String searchTerm) { bool anyMatch = false; for (var node in nodes) { - bool isMatch = - node.title.toLowerCase().contains(searchTerm.toLowerCase()); + bool isMatch = node.title.toLowerCase().contains(searchTerm.toLowerCase()); bool childMatch = _searchAndHighlightNodes(node.children, searchTerm); node.isHighlighted = isMatch || childMatch; @@ -201,8 +195,7 @@ class UsersBloc extends Bloc { List _filterNodes(List nodes, String searchTerm) { List filteredNodes = []; for (var node in nodes) { - bool isMatch = - node.title.toLowerCase().contains(searchTerm.toLowerCase()); + bool isMatch = node.title.toLowerCase().contains(searchTerm.toLowerCase()); List filteredChildren = _filterNodes(node.children, searchTerm); if (isMatch || filteredChildren.isNotEmpty) { node.isHighlighted = isMatch; @@ -314,8 +307,8 @@ class UsersBloc extends Bloc { _getPermissions(PermissionEvent event, Emitter emit) async { try { emit(UsersLoadingState()); - permissions = await UserPermissionApi().fetchPermission( - event.roleUuid == "" ? roles.first.uuid : event.roleUuid); + permissions = await UserPermissionApi() + .fetchPermission(event.roleUuid == "" ? roles.first.uuid : event.roleUuid); roleSelected = event.roleUuid!; emit(RolePermissionInitial()); } catch (e) { @@ -326,8 +319,7 @@ class UsersBloc extends Bloc { bool _searchRolePermission(List nodes, String searchTerm) { bool anyMatch = false; for (var node in nodes) { - bool isMatch = - node.title.toLowerCase().contains(searchTerm.toLowerCase()); + bool isMatch = node.title.toLowerCase().contains(searchTerm.toLowerCase()); bool childMatch = _searchRolePermission(node.subOptions, searchTerm); node.isHighlighted = isMatch || childMatch; anyMatch = anyMatch || node.isHighlighted; @@ -340,9 +332,15 @@ class UsersBloc extends Bloc { final projectUuid = await ProjectManager.getProjectUUID() ?? ''; emit(UsersLoadingState()); - List selectedIds = getSelectedIds(updatedCommunities) - .where((id) => !communityIds.contains(id)) - .toList(); + // List selectedIds = + // getSelectedIds(updatedCommunities).where((id) => !communityIds.contains(id)).toList(); + + List selectedSpacesId = []; + var spaceBloc = NavigationService.navigatorKey.currentContext!.read(); + for (var community in spaceBloc.state.selectedCommunities) { + selectedSpacesId.addAll(spaceBloc.state.selectedCommunityAndSpaces[community] ?? []); + } + // List selectedIds = getSelectedIds(updatedCommunities); bool res = await UserPermissionApi().sendInviteUser( email: emailController.text, @@ -351,7 +349,7 @@ class UsersBloc extends Bloc { lastName: lastNameController.text, phoneNumber: phoneController.text, roleUuid: roleSelected, - spaceUuids: selectedIds, + spaceUuids: selectedSpacesId, projectUuid: projectUuid); if (res) { @@ -384,9 +382,8 @@ class UsersBloc extends Bloc { _editInviteUser(EditInviteUsers event, Emitter emit) async { try { emit(UsersLoadingState()); - List selectedIds = getSelectedIds(updatedCommunities) - .where((id) => !communityIds.contains(id)) - .toList(); + List selectedIds = + getSelectedIds(updatedCommunities).where((id) => !communityIds.contains(id)).toList(); final projectUuid = await ProjectManager.getProjectUUID() ?? ''; bool res = await UserPermissionApi().editInviteUser( @@ -439,8 +436,7 @@ class UsersBloc extends Bloc { String checkEmailValid = ''; - Future checkEmail( - CheckEmailEvent event, Emitter emit) async { + Future checkEmail(CheckEmailEvent event, Emitter emit) async { emit(UsersLoadingState()); String? res = await UserPermissionApi().checkEmail( emailController.text, @@ -464,8 +460,7 @@ class UsersBloc extends Bloc { isEmailValid && isEmailServerValid; } else { - isCompleteBasics = firstNameController.text.isNotEmpty && - lastNameController.text.isNotEmpty; + isCompleteBasics = firstNameController.text.isNotEmpty && lastNameController.text.isNotEmpty; } emit(ChangeStatusSteps()); emit(ValidateBasics()); @@ -505,8 +500,7 @@ class UsersBloc extends Bloc { final projectUuid = await ProjectManager.getProjectUUID() ?? ''; if (event.uuid?.isNotEmpty ?? false) { - final res = - await UserPermissionApi().fetchUserById(event.uuid, projectUuid); + final res = await UserPermissionApi().fetchUserById(event.uuid, projectUuid); if (res != null) { // Populate the text controllers @@ -525,8 +519,7 @@ class UsersBloc extends Bloc { } final roleId = roles .firstWhere((element) => - element.type == - res.roleType.toString().toLowerCase().replaceAll("_", " ")) + element.type == res.roleType.toString().toLowerCase().replaceAll("_", " ")) .uuid; debugPrint('Role ID: $roleId'); roleSelected = roleId; @@ -537,16 +530,14 @@ class UsersBloc extends Bloc { } catch (_) {} } - void _printAndMarkNodes(List nodes, List uuidsToMark, - [int level = 0]) { + void _printAndMarkNodes(List nodes, List uuidsToMark, [int level = 0]) { for (final node in nodes) { if (uuidsToMark.contains(node.uuid)) { node.isChecked = true; debugPrint( '${' ' * level}MATCH FOUND: Node ID: ${node.uuid}, Title: ${node.title} is marked as checked.'); } else { - debugPrint( - '${' ' * level}Node ID: ${node.uuid}, Title: ${node.title}'); + debugPrint('${' ' * level}Node ID: ${node.uuid}, Title: ${node.title}'); } if (node.children.isNotEmpty) { _printAndMarkNodes(node.children, uuidsToMark, level + 1); @@ -599,8 +590,7 @@ class UsersBloc extends Bloc { bool _areAllChildrenChecked(TreeNode node) { return node.children.isNotEmpty && node.children.every((child) => - child.isChecked && - (child.children.isEmpty || _areAllChildrenChecked(child))); + child.isChecked && (child.children.isEmpty || _areAllChildrenChecked(child))); } TreeNode? _findParent(List nodes, TreeNode target) { @@ -615,4 +605,16 @@ class UsersBloc extends Bloc { } return null; } + + @override + Future close() { + emailController.dispose(); + firstNameController.dispose(); + lastNameController.dispose(); + emailController.dispose(); + phoneController.dispose(); + jobTitleController.dispose(); + roleSearchController.dispose(); + return super.close(); + } } diff --git a/lib/pages/roles_and_permission/users_page/add_user_dialog/view/add_user_dialog.dart b/lib/pages/roles_and_permission/users_page/add_user_dialog/view/add_user_dialog.dart index 15981ea6..1a487830 100644 --- a/lib/pages/roles_and_permission/users_page/add_user_dialog/view/add_user_dialog.dart +++ b/lib/pages/roles_and_permission/users_page/add_user_dialog/view/add_user_dialog.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:syncrow_web/pages/common/bloc/project_manager.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_bloc.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_event.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_status.dart'; diff --git a/lib/pages/roles_and_permission/users_page/add_user_dialog/view/spaces_access_view.dart b/lib/pages/roles_and_permission/users_page/add_user_dialog/view/spaces_access_view.dart index f4ccfafc..63f870e6 100644 --- a/lib/pages/roles_and_permission/users_page/add_user_dialog/view/spaces_access_view.dart +++ b/lib/pages/roles_and_permission/users_page/add_user_dialog/view/spaces_access_view.dart @@ -1,14 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_svg/svg.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_bloc.dart'; -import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_event.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_status.dart'; -import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/view/build_tree_view.dart'; -import 'package:syncrow_web/utils/color_manager.dart'; -import 'package:syncrow_web/utils/constants/assets.dart'; +import 'package:syncrow_web/pages/space_tree/view/space_tree_view.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; -import 'package:syncrow_web/utils/style.dart'; class SpacesAccessView extends StatelessWidget { final String? userId; @@ -27,10 +22,8 @@ class SpacesAccessView extends StatelessWidget { children: [ Text( 'Spaces access', - style: context.textTheme.bodyLarge?.copyWith( - fontWeight: FontWeight.w700, - fontSize: 20, - color: Colors.black), + style: context.textTheme.bodyLarge + ?.copyWith(fontWeight: FontWeight.w700, fontSize: 20, color: Colors.black), ), const SizedBox( height: 35, @@ -42,77 +35,78 @@ class SpacesAccessView extends StatelessWidget { const SizedBox( height: 25, ), - Expanded( - child: SizedBox( - child: Column( - children: [ - Expanded( - flex: 2, - child: Container( - decoration: const BoxDecoration( - color: ColorsManager.circleRolesBackground, - borderRadius: BorderRadius.only( - topRight: Radius.circular(20), - topLeft: Radius.circular(20)), - ), - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - children: [ - Expanded( - child: Container( - decoration: BoxDecoration( - borderRadius: const BorderRadius.all( - Radius.circular(20)), - border: Border.all( - color: ColorsManager.grayBorder)), - child: TextFormField( - style: - const TextStyle(color: Colors.black), - // controller: _blocRole.firstNameController, - onChanged: (value) { - _blocRole.add(SearchAnode( - nodes: _blocRole.updatedCommunities, - searchTerm: value)); - }, - decoration: textBoxDecoration(radios: 20)! - .copyWith( - fillColor: Colors.white, - suffixIcon: Padding( - padding: - const EdgeInsets.only(right: 16), - child: SvgPicture.asset( - Assets.textFieldSearch, - width: 24, - height: 24, - ), - ), - hintStyle: context.textTheme.bodyMedium - ?.copyWith( - fontWeight: FontWeight.w400, - fontSize: 12, - color: ColorsManager.textGray), - ), - ), - ), - ), - ], - ), - ), - ), - ), - Expanded( - flex: 7, - child: Container( - color: ColorsManager.circleRolesBackground, - padding: const EdgeInsets.all(8.0), - child: Container( - color: ColorsManager.whiteColors, - child: TreeView(userId: userId)))) - ], - ), - ), - ), + Expanded(child: SpaceTreeView(onSelect: () {})) + // Expanded( + // child: SizedBox( + // child: Column( + // children: [ + // Expanded( + // flex: 2, + // child: Container( + // decoration: const BoxDecoration( + // color: ColorsManager.circleRolesBackground, + // borderRadius: BorderRadius.only( + // topRight: Radius.circular(20), + // topLeft: Radius.circular(20)), + // ), + // child: Padding( + // padding: const EdgeInsets.all(8.0), + // child: Row( + // children: [ + // Expanded( + // child: Container( + // decoration: BoxDecoration( + // borderRadius: const BorderRadius.all( + // Radius.circular(20)), + // border: Border.all( + // color: ColorsManager.grayBorder)), + // child: TextFormField( + // style: + // const TextStyle(color: Colors.black), + // // controller: _blocRole.firstNameController, + // onChanged: (value) { + // _blocRole.add(SearchAnode( + // nodes: _blocRole.updatedCommunities, + // searchTerm: value)); + // }, + // decoration: textBoxDecoration(radios: 20)! + // .copyWith( + // fillColor: Colors.white, + // suffixIcon: Padding( + // padding: + // const EdgeInsets.only(right: 16), + // child: SvgPicture.asset( + // Assets.textFieldSearch, + // width: 24, + // height: 24, + // ), + // ), + // hintStyle: context.textTheme.bodyMedium + // ?.copyWith( + // fontWeight: FontWeight.w400, + // fontSize: 12, + // color: ColorsManager.textGray), + // ), + // ), + // ), + // ), + // ], + // ), + // ), + // ), + // ), + // Expanded( + // flex: 7, + // child: Container( + // color: ColorsManager.circleRolesBackground, + // padding: const EdgeInsets.all(8.0), + // child: Container( + // color: ColorsManager.whiteColors, + // child: TreeView(userId: userId)))) + // ], + // ), + // ), + // ), ], ), ), diff --git a/lib/pages/roles_and_permission/users_page/users_table/view/users_page.dart b/lib/pages/roles_and_permission/users_page/users_table/view/users_page.dart index a94756f1..76011358 100644 --- a/lib/pages/roles_and_permission/users_page/users_table/view/users_page.dart +++ b/lib/pages/roles_and_permission/users_page/users_table/view/users_page.dart @@ -13,6 +13,8 @@ import 'package:syncrow_web/pages/roles_and_permission/users_page/users_table/vi import 'package:syncrow_web/pages/roles_and_permission/users_page/users_table/view/de_activate_filter.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/users_table/view/name_filter.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/users_table/view/user_table.dart'; +import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; +import 'package:syncrow_web/pages/space_tree/bloc/space_tree_event.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; @@ -25,8 +27,7 @@ class UsersPage extends StatelessWidget { Widget build(BuildContext context) { final TextEditingController searchController = TextEditingController(); - Widget actionButton( - {bool isActive = false, required String title, Function()? onTap}) { + Widget actionButton({bool isActive = false, required String title, Function()? onTap}) { return InkWell( onTap: onTap, child: Padding( @@ -59,8 +60,7 @@ class UsersPage extends StatelessWidget { : ColorsManager.disabledPink.withOpacity(0.5), ), child: Padding( - padding: - const EdgeInsets.only(left: 10, right: 10, bottom: 5, top: 5), + padding: const EdgeInsets.only(left: 10, right: 10, bottom: 5, top: 5), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, @@ -84,15 +84,12 @@ class UsersPage extends StatelessWidget { } Widget changeIconStatus( - {required String userId, - required String status, - required Function()? onTap}) { + {required String userId, required String status, required Function()? onTap}) { return Center( child: InkWell( onTap: onTap, child: Padding( - padding: - const EdgeInsets.only(left: 5, right: 5, bottom: 5, top: 5), + padding: const EdgeInsets.only(left: 5, right: 5, bottom: 5, top: 5), child: SvgPicture.asset( status == "invited" ? Assets.invitedIcon @@ -160,6 +157,7 @@ class UsersPage extends StatelessWidget { const SizedBox(width: 20), InkWell( onTap: () { + context.read().add(ClearCachedData()); showDialog( context: context, barrierDismissible: false, @@ -198,14 +196,10 @@ class UsersPage extends StatelessWidget { context: context, isSelected: _blocRole.currentSortOrder, aToZTap: () { - context - .read() - .add(const SortUsersByNameAsc()); + context.read().add(const SortUsersByNameAsc()); }, zToaTap: () { - context - .read() - .add(const SortUsersByNameDesc()); + context.read().add(const SortUsersByNameDesc()); }, ); } @@ -214,9 +208,8 @@ class UsersPage extends StatelessWidget { for (var item in _blocRole.jobTitle) item: _blocRole.selectedJobTitles.contains(item), }; - final RenderBox overlay = Overlay.of(context) - .context - .findRenderObject() as RenderBox; + final RenderBox overlay = + Overlay.of(context).context.findRenderObject() as RenderBox; showPopUpFilterMenu( position: RelativeRect.fromLTRB( @@ -256,9 +249,8 @@ class UsersPage extends StatelessWidget { for (var item in _blocRole.roleTypes) item: _blocRole.selectedRoles.contains(item), }; - final RenderBox overlay = Overlay.of(context) - .context - .findRenderObject() as RenderBox; + final RenderBox overlay = + Overlay.of(context).context.findRenderObject() as RenderBox; showPopUpFilterMenu( position: RelativeRect.fromLTRB( overlay.size.width / 4, @@ -278,10 +270,9 @@ class UsersPage extends StatelessWidget { .map((entry) => entry.key) .toList(); Navigator.of(context).pop(); - context.read().add( - FilterUsersByRoleEvent( - selectedRoles: selectedItems, - sortOrder: _blocRole.currentSortRole)); + context.read().add(FilterUsersByRoleEvent( + selectedRoles: selectedItems, + sortOrder: _blocRole.currentSortRole)); }, onSortAtoZ: (v) { _blocRole.currentSortRole = v; @@ -296,14 +287,10 @@ class UsersPage extends StatelessWidget { context: context, isSelected: _blocRole.currentSortOrder, aToZTap: () { - context - .read() - .add(const DateNewestToOldestEvent()); + context.read().add(const DateNewestToOldestEvent()); }, zToaTap: () { - context - .read() - .add(const DateOldestToNewestEvent()); + context.read().add(const DateOldestToNewestEvent()); }, ); } @@ -312,9 +299,8 @@ class UsersPage extends StatelessWidget { for (var item in _blocRole.createdBy) item: _blocRole.selectedCreatedBy.contains(item), }; - final RenderBox overlay = Overlay.of(context) - .context - .findRenderObject() as RenderBox; + final RenderBox overlay = + Overlay.of(context).context.findRenderObject() as RenderBox; showPopUpFilterMenu( position: RelativeRect.fromLTRB( overlay.size.width / 1, @@ -352,9 +338,8 @@ class UsersPage extends StatelessWidget { item: _blocRole.selectedStatuses.contains(item), }; - final RenderBox overlay = Overlay.of(context) - .context - .findRenderObject() as RenderBox; + final RenderBox overlay = + Overlay.of(context).context.findRenderObject() as RenderBox; showPopUpFilterMenu( position: RelativeRect.fromLTRB( overlay.size.width / 0, @@ -391,14 +376,10 @@ class UsersPage extends StatelessWidget { context: context, isSelected: _blocRole.currentSortOrderDate, aToZTap: () { - context - .read() - .add(const DateNewestToOldestEvent()); + context.read().add(const DateNewestToOldestEvent()); }, zToaTap: () { - context - .read() - .add(const DateOldestToNewestEvent()); + context.read().add(const DateOldestToNewestEvent()); }, ); } @@ -425,23 +406,17 @@ class UsersPage extends StatelessWidget { Text(user.createdTime ?? ''), Text(user.invitedBy), status( - status: user.isEnabled == false - ? 'disabled' - : user.status, + status: user.isEnabled == false ? 'disabled' : user.status, ), changeIconStatus( - status: user.isEnabled == false - ? 'disabled' - : user.status, + status: user.isEnabled == false ? 'disabled' : user.status, userId: user.uuid, onTap: user.status != "invited" ? () { - context.read().add( - ChangeUserStatus( - userId: user.uuid, - newStatus: user.isEnabled == false - ? 'disabled' - : user.status)); + context.read().add(ChangeUserStatus( + userId: user.uuid, + newStatus: + user.isEnabled == false ? 'disabled' : user.status)); } : null, ), @@ -456,8 +431,7 @@ class UsersPage extends StatelessWidget { context: context, barrierDismissible: false, builder: (BuildContext context) { - return EditUserDialog( - userId: user.uuid); + return EditUserDialog(userId: user.uuid); }, ).then((v) { if (v != null) { @@ -478,13 +452,10 @@ class UsersPage extends StatelessWidget { context: context, barrierDismissible: false, builder: (BuildContext context) { - return DeleteUserDialog( - onTapDelete: () async { + return DeleteUserDialog(onTapDelete: () async { try { - _blocRole.add(DeleteUserEvent( - user.uuid, context)); - await Future.delayed( - const Duration(seconds: 2)); + _blocRole.add(DeleteUserEvent(user.uuid, context)); + await Future.delayed(const Duration(seconds: 2)); return true; } catch (e) { return false; @@ -514,20 +485,14 @@ class UsersPage extends StatelessWidget { visiblePagesCount: 4, buttonRadius: 10, selectedButtonColor: ColorsManager.secondaryColor, - buttonUnSelectedBorderColor: - ColorsManager.grayBorder, - lastPageIcon: - const Icon(Icons.keyboard_double_arrow_right), - firstPageIcon: - const Icon(Icons.keyboard_double_arrow_left), - totalPages: (_blocRole.totalUsersCount.length / - _blocRole.itemsPerPage) - .ceil(), + buttonUnSelectedBorderColor: ColorsManager.grayBorder, + lastPageIcon: const Icon(Icons.keyboard_double_arrow_right), + firstPageIcon: const Icon(Icons.keyboard_double_arrow_left), + totalPages: + (_blocRole.totalUsersCount.length / _blocRole.itemsPerPage).ceil(), currentPage: _blocRole.currentPage, onPageChanged: (int pageNumber) { - context - .read() - .add(ChangePage(pageNumber)); + context.read().add(ChangePage(pageNumber)); }, ), ),