Skip to content

Commit 8265f2d

Browse files
wip: handle reaction click
1 parent 4ce6ef0 commit 8265f2d

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/chat/src/reaction.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::fmt::Debug;
1+
use std::fmt::{Debug, Formatter};
22
use gpui::{IntoElement, Rgba};
33

44
pub type ReactionEvent = (String, ReactionOperation);
@@ -9,12 +9,21 @@ pub enum MessageReactionType {
99
Burst,
1010
}
1111

12-
#[derive(Clone, Debug, PartialEq)]
12+
#[derive(Clone, PartialEq)]
1313
pub enum ReactionEmoji {
1414
Simple(String),
1515
Custom { url: String, animated: bool, name: Option<String> },
1616
}
1717

18+
impl Debug for ReactionEmoji {
19+
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
20+
match self {
21+
ReactionEmoji::Simple(s) => write!(f, "{}", s),
22+
ReactionEmoji::Custom { name, .. } => write!(f, ":{}:", name.clone().unwrap_or("<unknown>".to_string())),
23+
}
24+
}
25+
}
26+
1827
pub trait MessageReaction: IntoElement {
1928
fn get_count(&self, kind: Option<MessageReactionType>) -> u64;
2029
fn get_self_reaction(&self) -> Option<MessageReactionType>;

src/discord/src/message/reaction.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use components::theme::ActiveTheme;
2-
use gpui::{div, img, px, AnyElement, IntoElement, ParentElement, RenderOnce, Rgba, Styled, WindowContext};
2+
use gpui::{div, img, px, AnyElement, InteractiveElement, IntoElement, ParentElement, RenderOnce, Rgba, StatefulInteractiveElement, Styled, WindowContext};
33
use gpui::prelude::FluentBuilder;
44
use scope_chat::reaction::MessageReactionType::Normal;
55
use scope_chat::reaction::{MessageReaction, MessageReactionType, ReactionEmoji};
@@ -152,6 +152,7 @@ impl DiscordMessageReaction {
152152
impl RenderOnce for DiscordMessageReaction {
153153
fn render(self, cx: &mut WindowContext) -> impl IntoElement {
154154
let emoji = self.get_emoji();
155+
let async_emoji = emoji.clone();
155156
let theme = cx.theme();
156157
div()
157158
.px_1()
@@ -162,6 +163,10 @@ impl RenderOnce for DiscordMessageReaction {
162163
.bg(theme.panel)
163164
.rounded_md()
164165
.flex()
166+
.id("reaction")
167+
.on_click(move |_, _| {
168+
eprintln!("Reaction {:?} clicked", async_emoji);
169+
})
165170
.justify_center()
166171
.items_center()
167172
.gap_1()

0 commit comments

Comments
 (0)