mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
Created AnalyticsDevicesBloc
.
This commit is contained in:
@ -0,0 +1,42 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/models/analytics_device.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/params/get_analytics_devices_param.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/services/analytics_devices/analytics_devices_service.dart';
|
||||||
|
|
||||||
|
part 'analytics_devices_event.dart';
|
||||||
|
part 'analytics_devices_state.dart';
|
||||||
|
|
||||||
|
class AnalyticsDevicesBloc
|
||||||
|
extends Bloc<AnalyticsDevicesEvent, AnalyticsDevicesState> {
|
||||||
|
AnalyticsDevicesBloc(
|
||||||
|
this._analyticsDevicesService,
|
||||||
|
) : super(const AnalyticsDevicesState()) {
|
||||||
|
on<LoadAnalyticsDevicesEvent>(_onLoadAnalyticsDevices);
|
||||||
|
}
|
||||||
|
final AnalyticsDevicesService _analyticsDevicesService;
|
||||||
|
|
||||||
|
Future<void> _onLoadAnalyticsDevices(
|
||||||
|
LoadAnalyticsDevicesEvent event,
|
||||||
|
Emitter<AnalyticsDevicesState> emit,
|
||||||
|
) async {
|
||||||
|
emit(const AnalyticsDevicesState(status: AnalyticsDevicesStatus.loading));
|
||||||
|
|
||||||
|
try {
|
||||||
|
final devices = await _analyticsDevicesService.getDevices(event.param);
|
||||||
|
emit(
|
||||||
|
AnalyticsDevicesState(
|
||||||
|
status: AnalyticsDevicesStatus.loaded,
|
||||||
|
devices: devices,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
emit(
|
||||||
|
AnalyticsDevicesState(
|
||||||
|
status: AnalyticsDevicesStatus.failure,
|
||||||
|
errorMessage: e.toString(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
part of 'analytics_devices_bloc.dart';
|
||||||
|
|
||||||
|
sealed class AnalyticsDevicesEvent extends Equatable {
|
||||||
|
const AnalyticsDevicesEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class LoadAnalyticsDevicesEvent extends AnalyticsDevicesEvent {
|
||||||
|
const LoadAnalyticsDevicesEvent(this.param);
|
||||||
|
|
||||||
|
final GetAnalyticsDevicesParam param;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [param];
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
part of 'analytics_devices_bloc.dart';
|
||||||
|
|
||||||
|
enum AnalyticsDevicesStatus { initial, loading, loaded, failure }
|
||||||
|
|
||||||
|
final class AnalyticsDevicesState extends Equatable {
|
||||||
|
const AnalyticsDevicesState({
|
||||||
|
this.status = AnalyticsDevicesStatus.initial,
|
||||||
|
this.devices = const [],
|
||||||
|
this.errorMessage,
|
||||||
|
});
|
||||||
|
|
||||||
|
final AnalyticsDevicesStatus status;
|
||||||
|
final List<AnalyticsDevice> devices;
|
||||||
|
final String? errorMessage;
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [status, devices, errorMessage];
|
||||||
|
}
|
Reference in New Issue
Block a user