use crate::{
connection_mode::ConnectionMode,
mode::{InputMode, Scene},
node_stats::NodeStats,
};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use strum::Display;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Display, Deserialize)]
pub enum Action {
StatusActions(StatusActions),
OptionsActions(OptionsActions),
SwitchScene(Scene),
SwitchInputMode(InputMode),
StoreStorageDrive(PathBuf, String),
StoreConnectionMode(ConnectionMode),
StorePortRange(u32, u32),
StoreDiscordUserName(String),
StoreNodesToStart(usize),
Tick,
Render,
Resize(u16, u16),
Suspend,
Resume,
Quit,
Refresh,
Error(String),
Help,
Noop,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Display, Deserialize)]
pub enum StatusActions {
StartNodes,
StopNodes,
StartNodesCompleted,
StopNodesCompleted,
ResetNodesCompleted { trigger_start_node: bool },
SuccessfullyDetectedNatStatus,
ErrorWhileRunningNatDetection,
ErrorLoadingNodeRegistry { raw_error: String },
ErrorGettingNodeRegistryPath { raw_error: String },
ErrorScalingUpNodes { raw_error: String },
ErrorStoppingNodes { raw_error: String },
ErrorResettingNodes { raw_error: String },
NodesStatsObtained(NodeStats),
TriggerManageNodes,
PreviousTableItem,
NextTableItem,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Display, Deserialize)]
pub enum OptionsActions {
ResetNodes,
TriggerChangeDrive,
TriggerChangeConnectionMode,
TriggerChangePortRange,
TriggerBetaProgramme,
TriggerResetNodes,
TriggerAccessLogs,
UpdateConnectionMode(ConnectionMode),
UpdatePortRange(u32, u32),
UpdateBetaProgrammeUsername(String),
UpdateStorageDrive(PathBuf, String),
}