Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Preload emoji picker data for reactions on web (#8079)

* Preload emoji picker data for reactions on web

* Sort imports

authored by

Eric Bailey and committed by
GitHub
7c124a87 78220e29

+27
+3
src/components/dms/EmojiReactionPicker.web.tsx
··· 8 8 9 9 import {useSession} from '#/state/session' 10 10 import {type Emoji} from '#/view/com/composer/text-input/web/EmojiPicker.web' 11 + import {useWebPreloadEmoji} from '#/view/com/composer/text-input/web/useWebPreloadEmoji' 11 12 import {atoms as a, flatten, useTheme} from '#/alf' 12 13 import {DotGrid_Stroke2_Corner0_Rounded as DotGridIcon} from '#/components/icons/DotGrid' 13 14 import * as Menu from '#/components/Menu' ··· 49 50 const t = useTheme() 50 51 const {control} = Menu.useMenuContext() 51 52 const {currentAccount} = useSession() 53 + 54 + useWebPreloadEmoji({immediate: true}) 52 55 53 56 const [expanded, setExpanded] = useState(false) 54 57
+24
src/view/com/composer/text-input/web/useWebPreloadEmoji.ts
··· 1 + import React from 'react' 2 + import {init} from 'emoji-mart' 3 + 4 + /** 5 + * Only load the emoji picker data once per page load. 6 + */ 7 + let loadRequested = false 8 + 9 + /** 10 + * Preload the emoji picker data to prevent flash. 11 + * {@link https://github.com/missive/emoji-mart/blob/16978d04a766eec6455e2e8bb21cd8dc0b3c7436/README.md?plain=1#L194} 12 + */ 13 + export function useWebPreloadEmoji({immediate}: {immediate?: boolean} = {}) { 14 + const preload = React.useCallback(async () => { 15 + if (loadRequested) return 16 + loadRequested = true 17 + try { 18 + const data = (await import('./EmojiPickerData.json')).default 19 + init({data}) 20 + } catch (e) {} 21 + }, []) 22 + if (immediate) preload() 23 + return preload 24 + }