mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-02-15 07:28:59 +00:00
Fallback to emoji-datasource for unlocalized emoji
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user