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)]
41#[serde(tag = "type", content = "data")]
42#[allow(clippy::large_enum_variant)]
43pub enum PayloadKind {
44    MessageNotification(PushNotification),
45    FRAccepted(FRAcceptedPayload),
46    FRReceived(FRReceivedPayload),
47    BadgeUpdate(usize),
48    Generic(GenericPayload),
49}
50
51#[derive(Serialize, Deserialize)]
52pub struct PayloadToService {
53    pub notification: PayloadKind,
54    pub user_id: String,
55    pub session_id: String,
56    pub token: String,
57    pub extras: HashMap<String, String>,
58}
59
60#[derive(Serialize, Deserialize)]
61pub struct AckPayload {
62    pub user_id: String,
63    pub channel_id: String,
64    pub message_id: String,
65}