polyphony_types/events/
thread.rs1use serde::{Deserialize, Serialize};
2use crate::entities::{Channel, GuildMember, ThreadMember};
3use crate::events::WebSocketEvent;
4
5#[derive(Debug, Default, Deserialize, Serialize)]
6pub struct ThreadCreate {
9 pub thread: Channel,
10}
11
12impl WebSocketEvent for ThreadCreate {}
13
14#[derive(Debug, Default, Deserialize, Serialize)]
15pub struct ThreadUpdate {
18 pub thread: Channel,
19}
20
21impl WebSocketEvent for ThreadUpdate {}
22
23#[derive(Debug, Default, Deserialize, Serialize)]
24pub struct ThreadDelete {
27 pub thread: Channel,
28}
29
30impl WebSocketEvent for ThreadDelete {}
31
32#[derive(Debug, Default, Deserialize, Serialize)]
33pub struct ThreadListSync {
35 pub guild_id: String,
36 pub channel_ids: Option<Vec<String>>,
37 pub threads: Vec<Channel>,
38 pub members: Vec<ThreadMember>,
39}
40
41impl WebSocketEvent for ThreadListSync {}
42
43#[derive(Debug, Default, Deserialize, Serialize)]
44pub struct ThreadMemberUpdate {
48 pub id: Option<u64>,
49 pub user_id: Option<u64>,
50 pub join_timestamp: Option<String>,
51 pub flags: Option<u64>,
52 pub member: Option<GuildMember>,
53 pub guild_id: String,
54}
55
56impl ThreadMemberUpdate {
57 pub fn to_thread_member(self) -> ThreadMember {
59 ThreadMember {
60 id: self.id,
61 user_id: self.user_id,
62 join_timestamp: self.join_timestamp.clone(),
63 flags: self.flags,
64 member: self.member,
65 }
66 }
67}
68
69impl WebSocketEvent for ThreadMemberUpdate {}
70
71#[derive(Debug, Default, Deserialize, Serialize)]
72pub struct ThreadMembersUpdate {
74 pub id: String,
75 pub guild_id: String,
76 pub member_count: u8,
78 pub added_members: Option<Vec<ThreadMember>>,
79 pub removed_members: Option<Vec<String>>,
80}
81
82impl WebSocketEvent for ThreadMembersUpdate {}