node_launchpad/
action.rs

1// Copyright 2024 MaidSafe.net limited.
2//
3// This SAFE Network Software is licensed to you under The General Public License (GPL), version 3.
4// Unless required by applicable law or agreed to in writing, the SAFE Network Software distributed
5// under the GPL Licence is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
6// KIND, either express or implied. Please review the Licences for the specific language governing
7// permissions and limitations relating to use of the SAFE Network Software.
8
9use crate::upnp::UpnpSupport;
10use crate::{
11    connection_mode::ConnectionMode,
12    mode::{InputMode, Scene},
13    node_stats::NodeStats,
14};
15use ant_service_management::NodeServiceData;
16use serde::{Deserialize, Serialize};
17use std::path::PathBuf;
18use strum::Display;
19
20#[derive(Debug, Clone, PartialEq, Serialize, Display, Deserialize)]
21pub enum Action {
22    StatusActions(StatusActions),
23    OptionsActions(OptionsActions),
24
25    SwitchScene(Scene),
26    SwitchInputMode(InputMode),
27
28    StoreStorageDrive(PathBuf, String),
29    StoreConnectionMode(ConnectionMode),
30    StorePortRange(u32, u32),
31    StoreRewardsAddress(String),
32    StoreNodesToStart(usize),
33
34    SetUpnpSupport(UpnpSupport),
35
36    UpgradeLaunchpadActions(UpgradeLaunchpadActions),
37
38    Tick,
39    Render,
40    Resize(u16, u16),
41    Suspend,
42    Resume,
43    Quit,
44    Refresh,
45    Error(String),
46    Help,
47    Noop,
48}
49
50#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
51pub enum StatusActions {
52    AddNode,
53    StartNodes,
54    StopNodes,
55    RemoveNodes,
56    StartStopNode,
57    StartNodesCompleted {
58        service_name: String,
59        all_nodes_data: Vec<NodeServiceData>,
60        is_nat_status_determined: bool,
61    },
62    StopNodesCompleted {
63        service_name: String,
64        all_nodes_data: Vec<NodeServiceData>,
65        is_nat_status_determined: bool,
66    },
67    ResetNodesCompleted {
68        trigger_start_node: bool,
69        all_nodes_data: Vec<NodeServiceData>,
70        is_nat_status_determined: bool,
71    },
72    RemoveNodesCompleted {
73        service_name: String,
74        all_nodes_data: Vec<NodeServiceData>,
75        is_nat_status_determined: bool,
76    },
77    AddNodesCompleted {
78        service_name: String,
79        all_nodes_data: Vec<NodeServiceData>,
80        is_nat_status_determined: bool,
81    },
82    UpdateNodesCompleted {
83        all_nodes_data: Vec<NodeServiceData>,
84        is_nat_status_determined: bool,
85    },
86    NatDetectionStarted,
87    SuccessfullyDetectedNatStatus,
88    ErrorWhileRunningNatDetection,
89    ErrorLoadingNodeRegistry {
90        raw_error: String,
91    },
92    ErrorGettingNodeRegistryPath {
93        raw_error: String,
94    },
95    ErrorScalingUpNodes {
96        raw_error: String,
97    },
98    ErrorResettingNodes {
99        raw_error: String,
100    },
101    ErrorUpdatingNodes {
102        raw_error: String,
103    },
104    ErrorAddingNodes {
105        raw_error: String,
106    },
107    ErrorStartingNodes {
108        services: Vec<String>,
109        raw_error: String,
110    },
111    ErrorStoppingNodes {
112        services: Vec<String>,
113        raw_error: String,
114    },
115    ErrorRemovingNodes {
116        services: Vec<String>,
117        raw_error: String,
118    },
119    NodesStatsObtained(NodeStats),
120
121    TriggerManageNodes,
122    TriggerRewardsAddress,
123    TriggerNodeLogs,
124    TriggerRemoveNode,
125
126    PreviousTableItem,
127    NextTableItem,
128}
129
130#[derive(Debug, Clone, PartialEq, Eq, Serialize, Display, Deserialize)]
131pub enum OptionsActions {
132    ResetNodes,
133    UpdateNodes,
134
135    TriggerChangeDrive,
136    TriggerChangeConnectionMode,
137    TriggerChangePortRange,
138    TriggerRewardsAddress,
139    TriggerUpdateNodes,
140    TriggerResetNodes,
141    TriggerAccessLogs,
142    UpdateConnectionMode(ConnectionMode),
143    UpdatePortRange(u32, u32),
144    UpdateRewardsAddress(String),
145    UpdateStorageDrive(PathBuf, String),
146}
147
148#[derive(Debug, Clone, PartialEq, Eq, Serialize, Display, Deserialize)]
149pub enum UpgradeLaunchpadActions {
150    UpdateAvailable {
151        current_version: String,
152        latest_version: String,
153    },
154}