gui_server_api/msg/
navigation.rs1use server::rkyv_with::WithAppId;
5use xous::AppId;
6
7use crate::{error::NavigationError, ModalStyle};
8
9#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
10#[response(NavigationResult)]
11pub struct ShowModal {
12 pub modal_style: ModalStyle,
13 #[rkyv(with = WithAppId)]
14 pub app_id: AppId,
15 pub args: Vec<u8>,
16}
17
18#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
19#[response(NavigationResult)]
20pub struct NavigateTo {
21 #[rkyv(with = WithAppId)]
22 pub app_id: AppId,
23 pub args: Vec<u8>,
24}
25
26#[derive(Debug, Clone, PartialEq, Eq, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
30pub enum LaunchFailureReason {
31 SignatureRejected,
33 NoTrustedPublisherCertificate,
35 MissingPermission,
37 Internal,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
42pub enum RunAppResponse {
43 Launched { pid: usize },
44 AlreadyRunning { pid: usize },
45 Locked,
46 NotReady,
47 AppIdNotFound,
48 LaunchFailed { reason: LaunchFailureReason },
49}
50
51#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
52#[response(RunAppResponse)]
53pub struct RunApp {
54 #[rkyv(with = WithAppId)]
55 pub app_id: AppId,
56}
57
58#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
59#[response(())]
60pub struct FinishResponse {
61 pub response: Vec<u8>,
62}
63
64impl FinishResponse {
65 pub fn as_slice(&self) -> &[u8] { &self.response }
66}
67
68pub type NavigationResult = Result<FinishResponse, NavigationError>;
69
70#[derive(Debug, server::Message)]
71pub struct NavigationCancel;
72
73#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
74#[response(Option<Vec<u8>>)]
75pub struct GetPendingNavRequest;
76
77#[derive(Debug, Copy, Clone, server::Message)]
78pub struct LoginSuccess;