snort/packages/app/src/Pages/settings/Moderation.tsx

71 lines
2.3 KiB
TypeScript
Raw Normal View History

2023-09-24 12:33:12 +00:00
import { useState } from "react";
import { FormattedMessage } from "react-intl";
2023-09-24 12:33:12 +00:00
2024-04-22 14:24:25 +00:00
import AsyncButton from "@/Components/Button/AsyncButton";
import useModeration from "@/Hooks/useModeration";
2024-04-22 13:38:14 +00:00
import { useAllPreferences } from "@/Hooks/usePreferences";
2024-01-04 17:01:18 +00:00
export default function ModerationSettingsPage() {
2024-04-22 14:24:25 +00:00
const { addMutedWord, removeMutedWord, getMutedWords } = useModeration();
const preferences = useAllPreferences();
2023-09-24 12:36:51 +00:00
const [muteWord, setMuteWord] = useState("");
2023-09-24 12:33:12 +00:00
2023-09-24 12:36:51 +00:00
return (
<>
<h2>
<FormattedMessage defaultMessage="Moderation" id="wofVHy" />
2023-09-24 12:36:51 +00:00
</h2>
<div className="py-4 flex flex-col gap-2">
<div className="flex items-center mb-2">
<input
type="checkbox"
2024-04-22 14:24:25 +00:00
checked={preferences.preferences.showContentWarningPosts}
onChange={() =>
preferences.update({
...preferences.preferences,
showContentWarningPosts: !preferences.preferences.showContentWarningPosts,
})
}
className="mr-2"
id="showContentWarningPosts"
/>
<label htmlFor="showContentWarningPosts">
<FormattedMessage defaultMessage="Show posts that have a content warning tag" id="fQN+tq" />
</label>
</div>
</div>
<h3>
<FormattedMessage defaultMessage="Muted Words" id="AN0Z7Q" />
</h3>
<div className="flex flex-col g12">
2023-09-24 12:36:51 +00:00
<div className="flex g8">
<input
type="text"
placeholder="eg. crypto"
className="w-max"
value={muteWord}
onChange={e => setMuteWord(e.target.value.toLowerCase())}
2023-09-24 12:36:51 +00:00
/>
2024-04-22 20:17:01 +00:00
<AsyncButton
onClick={async () => {
await addMutedWord(muteWord);
setMuteWord("");
}}>
<FormattedMessage defaultMessage="Add" id="2/2yg+" />
2024-04-22 14:24:25 +00:00
</AsyncButton>
2023-09-24 12:33:12 +00:00
</div>
2024-04-22 14:24:25 +00:00
{getMutedWords().map(v => (
2024-01-04 09:54:58 +00:00
<div key={v} className="p br b flex items-center justify-between">
2023-09-24 12:36:51 +00:00
<div>{v}</div>
2024-04-22 20:15:43 +00:00
<AsyncButton onClick={() => removeMutedWord(v)}>
<FormattedMessage defaultMessage="Delete" id="K3r6DQ" />
2024-04-22 20:15:43 +00:00
</AsyncButton>
2023-09-24 12:36:51 +00:00
</div>
))}
</div>
2023-09-24 12:33:12 +00:00
</>
2023-09-24 12:36:51 +00:00
);
}