revolt_database/events/
rabbit.rs

1use std::collections::HashMap;
2
3use revolt_models::v0::PushNotification;
4use serde::{Deserialize, Serialize};
5
6use crate::User;
7
8#[derive(Serialize, Deserialize)]
9pub struct MessageSentPayload {
10    pub notification: PushNotification,
11    pub users: Vec<String>,
12}
13
14#[derive(Serialize, Deserialize)]
15pub struct MassMessageSentPayload {
16    pub notifications: Vec<PushNotification>,
17    pub server_id: String,
18}
19
20#[derive(Serialize, Deserialize, Clone)]
21pub struct FRAcceptedPayload {
22    pub accepted_user: User,
23    pub user: String,
24}
25
26#[derive(Serialize, Deserialize, Clone)]
27pub struct FRReceivedPayload {
28    pub from_user: User,
29    pub user: String,
30}
31
32#[derive(Serialize, Deserialize, Clone)]
33pub struct GenericPayload {
34    pub title: String,
35    pub body: String,
36    pub icon: Option<String>,
37    pub user: User,
38}
39
40#[derive(Serialize, Deserialize, Clone)]
41pub struct DmCallPayload {
42    pub initiator_id: String,
43    pub channel_id: String,
44    pub started_at: Option<String>,
45    pub ended: bool,
46}
47
48#[derive(Serialize, Deserialize, Clone)]
49pub struct InternalDmCallPayload {
50    pub payload: DmCallPayload,
51    pub recipients: Option<Vec<String>>,
52}
53
54#[derive(Serialize, Deserialize)]
55#[serde(tag = "type", content = "data")]
56#[allow(clippy::large_enum_variant)]
57pub enum PayloadKind {
58    MessageNotification(PushNotification),
59    FRAccepted(FRAcceptedPayload),
60    FRReceived(FRReceivedPayload),
61    BadgeUpdate(usize),
62    Generic(GenericPayload),
63    DmCallStartEnd(DmCallPayload),
64}
65
66#[derive(Serialize, Deserialize)]
67pub struct PayloadToService {
68    pub notification: PayloadKind,
69    pub user_id: String,
70    pub session_id: String,
71    pub token: String,
72    pub extras: HashMap<String, String>,
73}
74
75#[derive(Serialize, Deserialize)]
76pub struct AckPayload {
77    pub user_id: String,
78    pub channel_id: String,
79    pub message_id: String,
80}