2023-09-24 12:33:12 +00:00
|
|
|
import { useState } from "react";
|
2023-10-17 13:02:59 +00:00
|
|
|
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
|
|
|
|
2023-11-28 18:19:11 +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>
|
2023-11-28 18:19:11 +00:00
|
|
|
<FormattedMessage defaultMessage="Moderation" id="wofVHy" />
|
2023-09-24 12:36:51 +00:00
|
|
|
</h2>
|
2023-11-28 18:19:11 +00:00
|
|
|
|
|
|
|
<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,
|
|
|
|
})
|
|
|
|
}
|
2023-11-28 18:19:11 +00:00
|
|
|
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>
|
2023-10-17 13:02:59 +00:00
|
|
|
<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}
|
2023-10-17 13:02:59 +00:00
|
|
|
onChange={e => setMuteWord(e.target.value.toLowerCase())}
|
2023-09-24 12:36:51 +00:00
|
|
|
/>
|
2024-04-22 20:15:43 +00:00
|
|
|
<AsyncButton onClick={async () => {
|
|
|
|
await addMutedWord(muteWord);
|
|
|
|
setMuteWord("");
|
|
|
|
}}>
|
2023-11-20 11:35:51 +00:00
|
|
|
<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)}>
|
2023-11-20 11:35:51 +00:00
|
|
|
<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
|
|
|
);
|
|
|
|
}
|