fix: muted words
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This commit is contained in:
parent
08d4a73ca6
commit
a17c98ad25
1
.gitignore
vendored
1
.gitignore
vendored
@ -13,3 +13,4 @@ dist/
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
.pnp*
|
.pnp*
|
||||||
docs/
|
docs/
|
||||||
|
.wranger/
|
@ -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": [
|
||||||
|
@ -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) {
|
||||||
|
@ -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 };
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -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("/");
|
||||||
}}>
|
}}>
|
||||||
|
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user