fix soft mute languages

This commit is contained in:
Lhcfl 2024-04-23 22:41:18 +08:00
parent c0afa4a2f7
commit 9a42745926
2 changed files with 12 additions and 8 deletions

View file

@ -1,4 +1,5 @@
import type { entities } from "firefish-js";
import { detectLanguage, languageContains } from "./language-utils";
export interface Muted {
muted: boolean;
@ -12,11 +13,14 @@ function checkLangMute(
note: 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] };
console.log(note);
const mutedLangList = mutedLangs.flat();
console.log(mutedLangList);
const noteLang = note.lang ?? detectLanguage(note.text ?? "") ?? "no-lang";
for (const mutedLang of mutedLangList) {
if (languageContains(mutedLang, noteLang)) {
return { muted: true, matched: [noteLang] };
}
}
return NotMuted;
}
@ -32,7 +36,7 @@ function checkWordMute(
if (text === "") return NotMuted;
const result = { muted: false, matched: [] };
const result = { muted: false, matched: [] as string[] };
for (const mutePattern of mutedWords) {
if (Array.isArray(mutePattern)) {
@ -74,7 +78,7 @@ function checkWordMute(
}
export function getWordSoftMute(
note: firefish.entities.Note,
note: entities.Note,
meId: string | null | undefined,
mutedWords: Array<string | string[]>,
mutedLangs: Array<string | string[]>,

View file

@ -39,7 +39,7 @@ export function languageContains(
) {
if (!langCode1 || !langCode2) return false;
return parentLanguage(langCode2) === langCode1;
return langCode1 === langCode2 || parentLanguage(langCode2) === langCode1;
}
export function parentLanguage(langCode: string | null) {