1use crate::state::{OutgoingAttachment, Screen};
2
3#[derive(uniffi::Enum, Clone, Debug)]
4pub enum AppAction {
5 CreateAccount {
6 name: String,
7 },
8 UpdateProfileMetadata {
9 name: String,
10 picture_url: Option<String>,
11 },
12 RestoreSession {
13 owner_nsec: String,
14 },
15 RestoreAccountBundle {
16 owner_nsec: Option<String>,
17 owner_pubkey_hex: String,
18 device_nsec: String,
19 },
20 StartLinkedDevice {
21 owner_input: String,
22 },
23 AppForegrounded,
24 Logout,
25 CreateChat {
26 peer_input: String,
27 },
28 CreateGroup {
29 name: String,
30 member_inputs: Vec<String>,
31 },
32 CreateGroupWithPicture {
33 name: String,
34 member_inputs: Vec<String>,
35 picture_file_path: String,
36 picture_filename: String,
37 },
38 CreatePublicInvite,
39 AcceptInvite {
40 invite_input: String,
41 },
42 OpenChat {
43 chat_id: String,
44 },
45 SendMessage {
46 chat_id: String,
47 text: String,
48 },
49 SendDisappearingMessage {
50 chat_id: String,
51 text: String,
52 expires_at_secs: u64,
53 },
54 SetChatMessageTtl {
55 chat_id: String,
56 ttl_seconds: Option<u64>,
57 },
58 SetChatMuted {
59 chat_id: String,
60 muted: bool,
61 },
62 SendAttachment {
63 chat_id: String,
64 file_path: String,
65 filename: String,
66 caption: String,
67 },
68 SendAttachments {
69 chat_id: String,
70 attachments: Vec<OutgoingAttachment>,
71 caption: String,
72 },
73 ToggleReaction {
74 chat_id: String,
75 message_id: String,
76 emoji: String,
77 },
78 SendTyping {
79 chat_id: String,
80 },
81 StopTyping {
82 chat_id: String,
83 },
84 SetTypingIndicatorsEnabled {
85 enabled: bool,
86 },
87 SetReadReceiptsEnabled {
88 enabled: bool,
89 },
90 SetDesktopNotificationsEnabled {
91 enabled: bool,
92 },
93 SetInviteAcceptanceNotificationsEnabled {
94 enabled: bool,
95 },
96 SetStartupAtLoginEnabled {
97 enabled: bool,
98 },
99 SetNearbyBluetoothEnabled {
100 enabled: bool,
101 },
102 SetNearbyLanEnabled {
103 enabled: bool,
104 },
105 AddNostrRelay {
106 relay_url: String,
107 },
108 UpdateNostrRelay {
109 old_relay_url: String,
110 new_relay_url: String,
111 },
112 RemoveNostrRelay {
113 relay_url: String,
114 },
115 SetNostrRelays {
116 relay_urls: Vec<String>,
117 },
118 ResetNostrRelays,
119 SetImageProxyEnabled {
120 enabled: bool,
121 },
122 SetImageProxyUrl {
123 url: String,
124 },
125 SetImageProxyKeyHex {
126 key_hex: String,
127 },
128 SetImageProxySaltHex {
129 salt_hex: String,
130 },
131 ResetImageProxySettings,
132 SetMobilePushServerUrl {
133 url: String,
134 },
135 ResetMobilePushServerUrl,
136 IngestMobilePushPayload {
137 payload_json: String,
138 },
139 MarkMessagesSeen {
140 chat_id: String,
141 message_ids: Vec<String>,
142 },
143 SendReceipt {
144 chat_id: String,
145 receipt_type: String,
146 message_ids: Vec<String>,
147 },
148 DeleteLocalMessage {
149 chat_id: String,
150 message_id: String,
151 },
152 DeleteChat {
153 chat_id: String,
154 },
155 UpdateGroupName {
156 group_id: String,
157 name: String,
158 },
159 UpdateGroupPicture {
160 group_id: String,
161 file_path: String,
162 filename: String,
163 },
164 AddGroupMembers {
165 group_id: String,
166 member_inputs: Vec<String>,
167 },
168 SetGroupAdmin {
169 group_id: String,
170 owner_pubkey_hex: String,
171 is_admin: bool,
172 },
173 RemoveGroupMember {
174 group_id: String,
175 owner_pubkey_hex: String,
176 },
177 UploadProfilePicture {
178 file_path: String,
179 },
180 AddAuthorizedDevice {
181 device_input: String,
182 },
183 RemoveAuthorizedDevice {
184 device_pubkey_hex: String,
185 },
186 AcknowledgeRevokedDevice,
187 PushScreen {
188 screen: Screen,
189 },
190 UpdateScreenStack {
191 stack: Vec<Screen>,
192 },
193}