Fallback to emoji-datasource for unlocalized emoji
Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
This commit is contained in:
parent
0607f01540
commit
48b78e7e35
3 changed files with 34 additions and 6 deletions
|
@ -130,9 +130,10 @@ function useFunEmojiSearchIndex(
|
|||
localeEmojiList: LocaleEmojiListType | null
|
||||
): FunEmojiSearchIndex {
|
||||
const funEmojiSearchIndex = useMemo(() => {
|
||||
const defaultSearchIndex = getEmojiDefaultEnglishSearchIndex();
|
||||
return localeEmojiList != null
|
||||
? createFunEmojiSearchIndex(localeEmojiList)
|
||||
: getEmojiDefaultEnglishSearchIndex();
|
||||
? createFunEmojiSearchIndex(localeEmojiList, defaultSearchIndex)
|
||||
: defaultSearchIndex;
|
||||
}, [localeEmojiList]);
|
||||
return funEmojiSearchIndex;
|
||||
}
|
||||
|
@ -141,9 +142,10 @@ function useFunEmojiLocalizerIndex(
|
|||
localeEmojiList: LocaleEmojiListType | null
|
||||
): FunEmojiLocalizerIndex {
|
||||
const funEmojiLocalizerIndex = useMemo(() => {
|
||||
const defaultSearchIndex = getEmojiDefaultEnglishLocalizerIndex();
|
||||
return localeEmojiList != null
|
||||
? createFunEmojiLocalizerIndex(localeEmojiList)
|
||||
: getEmojiDefaultEnglishLocalizerIndex();
|
||||
? createFunEmojiLocalizerIndex(localeEmojiList, defaultSearchIndex)
|
||||
: defaultSearchIndex;
|
||||
}, [localeEmojiList]);
|
||||
return funEmojiLocalizerIndex;
|
||||
}
|
||||
|
|
|
@ -23,7 +23,8 @@ export type FunEmojiLocalizer = Readonly<{
|
|||
}>;
|
||||
|
||||
export function createFunEmojiLocalizerIndex(
|
||||
localeEmojiList: LocaleEmojiListType
|
||||
localeEmojiList: LocaleEmojiListType,
|
||||
defaultLocalizerIndex?: FunEmojiLocalizerIndex
|
||||
): FunEmojiLocalizerIndex {
|
||||
const parentKeyToLocaleShortName = new Map<EmojiParentKey, string>();
|
||||
const localeShortNameToParentKey = new Map<string, EmojiParentKey>();
|
||||
|
@ -37,10 +38,25 @@ export function createFunEmojiLocalizerIndex(
|
|||
const variantKey = getEmojiVariantKeyByValue(entry.emoji);
|
||||
const parentKey = getEmojiParentKeyByVariantKey(variantKey);
|
||||
const localizedShortName = entry.tags.at(0) ?? entry.shortName;
|
||||
|
||||
parentKeyToLocaleShortName.set(parentKey, localizedShortName);
|
||||
localeShortNameToParentKey.set(localizedShortName, parentKey);
|
||||
}
|
||||
|
||||
if (defaultLocalizerIndex != null) {
|
||||
for (const [
|
||||
parentKey,
|
||||
defaultShortName,
|
||||
] of defaultLocalizerIndex.parentKeyToLocaleShortName) {
|
||||
if (parentKeyToLocaleShortName.has(parentKey)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
parentKeyToLocaleShortName.set(parentKey, defaultShortName);
|
||||
localeShortNameToParentKey.set(defaultShortName, parentKey);
|
||||
}
|
||||
}
|
||||
|
||||
return { parentKeyToLocaleShortName, localeShortNameToParentKey };
|
||||
}
|
||||
|
||||
|
|
|
@ -37,10 +37,13 @@ export type FunEmojiSearch = (
|
|||
) => ReadonlyArray<FunEmojiSearchResult>;
|
||||
|
||||
export function createFunEmojiSearchIndex(
|
||||
localeEmojiList: LocaleEmojiListType
|
||||
localeEmojiList: LocaleEmojiListType,
|
||||
defaultSearchIndex: ReadonlyArray<FunEmojiSearchIndexEntry> = []
|
||||
): FunEmojiSearchIndex {
|
||||
const results: Array<FunEmojiSearchIndexEntry> = [];
|
||||
|
||||
const localizedKeys = new Set<string>();
|
||||
|
||||
for (const localeEmoji of localeEmojiList) {
|
||||
if (!isEmojiParentValue(localeEmoji.emoji)) {
|
||||
// Skipping unknown emoji, most likely apple doesn't support it
|
||||
|
@ -54,6 +57,7 @@ export function createFunEmojiSearchIndex(
|
|||
|
||||
const parentKey = getEmojiParentKeyByValue(localeEmoji.emoji);
|
||||
const emoji = getEmojiParentByKey(parentKey);
|
||||
localizedKeys.add(parentKey);
|
||||
results.push({
|
||||
key: parentKey,
|
||||
rank: localeEmoji.rank,
|
||||
|
@ -66,6 +70,12 @@ export function createFunEmojiSearchIndex(
|
|||
});
|
||||
}
|
||||
|
||||
for (const defaultEntry of defaultSearchIndex) {
|
||||
if (!localizedKeys.has(defaultEntry.key)) {
|
||||
results.push(defaultEntry);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue