Created duplicate_space presentation layer.

This commit is contained in:
Faris Armoush
2025-07-23 09:51:09 +03:00
parent e6d9000ee2
commit 71f0da9299
3 changed files with 80 additions and 0 deletions

View File

@ -0,0 +1,36 @@
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/duplicate_space/domain/params/duplicate_space_param.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/duplicate_space/domain/services/duplicate_space_service.dart';
import 'package:syncrow_web/services/api/api_exception.dart';
part 'duplicate_space_event.dart';
part 'duplicate_space_state.dart';
class DuplicateSpaceBloc extends Bloc<DuplicateSpaceEvent, DuplicateSpaceState> {
DuplicateSpaceBloc(
this._duplicateSpaceService,
) : super(const DuplicateSpaceInitial()) {
on<DuplicateSpaceEvent>(_onDuplicateSpaceEvent);
}
final DuplicateSpaceService _duplicateSpaceService;
Future<void> _onDuplicateSpaceEvent(
DuplicateSpaceEvent event,
Emitter<DuplicateSpaceState> emit,
) async {
try {
emit(const DuplicateSpaceLoading());
final result = await _duplicateSpaceService.duplicateSpace(event.param);
emit(DuplicateSpaceSuccess(result));
} on APIException catch (e) {
emit(DuplicateSpaceFailure(e.message));
} catch (e) {
emit(DuplicateSpaceFailure(e.toString()));
} finally {
emit(const DuplicateSpaceInitial());
}
}
}

View File

@ -0,0 +1,10 @@
part of 'duplicate_space_bloc.dart';
final class DuplicateSpaceEvent extends Equatable {
const DuplicateSpaceEvent({required this.param});
final DuplicateSpaceParam param;
@override
List<Object> get props => [param];
}

View File

@ -0,0 +1,34 @@
part of 'duplicate_space_bloc.dart';
sealed class DuplicateSpaceState extends Equatable {
const DuplicateSpaceState();
@override
List<Object> get props => [];
}
final class DuplicateSpaceInitial extends DuplicateSpaceState {
const DuplicateSpaceInitial();
}
final class DuplicateSpaceLoading extends DuplicateSpaceState {
const DuplicateSpaceLoading();
}
final class DuplicateSpaceSuccess extends DuplicateSpaceState {
const DuplicateSpaceSuccess(this.space);
final SpaceModel space;
@override
List<Object> get props => [space];
}
final class DuplicateSpaceFailure extends DuplicateSpaceState {
const DuplicateSpaceFailure(this.errorMessage);
final String errorMessage;
@override
List<Object> get props => [errorMessage];
}