|
@@ -546,7 +546,7 @@ const ChatScreen = ({ route }: { route: any }) => {
|
|
|
}}
|
|
|
>
|
|
|
{hasReactions && (
|
|
|
- <View
|
|
|
+ <TouchableOpacity
|
|
|
style={[
|
|
|
{
|
|
|
flexDirection: 'row',
|
|
@@ -560,42 +560,42 @@ const ChatScreen = ({ route }: { route: any }) => {
|
|
|
gap: 6
|
|
|
}
|
|
|
]}
|
|
|
+ onPress={() =>
|
|
|
+ Array.isArray(time.currentMessage.reactions) &&
|
|
|
+ openReactionList(
|
|
|
+ time.currentMessage.reactions.map((reaction) => ({
|
|
|
+ ...reaction,
|
|
|
+ name: reaction.uid === id ? name : 'Me'
|
|
|
+ })),
|
|
|
+ time.currentMessage._id
|
|
|
+ )
|
|
|
+ }
|
|
|
>
|
|
|
{Object.entries(
|
|
|
(Array.isArray(time.currentMessage.reactions)
|
|
|
? time.currentMessage.reactions
|
|
|
: []
|
|
|
).reduce(
|
|
|
- (
|
|
|
- acc: Record<
|
|
|
- string,
|
|
|
- { count: number; users: { uid: number; name: string; reaction: string }[] }
|
|
|
- >,
|
|
|
- { reaction, uid }: { reaction: string; uid: number }
|
|
|
- ) => {
|
|
|
+ (acc: Record<string, { count: number }>, { reaction }: { reaction: string }) => {
|
|
|
if (!acc[reaction]) {
|
|
|
- acc[reaction] = { count: 0, users: [] };
|
|
|
+ acc[reaction] = { count: 0 };
|
|
|
}
|
|
|
acc[reaction].count += 1;
|
|
|
- acc[reaction].users.push({ uid, name: uid === id ? name : 'Me', reaction });
|
|
|
return acc;
|
|
|
},
|
|
|
{}
|
|
|
)
|
|
|
- ).map(([emoji, { count, users }]: any) => {
|
|
|
+ ).map(([emoji, { count }]: any) => {
|
|
|
return (
|
|
|
- <TouchableOpacity
|
|
|
- key={emoji}
|
|
|
- onPress={() => openReactionList(users, time.currentMessage._id)}
|
|
|
- >
|
|
|
+ <View key={emoji}>
|
|
|
<Text style={{}}>
|
|
|
{emoji}
|
|
|
{(count as number) > 1 ? ` ${count}` : ''}
|
|
|
</Text>
|
|
|
- </TouchableOpacity>
|
|
|
+ </View>
|
|
|
);
|
|
|
})}
|
|
|
- </View>
|
|
|
+ </TouchableOpacity>
|
|
|
)}
|
|
|
<View
|
|
|
style={{
|