import { ArrowBack } from "@styled-icons/boxicons-regular"; import { autorun } from "mobx"; import { Redirect, useHistory, useParams } from "react-router-dom"; import { RetrievedInvite } from "revolt-api/types/Invites"; import styles from "./Invite.module.scss"; import { Text } from "preact-i18n"; import { useContext, useEffect, useState } from "preact/hooks"; import { defer } from "../../lib/defer"; import { TextReact } from "../../lib/i18n"; import { dispatch } from "../../redux"; 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))); } }, [client, code, invite, status]); if (code === undefined) return ; if (typeof invite === "undefined") { return (
{error ? (

) : ( )}
); } return (
history.push("/")} />
{!processing && (
)}
{processing ? ( ) : ( <>

{invite.server_name}

#{invite.channel_name} •{" "}

{" "} {invite.user_name} ), }} />

)}
); }