feat: add ability to leave groups / servers silently

This commit is contained in:
Paul Makles
2022-09-02 16:20:25 +01:00
parent e728c2061c
commit c6be688b0b
6 changed files with 72 additions and 25 deletions

View File

@@ -20,6 +20,7 @@ import BanMember from "./components/BanMember";
import Changelog from "./components/Changelog";
import ChannelInfo from "./components/ChannelInfo";
import Clipboard from "./components/Clipboard";
import ConfirmLeave from "./components/ConfirmLeave";
import Confirmation from "./components/Confirmation";
import CreateBot from "./components/CreateBot";
import CreateCategory from "./components/CreateCategory";
@@ -240,9 +241,9 @@ export const modalController = new ModalControllerExtended({
changelog: Changelog,
channel_info: ChannelInfo,
clipboard: Clipboard,
leave_group: Confirmation,
leave_group: ConfirmLeave,
close_dm: Confirmation,
leave_server: Confirmation,
leave_server: ConfirmLeave,
delete_server: Confirmation,
delete_channel: Confirmation,
delete_bot: Confirmation,

View File

@@ -0,0 +1,52 @@
import { Text } from "preact-i18n";
import { ModalForm } from "@revoltchat/ui";
import { TextReact } from "../../../lib/i18n";
import { ModalProps } from "../types";
/**
* Confirmation modal
*/
export default function ConfirmLeave(
props: ModalProps<"leave_group" | "leave_server">,
) {
const name = props.target.name;
return (
<ModalForm
{...props}
title={
<Text
id={`app.special.modals.prompt.confirm_leave`}
fields={{ name }}
/>
}
description={
<TextReact
id={`app.special.modals.prompt.confirm_leave_long`}
fields={{ name: <b>{name}</b> }}
/>
}
data={{
silently_leave: {
title: <Text id="app.special.modals.prompt.silent_leave" />,
description: (
<Text id="app.special.modals.prompt.members_not_notified" />
),
},
}}
schema={{
silently_leave: "checkbox",
}}
callback={({ silently_leave }) =>
props.target.delete(silently_leave)
}
submit={{
palette: "error",
children: <Text id="app.special.modals.actions.leave" />,
}}
/>
);
}

View File

@@ -14,9 +14,7 @@ import { ModalProps } from "../types";
*/
export default function Confirmation(
props: ModalProps<
| "leave_group"
| "close_dm"
| "leave_server"
| "delete_server"
| "delete_channel"
| "delete_bot"
@@ -31,8 +29,6 @@ export default function Confirmation(
delete_server: ["confirm_delete", "delete"],
delete_channel: ["confirm_delete", "delete"],
delete_bot: ["confirm_delete", "delete"],
leave_group: ["confirm_leave", "leave"],
leave_server: ["confirm_leave", "leave"],
unfriend_user: ["unfriend_user", "remove"],
block_user: ["block_user", "block"],
};
@@ -79,10 +75,8 @@ export default function Confirmation(
case "block_user":
await props.target.blockUser();
break;
case "leave_group":
case "close_dm":
case "delete_channel":
case "leave_server":
case "delete_server":
if (props.type != "delete_channel") history.push("/");