From 16df75eb49322c7c7e634b9784f81886afd66cee Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Thu, 13 Mar 2025 13:14:31 +0400 Subject: [PATCH 1/4] fixed space update --- .../bloc/space_management_bloc.dart | 24 ++++++++++++++++--- .../bloc/space_management_event.dart | 8 ++++--- .../widgets/community_structure_widget.dart | 1 + 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/lib/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart b/lib/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart index 48208c87..b0f28459 100644 --- a/lib/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart +++ b/lib/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'package:flutter/widgets.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/common/bloc/project_manager.dart'; import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart'; @@ -457,7 +458,8 @@ class SpaceManagementBloc extends Bloc> saveSpacesHierarchically( - List spaces, String communityUuid) async { + BuildContext context, List spaces, String communityUuid) async { final orderedSpaces = flattenHierarchy(spaces); final projectUuid = await ProjectManager.getProjectUUID() ?? ''; + var spaceBloc = context.read(); + List communities = spaceBloc.state.communityList; + CommunityModel? selectedCommunity = communities.firstWhere( + (community) => community.uuid == communityUuid, + ); + if (selectedCommunity != null) { + print("community name ${selectedCommunity}, spaces ${selectedCommunity.spaces.length}"); + } final parentsToDelete = orderedSpaces.where((space) => space.status == SpaceStatus.deleted && @@ -532,7 +542,13 @@ class SpaceManagementBloc extends Bloc tagUpdates = []; - final prevSpace = await _api.getSpace(communityUuid, space.uuid!, projectUuid); + List matchedSpaces = + selectedCommunity.spaces.where((space) => space.uuid == space.uuid).toList(); + + if (matchedSpaces.isEmpty) continue; + + final prevSpace = matchedSpaces[0]; + final List subspaceUpdates = []; final List? prevSubspaces = prevSpace?.subspaces; final List? newSubspaces = space.subspaces; @@ -598,6 +614,8 @@ class SpaceManagementBloc extends Bloc spaces; final String communityUuid; + final BuildContext context; - const SaveSpacesEvent({ + const SaveSpacesEvent( + this.context, { required this.spaces, required this.communityUuid, }); @override - List get props => [spaces, communityUuid]; + List get props => [spaces, communityUuid, context]; } class UpdateSpacePositionEvent extends SpaceManagementEvent { @@ -170,4 +172,4 @@ class UpdateSpaceModelCache extends SpaceManagementEvent { class DeleteSpaceModelFromCache extends SpaceManagementEvent { final String deletedUuid; DeleteSpaceModelFromCache(this.deletedUuid); -} \ No newline at end of file +} diff --git a/lib/pages/spaces_management/all_spaces/widgets/community_structure_widget.dart b/lib/pages/spaces_management/all_spaces/widgets/community_structure_widget.dart index 12d76452..56352432 100644 --- a/lib/pages/spaces_management/all_spaces/widgets/community_structure_widget.dart +++ b/lib/pages/spaces_management/all_spaces/widgets/community_structure_widget.dart @@ -460,6 +460,7 @@ class _CommunityStructureAreaState extends State { String communityUuid = widget.selectedCommunity!.uuid; context.read().add(SaveSpacesEvent( + context, spaces: spacesToSave, communityUuid: communityUuid, )); From 8ed6980264a921519473ba74d5be21286b9bf133 Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Thu, 13 Mar 2025 13:51:52 +0400 Subject: [PATCH 2/4] resposnive text length of space model name --- .../widgets/space_model_card_widget.dart | 79 ++++++++----------- lib/utils/string_utils.dart | 6 ++ 2 files changed, 38 insertions(+), 47 deletions(-) create mode 100644 lib/utils/string_utils.dart diff --git a/lib/pages/spaces_management/space_model/widgets/space_model_card_widget.dart b/lib/pages/spaces_management/space_model/widgets/space_model_card_widget.dart index d028acba..4d72a419 100644 --- a/lib/pages/spaces_management/space_model/widgets/space_model_card_widget.dart +++ b/lib/pages/spaces_management/space_model/widgets/space_model_card_widget.dart @@ -18,8 +18,10 @@ import 'package:syncrow_web/pages/spaces_management/space_model/widgets/dynamic_ import 'package:syncrow_web/pages/spaces_management/space_model/widgets/dynamic_room_widget.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; +import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; +import 'package:syncrow_web/utils/string_utils.dart'; -class SpaceModelCardWidget extends StatelessWidget { +class SpaceModelCardWidget extends StatelessWidget with HelperResponsiveLayout { final SpaceTemplateModel model; final BuildContext? pageContext; final bool topActionsDisabled; @@ -76,14 +78,17 @@ class SpaceModelCardWidget extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - model.modelName, - style: Theme.of(context).textTheme.headlineMedium?.copyWith( - color: Colors.black, - fontWeight: FontWeight.bold, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, + Expanded( + child: Text( + StringUtils.capitalizeFirstLetter(model.modelName), + style: Theme.of(context).textTheme.headlineMedium?.copyWith( + color: ColorsManager.blackColor, + fontWeight: FontWeight.bold, + fontSize: isSmallScreenSize(context) ? 13 : 20, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), ), if (!topActionsDisabled) Row( @@ -95,15 +100,12 @@ class SpaceModelCardWidget extends StatelessWidget { builder: (BuildContext dialogContext) { return BlocProvider( create: (_) => LinkSpaceToModelBloc(), - child: BlocListener( + child: BlocListener( listenWhen: (previous, current) { return previous != current; }, listener: (context, state) { - final _bloc = - BlocProvider.of( - context); + final _bloc = BlocProvider.of(context); if (state is SpaceModelLoading) { showDialog( context: context, @@ -111,19 +113,14 @@ class SpaceModelCardWidget extends StatelessWidget { builder: (BuildContext context) { return Dialog( shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular( - 20)), + borderRadius: BorderRadius.circular(20)), elevation: 10, backgroundColor: Colors.white, child: Padding( - padding: - const EdgeInsets.symmetric( - vertical: 30, - horizontal: 50), + padding: const EdgeInsets.symmetric( + vertical: 30, horizontal: 50), child: Column( - mainAxisSize: - MainAxisSize.min, + mainAxisSize: MainAxisSize.min, children: [ CustomLoadingIndicator(), ], @@ -132,19 +129,14 @@ class SpaceModelCardWidget extends StatelessWidget { ); }, ); - } else if (state - is AlreadyHaveLinkedState) { + } else if (state is AlreadyHaveLinkedState) { Navigator.of(dialogContext).pop(); - showOverwriteDialog( - context, _bloc, model); - } else if (state - is SpaceValidationSuccess) { + showOverwriteDialog(context, _bloc, model); + } else if (state is SpaceValidationSuccess) { _bloc.add(LinkSpaceModelEvent( - isOverWrite: false, - selectedSpaceMode: model.uuid)); + isOverWrite: false, selectedSpaceMode: model.uuid)); - Future.delayed( - const Duration(seconds: 1), () { + Future.delayed(const Duration(seconds: 1), () { Navigator.of(dialogContext).pop(); Navigator.of(dialogContext).pop(); Navigator.of(dialogContext).pop(); @@ -152,29 +144,23 @@ class SpaceModelCardWidget extends StatelessWidget { showDialog( context: context, - builder: - (BuildContext dialogContext) { + builder: (BuildContext dialogContext) { return const LinkingSuccessful(); }, ).then((v) { - Future.delayed( - const Duration(seconds: 2), () { + Future.delayed(const Duration(seconds: 2), () { Navigator.of(dialogContext).pop(); }); }); - } else if (state - is SpaceModelLinkSuccess) { + } else if (state is SpaceModelLinkSuccess) { Navigator.of(dialogContext).pop(); Navigator.of(dialogContext).pop(); showDialog( context: context, barrierDismissible: false, - builder: (BuildContext - successDialogContext) { - Future.delayed( - const Duration(seconds: 2), () { - Navigator.of(successDialogContext) - .pop(); + builder: (BuildContext successDialogContext) { + Future.delayed(const Duration(seconds: 2), () { + Navigator.of(successDialogContext).pop(); }); return const LinkingSuccessful(); @@ -232,8 +218,7 @@ class SpaceModelCardWidget extends StatelessWidget { ), ), ), - if (productTagCount.isNotEmpty && - model.subspaceModels != null) + if (productTagCount.isNotEmpty && model.subspaceModels != null) Container( width: 1.0, color: ColorsManager.softGray, diff --git a/lib/utils/string_utils.dart b/lib/utils/string_utils.dart new file mode 100644 index 00000000..c8d8e2af --- /dev/null +++ b/lib/utils/string_utils.dart @@ -0,0 +1,6 @@ +class StringUtils { + static String capitalizeFirstLetter(String text) { + if (text.isEmpty) return text; + return text[0].toUpperCase() + text.substring(1); + } +} From c39c6937552ab4b580556731e64338138467b66f Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Thu, 13 Mar 2025 14:37:39 +0400 Subject: [PATCH 3/4] remove unused import --- lib/services/routines_api.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/services/routines_api.dart b/lib/services/routines_api.dart index 9360820c..4ca69546 100644 --- a/lib/services/routines_api.dart +++ b/lib/services/routines_api.dart @@ -6,7 +6,6 @@ import 'package:syncrow_web/pages/routines/models/routine_details_model.dart'; import 'package:syncrow_web/pages/routines/models/routine_model.dart'; import 'package:syncrow_web/services/api/http_service.dart'; import 'package:syncrow_web/utils/constants/api_const.dart'; -import 'package:syncrow_web/utils/constants/temp_const.dart'; class SceneApi { static final HTTPService _httpService = HTTPService(); From 70d31f53513066d06b05d9d99d41fb0ac22810b4 Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Thu, 13 Mar 2025 14:51:09 +0400 Subject: [PATCH 4/4] removed print --- .../all_spaces/bloc/space_management_bloc.dart | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart b/lib/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart index b0f28459..d675c680 100644 --- a/lib/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart +++ b/lib/pages/spaces_management/all_spaces/bloc/space_management_bloc.dart @@ -518,9 +518,6 @@ class SpaceManagementBloc extends Bloc community.uuid == communityUuid, ); - if (selectedCommunity != null) { - print("community name ${selectedCommunity}, spaces ${selectedCommunity.spaces.length}"); - } final parentsToDelete = orderedSpaces.where((space) => space.status == SpaceStatus.deleted && @@ -614,8 +611,6 @@ class SpaceManagementBloc extends Bloc