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)]
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}