mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-08-25 11:39:39 +00:00
Add CreateSpaceBloc, CreateSpaceEvent, and CreateSpaceState for managing space creation logic. Implement event handling and state management to enhance user experience during space creation.
This commit is contained in:
@ -0,0 +1,34 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_management_v2/modules/communities/domain/models/space_model.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_management_v2/modules/create_space/domain/params/create_space_param.dart';
|
||||||
|
import 'package:syncrow_web/pages/space_management_v2/modules/create_space/domain/services/create_space_service.dart';
|
||||||
|
import 'package:syncrow_web/services/api/api_exception.dart';
|
||||||
|
|
||||||
|
part 'create_space_event.dart';
|
||||||
|
part 'create_space_state.dart';
|
||||||
|
|
||||||
|
class CreateSpaceBloc extends Bloc<CreateSpaceEvent, CreateSpaceState> {
|
||||||
|
CreateSpaceBloc(
|
||||||
|
this._createSpaceService,
|
||||||
|
) : super(const CreateSpaceInitial()) {
|
||||||
|
on<CreateSpace>(_onCreateSpace);
|
||||||
|
}
|
||||||
|
|
||||||
|
final CreateSpaceService _createSpaceService;
|
||||||
|
|
||||||
|
Future<void> _onCreateSpace(
|
||||||
|
CreateSpace event,
|
||||||
|
Emitter<CreateSpaceState> emit,
|
||||||
|
) async {
|
||||||
|
emit(const CreateSpaceLoading());
|
||||||
|
try {
|
||||||
|
final result = await _createSpaceService.createSpace(event.param);
|
||||||
|
emit(CreateSpaceSuccess(result));
|
||||||
|
} on APIException catch (e) {
|
||||||
|
emit(CreateSpaceFailure(e.message));
|
||||||
|
} catch (e) {
|
||||||
|
emit(CreateSpaceFailure(e.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
part of 'create_space_bloc.dart';
|
||||||
|
|
||||||
|
sealed class CreateSpaceEvent extends Equatable {
|
||||||
|
const CreateSpaceEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class CreateSpace extends CreateSpaceEvent {
|
||||||
|
const CreateSpace(this.param);
|
||||||
|
|
||||||
|
final CreateSpaceParam param;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [param];
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
part of 'create_space_bloc.dart';
|
||||||
|
|
||||||
|
sealed class CreateSpaceState extends Equatable {
|
||||||
|
const CreateSpaceState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class CreateSpaceInitial extends CreateSpaceState {
|
||||||
|
const CreateSpaceInitial();
|
||||||
|
}
|
||||||
|
|
||||||
|
final class CreateSpaceLoading extends CreateSpaceState {
|
||||||
|
const CreateSpaceLoading();
|
||||||
|
}
|
||||||
|
|
||||||
|
final class CreateSpaceSuccess extends CreateSpaceState {
|
||||||
|
const CreateSpaceSuccess(this.space);
|
||||||
|
|
||||||
|
final SpaceModel space;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [space];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class CreateSpaceFailure extends CreateSpaceState {
|
||||||
|
const CreateSpaceFailure(this.errorMessage);
|
||||||
|
|
||||||
|
final String errorMessage;
|
||||||
|
}
|
Reference in New Issue
Block a user