]> git.proxmox.com Git - flutter/pve_flutter_frontend.git/blame - lib/bloc/pve_node_overview_bloc.dart
nodes: overview: switch to updated camelCase name for disk wearout percentage
[flutter/pve_flutter_frontend.git] / lib / bloc / pve_node_overview_bloc.dart
CommitLineData
694d7a8f
TM
1import 'dart:async';
2
3import 'package:meta/meta.dart';
4import 'package:proxmox_dart_api_client/proxmox_dart_api_client.dart';
5import 'package:pve_flutter_frontend/bloc/proxmox_base_bloc.dart';
6import 'package:pve_flutter_frontend/states/pve_node_overview_state.dart';
7
8class PveNodeOverviewBloc
9 extends ProxmoxBaseBloc<PveNodeOverviewEvent, PveNodeOverviewState> {
10 final ProxmoxApiClient apiClient;
11 final String nodeID;
12 final PveNodeOverviewState init;
13 @override
14 PveNodeOverviewState get initialState => init;
15
16 PveNodeOverviewBloc(
598a93b4 17 {required this.apiClient, required this.nodeID, required this.init});
694d7a8f 18
598a93b4 19 Timer? sTimer;
694d7a8f
TM
20 @override
21 void doOnListen() {
22 sTimer = Timer.periodic(
23 Duration(seconds: 4), (timer) => events.add(UpdateNodeStatus()));
24 }
25
26 @override
27 void doOnCancel() {
28 if (!hasListener) {
29 sTimer?.cancel();
30 }
31 }
32
33 @override
34 Stream<PveNodeOverviewState> processEvents(
35 PveNodeOverviewEvent event) async* {
36 if (event is UpdateNodeStatus) {
37 final status = await apiClient.getNodeStatus(nodeID);
38 yield latestState.rebuild((b) => b..status.replace(status));
39 final rrdData =
40 await apiClient.getNodeRRDdata(nodeID, PveRRDTimeframeType.hour);
41 yield latestState.rebuild((b) => b..rrdData.replace(rrdData));
42 final services = await apiClient.getNodeServices(nodeID);
43 yield latestState.rebuild((b) => b..services.replace(services));
44 final updates = await apiClient.getNodeAptUpdate(nodeID);
45 yield latestState.rebuild((b) => b..updates.replace(updates));
46 final disks = await apiClient.getNodeDisksList(nodeID);
47 yield latestState.rebuild((b) => b..disks.replace(disks));
48 }
49 }
50}
51
52abstract class PveNodeOverviewEvent {}
53
54class UpdateNodeStatus extends PveNodeOverviewEvent {}