diff --git a/lib/pages/spaces_management/helper/tag_helper.dart b/lib/pages/spaces_management/helper/tag_helper.dart index 9c0299ba..3e3353a3 100644 --- a/lib/pages/spaces_management/helper/tag_helper.dart +++ b/lib/pages/spaces_management/helper/tag_helper.dart @@ -299,7 +299,7 @@ class TagHelper { static Map updateSubspaceTagModels( List updatedTags, List? subspaces) { - return TagHelper.updateTags( + final result = TagHelper.updateTags( updatedTags: updatedTags, subspaces: subspaces, getInternalId: (tag) => tag.internalId, @@ -310,6 +310,34 @@ class TagHelper { setSubspaceTags: (subspace, tags) => subspace.tags = tags, checkTagExistInSubspace: checkTagExistInSubspaceModels, ); + + final processedTags = result['updatedTags'] as List; + final processedSubspaces = + List.from(result['subspaces'] as List); + + for (var subspace in processedSubspaces) { + final subspaceTags = subspace.tags; + + if (subspaceTags != null) { + for (int i = 0; i < subspaceTags.length; i++) { + final tag = subspaceTags[i]; + + // Find the updated tag inside processedTags + final changedTag = updatedTags.firstWhere( + (t) => t.internalId == tag.internalId, + orElse: () => tag, + ); + + if (changedTag.tag != tag.tag) { + subspaceTags[i] = changedTag.copyWith(tag: changedTag.tag); + } + } + } + + subspace.tags = subspaceTags; + } + + return {'updatedTags': processedTags, 'subspaces': processedSubspaces}; } static int? checkTagExistInSubspace(Tag tag, List? subspaces) { @@ -328,7 +356,7 @@ class TagHelper { static Map processTags( List updatedTags, List? subspaces) { - return TagHelper.updateTags( + final result = TagHelper.updateTags( updatedTags: updatedTags, subspaces: subspaces, getInternalId: (tag) => tag.internalId, @@ -339,6 +367,33 @@ class TagHelper { setSubspaceTags: (subspace, tags) => subspace.tags = tags, checkTagExistInSubspace: checkTagExistInSubspace, ); + + final processedTags = result['updatedTags'] as List; + final processedSubspaces = + List.from(result['subspaces'] as List); + + for (var subspace in processedSubspaces) { + final subspaceTags = subspace.tags; + + if (subspaceTags != null) { + for (int i = 0; i < subspaceTags.length; i++) { + final tag = subspaceTags[i]; + + final changedTag = updatedTags.firstWhere( + (t) => t.internalId == tag.internalId, + orElse: () => tag, + ); + + if (changedTag.tag != tag.tag) { + subspaceTags[i] = changedTag.copyWith(tag: changedTag.tag); + } + } + } + + subspace.tags = subspaceTags; + } + + return {'updatedTags': processedTags, 'subspaces': processedSubspaces}; } static List getAllTagValues( diff --git a/lib/pages/spaces_management/space_model/widgets/dialog/create_space_model_dialog.dart b/lib/pages/spaces_management/space_model/widgets/dialog/create_space_model_dialog.dart index 28b548b0..dd41903e 100644 --- a/lib/pages/spaces_management/space_model/widgets/dialog/create_space_model_dialog.dart +++ b/lib/pages/spaces_management/space_model/widgets/dialog/create_space_model_dialog.dart @@ -130,14 +130,14 @@ class CreateSpaceModelDialog extends StatelessWidget { SubspaceModelCreate( subspaces: state.space.subspaceModels ?? [], tags: state.space.tags ?? [], - onSpaceModelUpdate: (updatedSubspaces,updatedTags) { + onSpaceModelUpdate: (updatedSubspaces, updatedTags) { context .read() .add(AddSubspacesToSpaceTemplate(updatedSubspaces)); - if(updatedTags!=null){ + if (updatedTags != null) { context - .read() - .add(AddTagsToSpaceTemplate(updatedTags)); + .read() + .add(AddTagsToSpaceTemplate(updatedTags)); } }, ),