changes how emoji data is loaded inside Storybook
Some checks failed
Chromatic / Run Chromatic (push) Has been cancelled

This commit is contained in:
ChaosExAnima 2025-11-13 16:56:12 +01:00
parent 547716fcaa
commit df1f2e8706
No known key found for this signature in database
GPG Key ID: 8F2B333100FB6117

View File

@ -2,12 +2,12 @@ import type { FC } from 'react';
import { useState } from 'react';
import type { Meta, StoryObj } from '@storybook/react-vite';
import type { CompactEmoji } from 'emojibase';
import { flattenEmojiData } from 'emojibase';
import { action } from 'storybook/actions';
import {
importCustomEmojiData,
importEmojiData,
} from '@/mastodon/features/emoji/loader';
import { putEmojiData } from '@/mastodon/features/emoji/database';
import { toSupportedLocale } from '@/mastodon/features/emoji/locale';
import { MockEmojiPicker } from './index';
@ -17,18 +17,19 @@ const meta = {
title: 'Components/Emoji/EmojiPicker',
render(_args, { globals }) {
const locale = typeof globals.locale === 'string' ? globals.locale : 'en';
return <StoryComponent locale={locale} />;
return <StoryComponent locale={locale} key={locale} />;
},
} satisfies Meta;
const StoryComponent: FC<{ locale: string }> = ({ locale }) => {
const [loaded, setLoaded] = useState(false);
void Promise.all([importCustomEmojiData(), importEmojiData(locale)]).then(
() => {
if (!loaded) {
void loadEmojiData(locale).then(() => {
action('emoji data loaded')(locale);
setLoaded(true);
},
);
});
}
if (!loaded) {
return null;
@ -36,6 +37,15 @@ const StoryComponent: FC<{ locale: string }> = ({ locale }) => {
return <MockEmojiPicker onSelect={onSelect} />;
};
async function loadEmojiData(localeString: string) {
const locale = toSupportedLocale(localeString);
const emojis = (await import(
`../../../../../../node_modules/emojibase-data/${locale}/compact.json`
)) as { default: CompactEmoji[] };
const flattenedEmojis = flattenEmojiData(emojis.default);
await putEmojiData(flattenedEmojis, locale);
}
export default meta;
type Story = StoryObj<typeof meta>;