Skip to main content

iris_chat_core/
actions.rs

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}