fix: properly check post language in checkLangMute() #3
1 changed files with 9 additions and 5 deletions
|
@ -12,11 +12,15 @@ function checkLangMute(
|
||||||
note: firefish.entities.Note,
|
note: firefish.entities.Note,
|
||||||
mutedLangs: Array<string | string[]>,
|
mutedLangs: Array<string | string[]>,
|
||||||
): Muted {
|
): Muted {
|
||||||
const mutedLangList = new Set(
|
const mutedLangList = new Set(mutedLangs.flatMap((e) => e));
|
||||||
mutedLangs.reduce((arr, x) => [...arr, ...(Array.isArray(x) ? x : [x])]),
|
// handle subtags
|
||||||
);
|
// e.g. if lang = "zh-hant-tw", check ["zh", "zh-hant", "zh-hant-tw"]
|
||||||
if (mutedLangList.has((note.lang?.[0]?.lang || "").split("-")[0])) {
|
const langChunks: string[] = (note.lang || "").split("-");
|
||||||
return { muted: true, matched: [note.lang?.[0]?.lang] };
|
for (let i = 0; i < langChunks.length; i++) {
|
||||||
|
const lang = langChunks.slice(0, i + 1).join("-");
|
||||||
|
if (mutedLangList.has(lang)) {
|
||||||
|
return { muted: true, matched: [lang] };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return NotMuted;
|
return NotMuted;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue