import { ListUl } from "@styled-icons/boxicons-regular"; import { InfoCircle, Group, FlagAlt, Envelope, UserX, Trash, HappyBeaming, } from "@styled-icons/boxicons-solid"; import { observer } from "mobx-react-lite"; import { Route, Switch, useHistory, useParams } from "react-router-dom"; import styles from "./Settings.module.scss"; import { Text } from "preact-i18n"; import { LineDivider } from "@revoltchat/ui"; import { state } from "../../mobx/State"; import ButtonItem from "../../components/navigation/items/ButtonItem"; import { useClient } from "../../controllers/client/ClientController"; import RequiresOnline from "../../controllers/client/jsx/RequiresOnline"; import { modalController } from "../../controllers/modals/ModalController"; import { GenericSettings } from "./GenericSettings"; import { Bans } from "./server/Bans"; import { Categories } from "./server/Categories"; import { Emojis } from "./server/Emojis"; import { Invites } from "./server/Invites"; import { Members } from "./server/Members"; import { Overview } from "./server/Overview"; import { Roles } from "./server/Roles"; export default observer(() => { const { server: sid } = useParams<{ server: string }>(); const client = useClient(); const server = client.servers.get(sid); if (!server) return null; const owner = server.owner === client.user?._id; const history = useHistory(); function switchPage(to?: string) { if (to) { history.replace(`/server/${sid}/settings/${to}`); } else { history.replace(`/server/${sid}/settings`); } } return ( {server.name}, id: "overview", icon: , title: ( ), }, { id: "categories", icon: , title: ( ), hideTitle: true, }, { id: "roles", icon: , title: , hideTitle: true, }, { category: ( ), id: "emojis", icon: , title: , hidden: !state.experiments.isEnabled("picker"), }, { category: ( ), id: "members", icon: , title: ( ), }, { id: "invites", icon: , title: ( ), }, { id: "bans", icon: , title: , }, ]} children={ } category="server_pages" switchPage={switchPage} defaultPage="overview" custom={ owner ? ( <> modalController.push({ type: "delete_server", target: server, }) } className={styles.deleteServer} compact> ) : undefined } showExitButton /> ); });