import { ArrowBack } from "@styled-icons/boxicons-regular"; import { useHistory, useParams } from "react-router-dom"; import { Invites } from "revolt.js/dist/api/objects"; import styles from "./Invite.module.scss"; import { useContext, useEffect, useState } from "preact/hooks"; import RequiresOnline from "../../context/revoltjs/RequiresOnline"; import { AppContext, ClientStatus, StatusContext, } from "../../context/revoltjs/RevoltClient"; import { takeError } from "../../context/revoltjs/util"; import ServerIcon from "../../components/common/ServerIcon"; import UserIcon from "../../components/common/user/UserIcon"; import Button from "../../components/ui/Button"; import Overline from "../../components/ui/Overline"; import Preloader from "../../components/ui/Preloader"; export default function Invite() { const history = useHistory(); const client = useContext(AppContext); const status = useContext(StatusContext); const { code } = useParams<{ code: string }>(); const [processing, setProcessing] = useState(false); const [error, setError] = useState(undefined); const [invite, setInvite] = useState( undefined, ); useEffect(() => { if ( typeof invite === "undefined" && (status === ClientStatus.ONLINE || status === ClientStatus.READY) ) { client .fetchInvite(code) .then((data) => setInvite(data)) .catch((err) => setError(takeError(err))); } }, [status]); if (typeof invite === "undefined") { return (
{error ? ( ) : ( )}
); } // ! FIXME: add i18n translations return (
history.push("/")} />
{!processing && (
)}
{processing ? ( ) : ( <>

{invite.server_name}

#{invite.channel_name}

Invited by{" "} {" "} {invite.user_name}

)}
); }