fix: properly check post language in checkLangMute()

This commit is contained in:
sup39 2023-12-27 21:11:53 +09:00
parent f676cc1f19
commit 5eaa29057f
Signed by: sup39
GPG key ID: 111C00916C1641E5

View file

@ -12,11 +12,15 @@ function checkLangMute(
note: firefish.entities.Note,
mutedLangs: Array<string | string[]>,
): Muted {
const mutedLangList = new Set(
mutedLangs.reduce((arr, x) => [...arr, ...(Array.isArray(x) ? x : [x])]),
);
if (mutedLangList.has((note.lang?.[0]?.lang || "").split("-")[0])) {
return { muted: true, matched: [note.lang?.[0]?.lang] };
const mutedLangList = new Set(mutedLangs.flatMap((e) => e));
// handle subtags
// e.g. if lang = "zh-hant-tw", check ["zh", "zh-hant", "zh-hant-tw"]
const langChunks: string[] = (note.lang || "").split("-");
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;
}