Skip to content

Commit 113d9c6

Browse files
fix: show reactions again
1 parent 97f0cae commit 113d9c6

File tree

3 files changed

+31
-17
lines changed

3 files changed

+31
-17
lines changed

src/discord/src/channel/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ impl Channel for DiscordChannel {
7575
content,
7676
sent_time: Utc::now(),
7777
list_item_id: Snowflake::random(),
78+
reactions: Default::default(),
7879
},
7980
content: OnceLock::new(),
80-
reactions: Default::default(),
8181
}
8282
}
8383

src/discord/src/message/content.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,37 @@
1+
use crate::message::reaction_list::DiscordReactionList;
12
use gpui::{div, IntoElement, ParentElement, Render, Styled, ViewContext};
23
use serenity::all::Message;
34

45
#[derive(Clone, Debug)]
56
pub struct DiscordMessageContent {
67
pub content: String,
78
pub is_pending: bool,
9+
pub reactions: DiscordReactionList,
810
}
911

1012
impl DiscordMessageContent {
1113
pub fn pending(content: String) -> DiscordMessageContent {
12-
DiscordMessageContent { content, is_pending: true }
14+
DiscordMessageContent {
15+
content,
16+
is_pending: true,
17+
reactions: Default::default(),
18+
}
1319
}
1420

15-
pub fn received(message: &Message) -> DiscordMessageContent {
21+
pub fn received(message: &Message, reactions: &DiscordReactionList) -> DiscordMessageContent {
1622
DiscordMessageContent {
1723
content: message.content.clone(),
1824
is_pending: false,
25+
reactions: reactions.clone(),
1926
}
2027
}
2128
}
2229

2330
impl Render for DiscordMessageContent {
2431
fn render(&mut self, _: &mut ViewContext<DiscordMessageContent>) -> impl IntoElement {
25-
div().opacity(if self.is_pending { 0.25 } else { 1.0 }).child(self.content.clone())
32+
div()
33+
.opacity(if self.is_pending { 0.25 } else { 1.0 })
34+
.child(self.content.clone())
35+
.child(self.reactions.clone())
2636
}
2737
}

src/discord/src/message/mod.rs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@ pub enum DiscordMessageData {
2323
content: String,
2424
sent_time: DateTime<Utc>,
2525
list_item_id: Snowflake,
26+
reactions: DiscordReactionList
2627
},
27-
Received(Arc<serenity::model::channel::Message>, Option<Arc<serenity::model::guild::Member>>),
28+
Received(Arc<serenity::model::channel::Message>, Option<Arc<serenity::model::guild::Member>>, DiscordReactionList),
2829
}
2930

3031
#[derive(Clone)]
@@ -33,7 +34,6 @@ pub struct DiscordMessage {
3334
pub channel: Arc<serenity::model::channel::Channel>,
3435
pub data: DiscordMessageData,
3536
pub content: OnceLock<View<DiscordMessageContent>>,
36-
pub reactions: DiscordReactionList,
3737
}
3838

3939
impl DiscordMessage {
@@ -46,11 +46,12 @@ impl DiscordMessage {
4646
}
4747
.unwrap();
4848

49+
let reactions = (&msg.reactions).into();
50+
4951
Self {
5052
client,
5153
channel,
52-
reactions: (&msg.reactions).into(),
53-
data: DiscordMessageData::Received(msg, member),
54+
data: DiscordMessageData::Received(msg, member, reactions),
5455
content: OnceLock::new(),
5556
}
5657
}
@@ -61,11 +62,11 @@ impl DiscordMessage {
6162
channel: Arc<serenity::model::channel::Channel>,
6263
member: Option<Arc<serenity::model::guild::Member>>,
6364
) -> Self {
65+
let reactions = (&msg.reactions).into();
6466
Self {
6567
client,
6668
channel,
67-
reactions: (&msg.reactions).into(),
68-
data: DiscordMessageData::Received(msg, member),
69+
data: DiscordMessageData::Received(msg, member, reactions),
6970
content: OnceLock::new(),
7071
}
7172
}
@@ -118,7 +119,7 @@ impl Message for DiscordMessage {
118119
},
119120
},
120121

121-
DiscordMessageData::Received(message, member) => DiscordMessageAuthor {
122+
DiscordMessageData::Received(message, member, ..) => DiscordMessageAuthor {
122123
client: self.client.clone(),
123124
data: match member {
124125
None => author::DiscordMessageAuthorData::NonMemberAuthor(message.clone()),
@@ -135,7 +136,7 @@ impl Message for DiscordMessage {
135136
.get_or_init(|| {
136137
let content = match &self.data {
137138
DiscordMessageData::Pending { content, .. } => DiscordMessageContent::pending(content.clone()),
138-
DiscordMessageData::Received(message, _) => DiscordMessageContent::received(message),
139+
DiscordMessageData::Received(message, _, reactions) => DiscordMessageContent::received(message, reactions),
139140
};
140141

141142
cx.new_view(|_cx| content)
@@ -145,15 +146,15 @@ impl Message for DiscordMessage {
145146

146147
fn get_identifier(&self) -> Option<Snowflake> {
147148
match &self.data {
148-
DiscordMessageData::Received(message, _) => Some(message.id.into()),
149+
DiscordMessageData::Received(message, ..) => Some(message.id.into()),
149150
DiscordMessageData::Pending { .. } => None,
150151
}
151152
}
152153

153154
fn get_nonce(&self) -> impl PartialEq {
154155
match &self.data {
155156
DiscordMessageData::Pending { nonce, .. } => NonceState::Fixed(nonce),
156-
DiscordMessageData::Received(message, _) => NonceState::Discord(&message.nonce),
157+
DiscordMessageData::Received(message, ..) => NonceState::Discord(&message.nonce),
157158
}
158159
}
159160

@@ -169,12 +170,15 @@ impl Message for DiscordMessage {
169170
fn get_timestamp(&self) -> Option<DateTime<Utc>> {
170171
match &self.data {
171172
DiscordMessageData::Pending { sent_time, .. } => Some(*sent_time),
172-
DiscordMessageData::Received(message, _) => DateTime::from_timestamp_millis(message.timestamp.timestamp_millis()),
173+
DiscordMessageData::Received(message, ..) => DateTime::from_timestamp_millis(message.timestamp.timestamp_millis()),
173174
}
174175
}
175176

176177
fn get_reactions(&mut self) -> &mut impl ReactionList {
177-
&mut self.reactions
178+
match &mut self.data {
179+
DiscordMessageData::Pending { reactions, .. } => reactions,
180+
DiscordMessageData::Received(_, _, reactions) => reactions,
181+
}
178182
}
179183
}
180184

@@ -184,7 +188,7 @@ impl AsyncListItem for DiscordMessage {
184188
fn get_list_identifier(&self) -> Self::Identifier {
185189
match &self.data {
186190
DiscordMessageData::Pending { list_item_id, .. } => *list_item_id,
187-
DiscordMessageData::Received(message, _) => message.id.into(),
191+
DiscordMessageData::Received(message, ..) => message.id.into(),
188192
}
189193
}
190194
}

0 commit comments

Comments
 (0)