mirror of
https://github.com/SyncrowIOT/web.git
synced 2026-10-25 16:57:56 +00:00
Implemented devices bloc, service, param and model.
This commit is contained in:
@@ -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];
|
||||
}
|
||||
Reference in New Issue
Block a user