holodeck_simctl_tui/state/
event.rs1use std::path::PathBuf;
2
3use holodeck_core::models::{Appearance, DeviceType, InstalledApp, PrivacyAction, PrivacyPermission, Runtime, Simulator};
4use uuid::Uuid;
5
6use super::app_state::AppState;
7use super::key::Key;
8
9#[derive(Debug, Clone)]
10pub enum AppEvent {
11 Refreshed(Vec<Simulator>),
12 RefreshFailed(String),
13 Key(Key),
14 Resized { rows: i64, cols: i64 },
15 PollTick,
16 OperationCompleted(Uuid),
17 OperationFailed(Uuid, String),
18 RecordingStarted(Uuid, PathBuf),
19 RecordingStopped(Option<PathBuf>),
20 RecordingFailed(String),
21 ScreenshotSaved(PathBuf),
22 ScreenshotFailed(String),
23 AppearanceChanged(Uuid, Appearance),
24 AppearanceFailed(String),
25 TargetsLoaded { device_types: Vec<DeviceType>, runtimes: Vec<Runtime> },
26 TargetsFailed(String),
27 SimulatorCreated(Uuid, String),
28 SimulatorCreateFailed(String),
29 AppsLoaded(Vec<InstalledApp>),
30 AppsLoadFailed(String),
31 PrivacyApplied { bundle_id: String },
32 PrivacyApplyFailed(String),
33 UrlHistoryLoaded(Vec<String>),
34 UrlOpened { url: String, history: Vec<String> },
35 UrlOpenFailed(String),
36}
37
38#[derive(Debug, Clone, PartialEq)]
39pub enum SideEffect {
40 Boot(Uuid),
41 Shutdown(Uuid),
42 Refresh,
43 StartRecording(Uuid),
44 StopRecording,
45 CaptureScreenshot(Uuid),
46 SetAppearance(Uuid, Appearance),
47 EraseSimulator(Uuid),
48 DeleteSimulator(Uuid),
49 LoadTargets,
50 CreateSimulator { name: String, device_type: DeviceType, runtime: Runtime },
51 FocusSimulator(Uuid),
52 LoadInstalledApps(Uuid),
53 ApplyPrivacy { udid: Uuid, action: PrivacyAction, permission: PrivacyPermission, bundle_id: String },
54 LoadUrlHistory,
55 OpenUrl { udid: Uuid, url: String },
56}
57
58#[derive(Debug, Clone, PartialEq)]
59pub struct ReducerOutput {
60 pub state: AppState,
61 pub effects: Vec<SideEffect>,
62}
63
64impl ReducerOutput {
65 pub fn new(state: AppState) -> Self {
66 Self { state, effects: Vec::new() }
67 }
68
69 pub fn with_effects(state: AppState, effects: Vec<SideEffect>) -> Self {
70 Self { state, effects }
71 }
72}