fix: muted words
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
kieran 2024-04-29 11:22:26 +01:00
parent 08d4a73ca6
commit a17c98ad25
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
6 changed files with 28 additions and 17 deletions

1
.gitignore vendored
View File

@ -13,3 +13,4 @@ dist/
.DS_Store .DS_Store
.pnp* .pnp*
docs/ docs/
.wranger/

View File

@ -63,7 +63,8 @@
"test:watch": "vitest watch", "test:watch": "vitest watch",
"intl-extract": "formatjs extract 'src/**/*.ts*' --ignore='**/*.d.ts' --out-file src/lang.json --flatten true", "intl-extract": "formatjs extract 'src/**/*.ts*' --ignore='**/*.d.ts' --out-file src/lang.json --flatten true",
"intl-compile": "formatjs compile src/lang.json --out-file src/translations/en.json", "intl-compile": "formatjs compile src/lang.json --out-file src/translations/en.json",
"eslint": "eslint ." "eslint": "eslint .",
"deploy:meku": "NODE_CONFIG_ENV=meku yarn workspace @snort/app build && npx wrangler pages deploy --project-name meku build/"
}, },
"eslintConfig": { "eslintConfig": {
"extends": [ "extends": [

View File

@ -42,8 +42,12 @@ export default function useModeration() {
return words.includes(word); return words.includes(word);
} }
async function addMutedWord(word: string) { async function addMutedWord(word: string | Array<string>) {
await state.addToList(EventKind.MuteList, new MutedWordTag(word.toLowerCase()), true); const words = Array.isArray(word) ? word : [word];
for (const w of words) {
await state.addToList(EventKind.MuteList, new MutedWordTag(w.toLowerCase()), false);
}
await state.saveList(EventKind.MuteList);
} }
async function removeMutedWord(word: string) { async function removeMutedWord(word: string) {

View File

@ -1,6 +1,5 @@
import { DefaultPreferences, updateAppData, UserPreferences } from "@/Utils/Login"; import { DefaultPreferences, updateAppData, UserPreferences } from "@/Utils/Login";
import useEventPublisher from "./useEventPublisher";
import useLogin from "./useLogin"; import useLogin from "./useLogin";
export default function usePreferences<T = UserPreferences>(selector?: (v: UserPreferences) => T): T { export default function usePreferences<T = UserPreferences>(selector?: (v: UserPreferences) => T): T {
@ -27,12 +26,10 @@ export function useAllPreferences() {
pref: pref, pref: pref,
}; };
}); });
const { system } = useEventPublisher();
return { return {
preferences: pref, preferences: pref,
update: async (data: UserPreferences) => { update: async (data: UserPreferences) => {
await updateAppData(id, system, d => { await updateAppData(id, d => {
return { ...d, preferences: data }; return { ...d, preferences: data };
}); });
}, },

View File

@ -4,18 +4,15 @@ import { useNavigate } from "react-router-dom";
import AsyncButton from "@/Components/Button/AsyncButton"; import AsyncButton from "@/Components/Button/AsyncButton";
import { ToggleSwitch } from "@/Components/Icons/Toggle"; import { ToggleSwitch } from "@/Components/Icons/Toggle";
import useEventPublisher from "@/Hooks/useEventPublisher"; import useModeration from "@/Hooks/useModeration";
import useLogin from "@/Hooks/useLogin";
import { FixedModeration } from "@/Pages/onboarding/fixedModeration"; import { FixedModeration } from "@/Pages/onboarding/fixedModeration";
import { appendDedupe } from "@/Utils"; import { appendDedupe } from "@/Utils";
import { updateAppData } from "@/Utils/Login";
export function Moderation() { export function Moderation() {
const id = useLogin(s => s.id);
const [topics, setTopics] = useState<Array<string>>(Object.keys(FixedModeration)); const [topics, setTopics] = useState<Array<string>>(Object.keys(FixedModeration));
const [extraTerms, setExtraTerms] = useState(""); const [extraTerms, setExtraTerms] = useState("");
const navigate = useNavigate(); const navigate = useNavigate();
const { system } = useEventPublisher(); const { addMutedWord } = useModeration();
return ( return (
<div className="flex flex-col g24"> <div className="flex flex-col g24">
@ -82,10 +79,7 @@ export function Moderation() {
.filter(a => a.length > 1), .filter(a => a.length > 1),
); );
if (words.length > 0) { if (words.length > 0) {
updateAppData(id, system, ad => ({ await addMutedWord(words);
...ad,
mutedWords: appendDedupe(ad.mutedWords, words),
}));
} }
navigate("/"); navigate("/");
}}> }}>

View File

@ -336,6 +336,20 @@ export class MultiAccountStore extends ExternalStore<LoginSession> {
delete acc["tags"]; delete acc["tags"];
didMigrate = true; didMigrate = true;
} }
if (acc.state.appdata) {
if ("id" in acc.state.appdata) {
delete acc.state.appdata["id"];
didMigrate = true;
}
if ("mutedWords" in acc.state.appdata) {
delete acc.state.appdata["mutedWords"];
didMigrate = true;
}
if ("showContentWarningPosts" in acc.state.appdata) {
delete acc.state.appdata["showContentWarningPosts"];
didMigrate = true;
}
}
} }
if (didMigrate) { if (didMigrate) {