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: (
),
}}
/>
);
}