import { useHistory } from "react-router-dom"; import { Text } from "preact-i18n"; import { ModalForm } from "@revoltchat/ui"; import { TextReact } from "../../../lib/i18n"; import { clientController } from "../../client/ClientController"; import { ModalProps } from "../types"; /** * Confirmation modal */ export default function Confirmation( props: ModalProps< | "close_dm" | "delete_server" | "delete_channel" | "delete_bot" | "block_user" | "unfriend_user" | "reset_bot_token" >, ) { const history = useHistory(); const EVENTS = { close_dm: ["confirm_close_dm", "close"], delete_server: ["confirm_delete", "delete"], delete_channel: ["confirm_delete", "delete"], delete_bot: ["confirm_delete", "delete"], unfriend_user: ["unfriend_user", "remove"], block_user: ["block_user", "block"], reset_bot_token: ["reset_bot_token", "reset"], }; const event = EVENTS[props.type]; let name; switch (props.type) { case "unfriend_user": case "block_user": name = props.target.username; break; case "close_dm": name = props.target.recipient?.username; break; case "delete_bot": name = props.name; break; default: name = props.target.name; } return ( } description={ {name} }} /> } data={{}} schema={{}} callback={async () => { switch (props.type) { case "unfriend_user": await props.target.removeFriend(); break; case "block_user": await props.target.blockUser(); break; case "close_dm": case "delete_channel": case "delete_server": if (props.type != "delete_channel") history.push("/"); props.target.delete(); break; case "delete_bot": clientController .getAvailableClient() .bots.delete(props.target); props.cb?.(); break; case "reset_bot_token": clientController .getAvailableClient() .bots .edit(props.target.id, { remove: ["Token"] }) .then(props.callback) } }} submit={{ palette: "error", children: ( ), }} /> ); }