tauri_plugin_matrix_svelte/models/
matrix.rs

1use serde::{Deserialize, Serialize};
2
3// Listen to events
4#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
5pub enum MatrixSvelteListenEvent {
6    RoomsCollectionStarted,
7    RoomCreated,
8    VerificationResult,
9    MatrixUpdateCurrentActiveRoom,
10}
11
12impl MatrixSvelteListenEvent {
13    pub fn as_str(&self) -> &'static str {
14        match self {
15            MatrixSvelteListenEvent::RoomsCollectionStarted => {
16                "matrix-svelte://rooms-collection-started"
17            }
18            MatrixSvelteListenEvent::RoomCreated => "matrix-svelte://room-created",
19            MatrixSvelteListenEvent::VerificationResult => "matrix-svelte://verification-result",
20            MatrixSvelteListenEvent::MatrixUpdateCurrentActiveRoom => {
21                "matrix-svelte://update-current-active-room"
22            }
23        }
24    }
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(rename_all = "camelCase")]
29pub struct MatrixVerificationResponse {
30    pub confirmed: bool,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct MatrixRoomStoreCreatedRequest {
36    pub id: String,
37    pub message: String,
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct MatrixUpdateCurrentActiveRoom {
43    // if the frontend sends null then it will be None
44    pub room_id: Option<String>,
45    pub room_name: Option<String>,
46}
47
48// Emit events
49
50#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
51pub enum MatrixSvelteEmitEvent {
52    RoomCreate,
53    VerificationStart,
54    MessageText,
55}
56
57impl MatrixSvelteEmitEvent {
58    pub fn as_str(&self) -> &'static str {
59        match self {
60            MatrixSvelteEmitEvent::RoomCreate => "matrix-svelte://room-create",
61            MatrixSvelteEmitEvent::VerificationStart => "matrix-svelte://verification-start",
62            MatrixSvelteEmitEvent::MessageText => "matrix-svelte://message-text",
63        }
64    }
65}
66
67#[derive(Debug, Clone, Serialize)]
68#[serde(rename_all = "camelCase")]
69pub struct MatrixMessage {
70    sender: String,
71    body: String,
72}
73
74impl MatrixMessage {
75    pub fn new(sender: String, body: String) -> Self {
76        Self { sender, body }
77    }
78}
79
80#[derive(Debug, Clone, Serialize)]
81#[serde(rename_all = "camelCase")]
82pub struct MatrixVerificationEmojis {
83    emojis: String,
84}
85
86impl MatrixVerificationEmojis {
87    pub fn new(emojis: String) -> Self {
88        Self { emojis }
89    }
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
93#[serde(rename_all = "camelCase")]
94pub struct MatrixRoomStoreCreateRequest {
95    id: String,
96}
97
98impl MatrixRoomStoreCreateRequest {
99    pub fn new(id: String) -> Self {
100        Self { id }
101    }
102}