mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
58 lines
1.6 KiB
Dart
58 lines
1.6 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/subspace_model.dart';
|
|
import 'package:syncrow_web/utils/constants/action_enum.dart';
|
|
|
|
import 'subspace_event.dart';
|
|
import 'subspace_state.dart';
|
|
|
|
class SubSpaceBloc extends Bloc<SubSpaceEvent, SubSpaceState> {
|
|
SubSpaceBloc() : super(SubSpaceState([], [], '')) {
|
|
on<AddSubSpace>((event, emit) {
|
|
final existingNames =
|
|
state.subSpaces.map((e) => e.subspaceName).toSet();
|
|
|
|
if (existingNames.contains(event.subSpace.subspaceName.toLowerCase())) {
|
|
emit(SubSpaceState(
|
|
state.subSpaces,
|
|
state.updatedSubSpaceModels,
|
|
'Subspace name already exists.',
|
|
));
|
|
} else {
|
|
final updatedSubSpaces = List<SubspaceModel>.from(state.subSpaces)
|
|
..add(event.subSpace);
|
|
|
|
emit(SubSpaceState(
|
|
updatedSubSpaces,
|
|
state.updatedSubSpaceModels,
|
|
'',
|
|
));
|
|
}
|
|
});
|
|
|
|
// Handle RemoveSubSpace Event
|
|
on<RemoveSubSpace>((event, emit) {
|
|
final updatedSubSpaces = List<SubspaceModel>.from(state.subSpaces)
|
|
..remove(event.subSpace);
|
|
|
|
final updatedSubspaceModels = List<UpdateSubspaceModel>.from(
|
|
state.updatedSubSpaceModels,
|
|
);
|
|
|
|
if (event.subSpace.uuid?.isNotEmpty ?? false) {
|
|
updatedSubspaceModels.add(UpdateSubspaceModel(
|
|
action: Action.delete,
|
|
uuid: event.subSpace.uuid!,
|
|
));
|
|
}
|
|
|
|
emit(SubSpaceState(
|
|
updatedSubSpaces,
|
|
updatedSubspaceModels,
|
|
'', // Clear error message
|
|
));
|
|
});
|
|
|
|
// Handle UpdateSubSpace Event
|
|
}
|
|
}
|