mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
fixed space update
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:syncrow_web/pages/common/bloc/project_manager.dart';
|
import 'package:syncrow_web/pages/common/bloc/project_manager.dart';
|
||||||
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
|
import 'package:syncrow_web/pages/space_tree/bloc/space_tree_bloc.dart';
|
||||||
@ -457,7 +458,8 @@ class SpaceManagementBloc extends Bloc<SpaceManagementEvent, SpaceManagementStat
|
|||||||
emit(SpaceManagementLoading());
|
emit(SpaceManagementLoading());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final updatedSpaces = await saveSpacesHierarchically(event.spaces, event.communityUuid);
|
final updatedSpaces =
|
||||||
|
await saveSpacesHierarchically(event.context, event.spaces, event.communityUuid);
|
||||||
|
|
||||||
final allSpaces = await _fetchSpacesForCommunity(event.communityUuid);
|
final allSpaces = await _fetchSpacesForCommunity(event.communityUuid);
|
||||||
|
|
||||||
@ -508,9 +510,17 @@ class SpaceManagementBloc extends Bloc<SpaceManagementEvent, SpaceManagementStat
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<List<SpaceModel>> saveSpacesHierarchically(
|
Future<List<SpaceModel>> saveSpacesHierarchically(
|
||||||
List<SpaceModel> spaces, String communityUuid) async {
|
BuildContext context, List<SpaceModel> spaces, String communityUuid) async {
|
||||||
final orderedSpaces = flattenHierarchy(spaces);
|
final orderedSpaces = flattenHierarchy(spaces);
|
||||||
final projectUuid = await ProjectManager.getProjectUUID() ?? '';
|
final projectUuid = await ProjectManager.getProjectUUID() ?? '';
|
||||||
|
var spaceBloc = context.read<SpaceTreeBloc>();
|
||||||
|
List<CommunityModel> 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) =>
|
final parentsToDelete = orderedSpaces.where((space) =>
|
||||||
space.status == SpaceStatus.deleted &&
|
space.status == SpaceStatus.deleted &&
|
||||||
@ -532,7 +542,13 @@ class SpaceManagementBloc extends Bloc<SpaceManagementEvent, SpaceManagementStat
|
|||||||
if (space.uuid != null && space.uuid!.isNotEmpty) {
|
if (space.uuid != null && space.uuid!.isNotEmpty) {
|
||||||
List<TagModelUpdate> tagUpdates = [];
|
List<TagModelUpdate> tagUpdates = [];
|
||||||
|
|
||||||
final prevSpace = await _api.getSpace(communityUuid, space.uuid!, projectUuid);
|
List<SpaceModel> matchedSpaces =
|
||||||
|
selectedCommunity.spaces.where((space) => space.uuid == space.uuid).toList();
|
||||||
|
|
||||||
|
if (matchedSpaces.isEmpty) continue;
|
||||||
|
|
||||||
|
final prevSpace = matchedSpaces[0];
|
||||||
|
|
||||||
final List<UpdateSubspaceTemplateModel> subspaceUpdates = [];
|
final List<UpdateSubspaceTemplateModel> subspaceUpdates = [];
|
||||||
final List<SubspaceModel>? prevSubspaces = prevSpace?.subspaces;
|
final List<SubspaceModel>? prevSubspaces = prevSpace?.subspaces;
|
||||||
final List<SubspaceModel>? newSubspaces = space.subspaces;
|
final List<SubspaceModel>? newSubspaces = space.subspaces;
|
||||||
@ -598,6 +614,8 @@ class SpaceManagementBloc extends Bloc<SpaceManagementEvent, SpaceManagementStat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print("tagUpdates ${tagUpdates}");
|
||||||
|
|
||||||
final response = await _api.updateSpace(
|
final response = await _api.updateSpace(
|
||||||
communityId: communityUuid,
|
communityId: communityUuid,
|
||||||
spaceId: space.uuid!,
|
spaceId: space.uuid!,
|
||||||
|
@ -58,14 +58,16 @@ class CreateSpaceEvent extends SpaceManagementEvent {
|
|||||||
class SaveSpacesEvent extends SpaceManagementEvent {
|
class SaveSpacesEvent extends SpaceManagementEvent {
|
||||||
final List<SpaceModel> spaces;
|
final List<SpaceModel> spaces;
|
||||||
final String communityUuid;
|
final String communityUuid;
|
||||||
|
final BuildContext context;
|
||||||
|
|
||||||
const SaveSpacesEvent({
|
const SaveSpacesEvent(
|
||||||
|
this.context, {
|
||||||
required this.spaces,
|
required this.spaces,
|
||||||
required this.communityUuid,
|
required this.communityUuid,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object> get props => [spaces, communityUuid];
|
List<Object> get props => [spaces, communityUuid, context];
|
||||||
}
|
}
|
||||||
|
|
||||||
class UpdateSpacePositionEvent extends SpaceManagementEvent {
|
class UpdateSpacePositionEvent extends SpaceManagementEvent {
|
||||||
@ -170,4 +172,4 @@ class UpdateSpaceModelCache extends SpaceManagementEvent {
|
|||||||
class DeleteSpaceModelFromCache extends SpaceManagementEvent {
|
class DeleteSpaceModelFromCache extends SpaceManagementEvent {
|
||||||
final String deletedUuid;
|
final String deletedUuid;
|
||||||
DeleteSpaceModelFromCache(this.deletedUuid);
|
DeleteSpaceModelFromCache(this.deletedUuid);
|
||||||
}
|
}
|
||||||
|
@ -460,6 +460,7 @@ class _CommunityStructureAreaState extends State<CommunityStructureArea> {
|
|||||||
String communityUuid = widget.selectedCommunity!.uuid;
|
String communityUuid = widget.selectedCommunity!.uuid;
|
||||||
|
|
||||||
context.read<SpaceManagementBloc>().add(SaveSpacesEvent(
|
context.read<SpaceManagementBloc>().add(SaveSpacesEvent(
|
||||||
|
context,
|
||||||
spaces: spacesToSave,
|
spaces: spacesToSave,
|
||||||
communityUuid: communityUuid,
|
communityUuid: communityUuid,
|
||||||
));
|
));
|
||||||
|
Reference in New Issue
Block a user