revolt_database/events/
rabbit.rs1use 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}