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 serde::{Deserialize, Serialize};
16use std::path::PathBuf;
17use strum::Display;
18
19#[derive(Debug, Clone, PartialEq, Eq, Serialize, Display, Deserialize)]
20pub enum Action {
21    StatusActions(StatusActions),
22    OptionsActions(OptionsActions),
23
24    SwitchScene(Scene),
25    SwitchInputMode(InputMode),
26
27    StoreStorageDrive(PathBuf, String),
28    StoreConnectionMode(ConnectionMode),
29    StorePortRange(u32, u32),
30    StoreRewardsAddress(String),
31    StoreNodesToStart(usize),
32
33    SetUpnpSupport(UpnpSupport),
34
35    Tick,
36    Render,
37    Resize(u16, u16),
38    Suspend,
39    Resume,
40    Quit,
41    Refresh,
42    Error(String),
43    Help,
44    Noop,
45}
46
47#[derive(Debug, Clone, PartialEq, Eq, Serialize, Display, Deserialize)]
48pub enum StatusActions {
49    AddNode,
50    StartNodes,
51    StopNodes,
52    RemoveNodes,
53    StartStopNode,
54    StartNodesCompleted {
55        service_name: String,
56    },
57    StopNodesCompleted {
58        service_name: String,
59    },
60    ResetNodesCompleted {
61        trigger_start_node: bool,
62    },
63    RemoveNodesCompleted {
64        service_name: String,
65    },
66    AddNodesCompleted {
67        service_name: String,
68    },
69    UpdateNodesCompleted,
70    SuccessfullyDetectedNatStatus,
71    ErrorWhileRunningNatDetection,
72    ErrorLoadingNodeRegistry {
73        raw_error: String,
74    },
75    ErrorGettingNodeRegistryPath {
76        raw_error: String,
77    },
78    ErrorScalingUpNodes {
79        raw_error: String,
80    },
81    ErrorResettingNodes {
82        raw_error: String,
83    },
84    ErrorUpdatingNodes {
85        raw_error: String,
86    },
87    ErrorAddingNodes {
88        raw_error: String,
89    },
90    ErrorStartingNodes {
91        services: Vec<String>,
92        raw_error: String,
93    },
94    ErrorStoppingNodes {
95        services: Vec<String>,
96        raw_error: String,
97    },
98    ErrorRemovingNodes {
99        services: Vec<String>,
100        raw_error: String,
101    },
102    NodesStatsObtained(NodeStats),
103
104    TriggerManageNodes,
105    TriggerRewardsAddress,
106    TriggerNodeLogs,
107    TriggerRemoveNode,
108
109    PreviousTableItem,
110    NextTableItem,
111}
112
113#[derive(Debug, Clone, PartialEq, Eq, Serialize, Display, Deserialize)]
114pub enum OptionsActions {
115    ResetNodes,
116    UpdateNodes,
117
118    TriggerChangeDrive,
119    TriggerChangeConnectionMode,
120    TriggerChangePortRange,
121    TriggerRewardsAddress,
122    TriggerUpdateNodes,
123    TriggerResetNodes,
124    TriggerAccessLogs,
125    UpdateConnectionMode(ConnectionMode),
126    UpdatePortRange(u32, u32),
127    UpdateRewardsAddress(String),
128    UpdateStorageDrive(PathBuf, String),
129}