1
- use gpui:: Rgba ;
1
+ use components:: theme:: ActiveTheme ;
2
+ use gpui:: { div, img, px, AnyElement , IntoElement , ParentElement , RenderOnce , Rgba , Styled , WindowContext } ;
3
+ use gpui:: prelude:: FluentBuilder ;
4
+ use scope_chat:: reaction:: MessageReactionType :: Normal ;
2
5
use scope_chat:: reaction:: { MessageReaction , MessageReactionType , ReactionEmoji } ;
3
6
use serenity:: all:: ReactionType ;
4
7
use MessageReactionType :: Burst ;
5
- use scope_chat:: reaction:: MessageReactionType :: Normal ;
6
8
7
9
#[ derive( Clone , Debug ) ]
8
10
pub enum ReactionData {
@@ -32,7 +34,7 @@ impl ReactionData {
32
34
}
33
35
}
34
36
35
- #[ derive( Clone , Debug ) ]
37
+ #[ derive( Clone , Debug , IntoElement ) ]
36
38
pub struct DiscordMessageReaction {
37
39
pub data : ReactionData ,
38
40
}
@@ -84,7 +86,7 @@ impl MessageReaction for DiscordMessageReaction {
84
86
None
85
87
}
86
88
}
87
- ReactionData :: Local { me, .. } => me . clone ( ) ,
89
+ ReactionData :: Local { me, .. } => * me ,
88
90
}
89
91
}
90
92
@@ -138,6 +140,30 @@ impl MessageReaction for DiscordMessageReaction {
138
140
}
139
141
}
140
142
143
+ impl DiscordMessageReaction {
144
+ fn render_emoji ( emoji : & ReactionEmoji ) -> AnyElement {
145
+ match emoji {
146
+ ReactionEmoji :: Simple ( character) => div ( ) . text_size ( px ( 12f32 ) ) . child ( character. clone ( ) ) . into_any_element ( ) ,
147
+ ReactionEmoji :: Custom { url, .. } => img ( url. clone ( ) ) . w ( px ( 16f32 ) ) . h ( px ( 16f32 ) ) . into_any_element ( ) ,
148
+ }
149
+ }
150
+ }
151
+
152
+ impl RenderOnce for DiscordMessageReaction {
153
+ fn render ( self , cx : & mut WindowContext ) -> impl IntoElement {
154
+ let emoji = self . get_emoji ( ) ;
155
+ let theme = cx. theme ( ) ;
156
+ div ( )
157
+ . p_1 ( )
158
+ . border_1 ( )
159
+ . border_color ( theme. border )
160
+ . when ( self . get_self_reaction ( ) . is_some ( ) , |s| s. border_color ( theme. accent ) )
161
+ . bg ( theme. panel )
162
+ . rounded_md ( )
163
+ . child ( Self :: render_emoji ( & emoji) )
164
+ }
165
+ }
166
+
141
167
pub fn discord_reaction_to_emoji ( reaction : & serenity:: all:: ReactionType ) -> ReactionEmoji {
142
168
match reaction {
143
169
ReactionType :: Custom { animated, id, name } => ReactionEmoji :: Custom {
@@ -151,4 +177,4 @@ pub fn discord_reaction_to_emoji(reaction: &serenity::all::ReactionType) -> Reac
151
177
ReactionEmoji :: Simple ( "❓" . to_string ( ) )
152
178
}
153
179
}
154
- }
180
+ }
0 commit comments