mirror of
https://github.com/hanzo-io/chat.git
synced 2026-10-30 18:57:58 +00:00
* feat: add emoji-picker * feat: add custom emoji icon * remove: delete utils file * fix: side-effect in QuickReactions * feat: add new category icons * remove: CATEGORIES import * fix: Replace useEffect with useMemo for JSON data processing * remove: console from MessageReactions
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { View } from "react-native";
|
|
import Picker, { CustomEmoji, Emoji } from "./Picker";
|
|
import { useFrappeGetCall } from "frappe-react-sdk";
|
|
import { RavenCustomEmoji } from "@raven/types/RavenMessaging/RavenCustomEmoji";
|
|
import { useMemo } from "react";
|
|
interface EmojiPickerProps {
|
|
onReact: (emoji: Emoji) => void;
|
|
allowCustomEmojis?: boolean;
|
|
}
|
|
|
|
const EmojiPicker = ({ onReact, allowCustomEmojis = true }: EmojiPickerProps) => {
|
|
|
|
const { data, mutate, error, isLoading } = useFrappeGetCall<{ message: RavenCustomEmoji[] }>(
|
|
"frappe.client.get_list", {
|
|
doctype: "Raven Custom Emoji",
|
|
fields: ["name", "image", "keywords"],
|
|
limit: 1000,
|
|
}, allowCustomEmojis ? 'custom-emojis' : null, {
|
|
revalidateOnFocus: false,
|
|
revalidateIfStale: false,
|
|
revalidateOnReconnect: false
|
|
});
|
|
|
|
const customEmojis = useMemo(() => {
|
|
if (!allowCustomEmojis || !data) {
|
|
return [];
|
|
}
|
|
|
|
return [{
|
|
id: "Custom",
|
|
name: "Custom",
|
|
emojis: data.message.map((emoji) => ({
|
|
id: emoji.name,
|
|
name: emoji.name,
|
|
keywords: emoji.keywords?.split(",") || [],
|
|
skins: [{ src: emoji.image }],
|
|
})),
|
|
}];
|
|
}, [data, allowCustomEmojis]);
|
|
|
|
return (
|
|
<View className="flex-1 px-3">
|
|
<Picker
|
|
customEmojis={customEmojis as CustomEmoji[]}
|
|
onSelect={onReact}
|
|
perLine={9}
|
|
/>
|
|
</View>
|
|
);
|
|
};
|
|
|
|
export default EmojiPicker; |