Implemented devices bloc, service, param and model.

This commit is contained in:
Faris Armoush
2025-06-16 15:39:40 +03:00
parent 2108622b5b
commit 3eb38d28f7
7 changed files with 225 additions and 0 deletions
@@ -0,0 +1,32 @@
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/models/device_model.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/params/load_devices_param.dart';
import 'package:syncrow_web/pages/space_management_v2/modules/devices/domain/services/device_service.dart';
import 'package:syncrow_web/services/api/api_exception.dart';
part 'device_event.dart';
part 'device_state.dart';
class DeviceBloc extends Bloc<DeviceEvent, DeviceState> {
final DeviceService _deviceService;
DeviceBloc(this._deviceService) : super(DeviceInitial()) {
on<LoadDevices>(_onLoadDevices);
}
Future<void> _onLoadDevices(
LoadDevices event,
Emitter<DeviceState> emit,
) async {
emit(DeviceLoading());
try {
final devices = await _deviceService.getDevices(event.param);
emit(DeviceLoaded(devices));
} on APIException catch (e) {
emit(DeviceFailure(e.message));
} catch (e) {
emit(DeviceFailure(e.toString()));
}
}
}
@@ -0,0 +1,17 @@
part of 'device_bloc.dart';
sealed class DeviceEvent extends Equatable {
const DeviceEvent();
@override
List<Object> get props => [];
}
final class LoadDevices extends DeviceEvent {
const LoadDevices(this.param);
final LoadDevicesParam param;
@override
List<Object> get props => [param];
}
@@ -0,0 +1,30 @@
part of 'device_bloc.dart';
sealed class DeviceState extends Equatable {
const DeviceState();
@override
List<Object> get props => [];
}
final class DeviceInitial extends DeviceState {}
final class DeviceLoading extends DeviceState {}
final class DeviceLoaded extends DeviceState {
final List<DeviceModel> devices;
const DeviceLoaded(this.devices);
@override
List<Object> get props => [devices];
}
final class DeviceFailure extends DeviceState {
final String message;
const DeviceFailure(this.message);
@override
List<Object> get props => [message];
}