added event for creating subspace

This commit is contained in:
hannathkadher
2025-01-05 12:25:34 +04:00
parent 1d35377137
commit 1c256cc55c
4 changed files with 51 additions and 7 deletions

View File

@ -3,7 +3,8 @@ import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_spac
import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_state.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart';
class CreateSpaceModelBloc extends Bloc<CreateSpaceModelEvent, CreateSpaceModelState> {
class CreateSpaceModelBloc
extends Bloc<CreateSpaceModelEvent, CreateSpaceModelState> {
SpaceTemplateModel? _space;
CreateSpaceModelBloc() : super(CreateSpaceModelInitial()) {
@ -22,5 +23,20 @@ class CreateSpaceModelBloc extends Bloc<CreateSpaceModelEvent, CreateSpaceModelS
_space = event.spaceTemplate;
emit(CreateSpaceModelLoaded(_space!));
});
on<AddSubspacesToSpaceTemplate>((event, emit) {
if (_space != null) {
final updatedSpace = _space!.copyWith(
subspaceModels: [
...(_space!.subspaceModels ?? []),
...event.subspaces,
],
);
_space = updatedSpace;
emit(CreateSpaceModelLoaded(updatedSpace));
} else {
emit(CreateSpaceModelError("Space template not initialized"));
}
});
}
}

View File

@ -9,3 +9,9 @@ class UpdateSpaceTemplate extends CreateSpaceModelEvent {
UpdateSpaceTemplate(this.spaceTemplate);
}
class AddSubspacesToSpaceTemplate extends CreateSpaceModelEvent {
final List<SubspaceTemplateModel> subspaces;
AddSubspacesToSpaceTemplate(this.subspaces);
}

View File

@ -41,6 +41,22 @@ class SpaceTemplateModel {
'tags': tags?.map((e) => e.toJson()).toList(),
};
}
SpaceTemplateModel copyWith({
String? uuid,
String? modelName,
List<SubspaceTemplateModel>? subspaceModels,
List<TagModel>? tags,
String? internalId,
}) {
return SpaceTemplateModel(
uuid: uuid ?? this.uuid,
modelName: modelName ?? this.modelName,
subspaceModels: subspaceModels ?? this.subspaceModels,
tags: tags ?? this.tags,
internalId: internalId ?? this.internalId,
);
}
}
class SubspaceTemplateModel {

View File

@ -3,6 +3,8 @@ import 'package:syncrow_web/pages/common/buttons/cancel_button.dart';
import 'package:syncrow_web/pages/common/buttons/default_button.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/product_model.dart';
import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/add_device_type_widget.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_bloc.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/bloc/create_space_model_event.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/models/space_template_model.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/widgets/button_content_widget.dart';
import 'package:syncrow_web/pages/spaces_management/space_model/widgets/dialog/create_subspace_model_dialog.dart';
@ -73,7 +75,11 @@ class CreateSpaceModelDialog extends StatelessWidget {
if (result != null) {
// Update the subspaces
subspaces = result;
print('Updated Subspaces: $subspaces');
if (result.isNotEmpty) {
context
.read<CreateSpaceModelBloc>()
.add(AddSubspacesToSpaceTemplate(subspaces));
}
}
},
style: TextButton.styleFrom(