mirror of
https://github.com/mastodon/mastodon.git
synced 2025-11-27 10:00:50 +00:00
changes how emoji data is loaded inside Storybook
Some checks failed
Chromatic / Run Chromatic (push) Has been cancelled
Some checks failed
Chromatic / Run Chromatic (push) Has been cancelled
This commit is contained in:
parent
547716fcaa
commit
df1f2e8706
|
|
@ -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>;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user