Le fixes part 1
This commit is contained in:
@ -7,6 +7,9 @@ import {
|
||||
Textarea,
|
||||
useToast,
|
||||
} from "@chakra-ui/react";
|
||||
import { useState } from "react";
|
||||
import Success from "../../components/Success.js";
|
||||
import { useLoaderData } from "@remix-run/react";
|
||||
|
||||
export function meta() {
|
||||
return [
|
||||
@ -16,80 +19,131 @@ export function meta() {
|
||||
];
|
||||
}
|
||||
|
||||
export default function () {
|
||||
async function submit() {
|
||||
const submitReq = await fetch("/api/admin-apps/submit");
|
||||
export async function loader({ context }: { context: RequestContext }) {
|
||||
const user: { [k: string]: any } = context.data.current_user;
|
||||
|
||||
useToast()({
|
||||
description: submitReq.ok
|
||||
? "Your application was submitted"
|
||||
: "Try again later",
|
||||
duration: 10000,
|
||||
isClosable: true,
|
||||
status: submitReq.ok ? "success" : "error",
|
||||
title: submitReq.ok ? "Success" : "Unknown Error",
|
||||
if (!user)
|
||||
throw new Response(null, {
|
||||
status: 401,
|
||||
});
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
export default function () {
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [success, setSuccess] = useState(false);
|
||||
const toast = useToast();
|
||||
useLoaderData<typeof loader>();
|
||||
|
||||
async function submit() {
|
||||
setLoading(true);
|
||||
|
||||
const submitReq = await fetch("/api/admin-apps/submit");
|
||||
if (!submitReq.ok) {
|
||||
toast({
|
||||
title: "Error",
|
||||
description:
|
||||
"Something went wrong while submitting your application. Try again.",
|
||||
status: "error",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
setLoading(false);
|
||||
setSuccess(true);
|
||||
}
|
||||
|
||||
return (
|
||||
<Container maxW="container.md" pt="4vh" textAlign="start">
|
||||
<Heading size="xl">Admin Application</Heading>
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">Why do you want to be an admin?</Text>
|
||||
<br />
|
||||
<Textarea
|
||||
maxLength={2000}
|
||||
placeholder="Explain why you want to be an admin. This should be at least a few sentences."
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">
|
||||
How long have you been in the Car Crushers community?
|
||||
</Text>
|
||||
<br />
|
||||
<Input maxLength={40} placeholder="Your response" />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">
|
||||
Explain why you are a better candidate than someone else.
|
||||
</Text>
|
||||
<br />
|
||||
<Textarea
|
||||
maxLength={2000}
|
||||
placeholder="Explain why you are a better candidate. This should be at least a few sentences."
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">
|
||||
Describe yourself from a third-person point-of-view.
|
||||
</Text>
|
||||
<br />
|
||||
<Textarea
|
||||
maxLength={1000}
|
||||
placeholder="Describe yourself from a third-person view in a few sentences."
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">
|
||||
If you have any comments or questions, type them here.
|
||||
</Text>
|
||||
<br />
|
||||
<Textarea maxLength={1000} placeholder="Comments and questions go here" />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<span>
|
||||
By submitting this form, you agree to the{" "}
|
||||
<a href="/terms">Terms of Service</a> and{" "}
|
||||
<a href="/privacy">Privacy Policy</a>.
|
||||
</span>
|
||||
<br />
|
||||
<Button onClick={async () => await submit()}>Submit</Button>
|
||||
</Container>
|
||||
<>
|
||||
<Container
|
||||
maxW="container.md"
|
||||
pt="4vh"
|
||||
textAlign="start"
|
||||
display={success ? "block" : "none"}
|
||||
>
|
||||
<Success
|
||||
heading={"Application Submitted"}
|
||||
message={
|
||||
"Your application for admin has been submitted! We'll email you once we've reached a decision."
|
||||
}
|
||||
></Success>
|
||||
</Container>
|
||||
<Container
|
||||
maxW="container.md"
|
||||
pt="4vh"
|
||||
textAlign="start"
|
||||
display={success ? "none" : "block"}
|
||||
>
|
||||
<Heading size="xl">Admin Application</Heading>
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">Why do you want to be an admin?</Text>
|
||||
<br />
|
||||
<Textarea
|
||||
maxLength={2000}
|
||||
placeholder="Explain why you want to be an admin. This should be at least a few sentences."
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">
|
||||
How long have you been in the Car Crushers community?
|
||||
</Text>
|
||||
<br />
|
||||
<Input maxLength={40} placeholder="Your response" />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">
|
||||
Explain why you are a better candidate than someone else.
|
||||
</Text>
|
||||
<br />
|
||||
<Textarea
|
||||
maxLength={2000}
|
||||
placeholder="Explain why you are a better candidate. This should be at least a few sentences."
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">
|
||||
Describe yourself from a third-person point-of-view.
|
||||
</Text>
|
||||
<br />
|
||||
<Textarea
|
||||
maxLength={1000}
|
||||
placeholder="Describe yourself from a third-person view in a few sentences."
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<Text fontSize="md">
|
||||
If you have any comments or questions, type them here.
|
||||
</Text>
|
||||
<br />
|
||||
<Textarea
|
||||
maxLength={1000}
|
||||
placeholder="Comments and questions go here"
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<span>
|
||||
By submitting this form, you agree to the{" "}
|
||||
<a href="/terms">Terms of Service</a> and{" "}
|
||||
<a href="/privacy">Privacy Policy</a>.
|
||||
</span>
|
||||
<br />
|
||||
<Button
|
||||
onClick={async () => await submit()}
|
||||
isLoading={loading}
|
||||
loadingText="Submitting"
|
||||
mt={3}
|
||||
>
|
||||
Submit
|
||||
</Button>
|
||||
</Container>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user