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

59 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-09-24 12:33:12 +00:00
import { unixNowMs } from "@snort/shared";
import useLogin from "Hooks/useLogin";
import { setAppData } from "Login";
import { appendDedupe } from "SnortUtils";
import { useState } from "react";
2023-09-27 09:09:26 +00:00
import FormattedMessage from "Element/FormattedMessage";
2023-09-24 12:33:12 +00:00
export function ModerationSettings() {
2023-09-24 12:36:51 +00:00
const login = useLogin();
const [muteWord, setMuteWord] = useState("");
2023-09-24 12:33:12 +00:00
2023-09-24 12:36:51 +00:00
function addMutedWord() {
login.appData ??= {
item: {
mutedWords: [],
},
timestamp: 0,
};
setAppData(
login,
{
...login.appData.item,
mutedWords: appendDedupe(login.appData.item.mutedWords, [muteWord]),
},
unixNowMs(),
);
setMuteWord("");
}
return (
<>
<h2>
<FormattedMessage defaultMessage="Muted Words" />
</h2>
<div className="flex-column g12">
<div className="flex g8">
<input
type="text"
placeholder="eg. crypto"
className="w-max"
value={muteWord}
onChange={e => setMuteWord(e.target.value)}
/>
<button type="button" onClick={addMutedWord}>
<FormattedMessage defaultMessage="Add" />
</button>
2023-09-24 12:33:12 +00:00
</div>
2023-09-24 12:36:51 +00:00
{login.appData.item.mutedWords.map(v => (
<div className="p br b flex f-space">
<div>{v}</div>
<button type="button">
<FormattedMessage defaultMessage="Delete" />
</button>
</div>
))}
</div>
2023-09-24 12:33:12 +00:00
</>
2023-09-24 12:36:51 +00:00
);
}