Skip to content

Commit 22ba7e6

Browse files
authored
feat: add RSVP message to portal (#252)
* feat: add RSVP message to portal * fix: portal confirmation visibility * Update apps/site/src/app/(main)/portal/@applicant/ConfirmAttendance.tsx lgtm Co-authored-by: Taesung Hwang <[email protected]> --------- Co-authored-by: Taesung Hwang <[email protected]> ~Co-authored-by: Ruslan Manoharan <[email protected]>~
1 parent 25ababf commit 22ba7e6

File tree

4 files changed

+50
-6
lines changed

4 files changed

+50
-6
lines changed

apps/site/src/app/(main)/portal/@applicant/ApplicantPortal.tsx

+6-4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { redirect } from "next/navigation";
22

33
import getUserIdentity from "@/lib/utils/getUserIdentity";
44

5+
import ConfirmAttendance from "./ConfirmAttendance";
56
import Message from "./Message";
67
import VerticalTimeline from "./VerticalTimeline";
78
import SignWaiver from "./SignWaiver";
@@ -24,17 +25,18 @@ async function Portal() {
2425
redirect("/apply");
2526
}
2627

27-
const isAccepted =
28-
status === PortalStatus.accepted ||
29-
status === PortalStatus.waived ||
30-
status === PortalStatus.confirmed;
28+
const submittedWaiver =
29+
status === PortalStatus.waived || status === PortalStatus.confirmed;
30+
31+
const isAccepted = status === PortalStatus.accepted || submittedWaiver;
3132

3233
return (
3334
<div className="bg-white text-black max-w-4xl rounded-2xl p-6 flex flex-col mb-24 w-full">
3435
<h2 className="text-4xl font-semibold">Status</h2>
3536
<VerticalTimeline status={status as PortalStatus} />
3637
<Message status={status as PortalStatus} />
3738
{isAccepted && <SignWaiver status={status as PortalStatus} />}
39+
{submittedWaiver && <ConfirmAttendance status={status} />}
3840
</div>
3941
);
4042
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { PortalStatus } from "./ApplicantPortal";
2+
import Button from "@/lib/components/Button/Button";
3+
4+
interface ConfirmAttendanceProps {
5+
status: PortalStatus;
6+
}
7+
8+
function ConfirmAttendance({ status }: ConfirmAttendanceProps) {
9+
const buttonText =
10+
status === PortalStatus.confirmed
11+
? "I am no longer able to attend IrvineHacks 2024"
12+
: "I will be attending IrvineHacks 2024";
13+
14+
return (
15+
<div className="mt-4">
16+
<hr />
17+
<h3 className="text-3xl my-4">RSVP</h3>
18+
{status === PortalStatus.confirmed ? (
19+
<p>
20+
Thank you for confirming your attendance. We look forward to seeing
21+
you at the event!
22+
</p>
23+
) : (
24+
<p>
25+
If you plan on attending IrvineHacks 2024, please confirm your
26+
attendance below!
27+
</p>
28+
)}
29+
<form method="post" action="/api/user/rsvp">
30+
<Button className="text-color-red" text={buttonText} />
31+
</form>
32+
</div>
33+
);
34+
}
35+
36+
export default ConfirmAttendance;

apps/site/src/app/(main)/portal/@applicant/Message.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,12 @@ function Message({ status }: MessageProps) {
4646
event!
4747
</>
4848
),
49-
[PortalStatus.confirmed]: <></>,
49+
[PortalStatus.confirmed]: (
50+
<p>
51+
Thank you for confirming your attendance! We look forward to seeing you
52+
at IrvineHacks!
53+
</p>
54+
),
5055
};
5156

5257
return <div>{messages[status]}</div>;

apps/site/src/app/(main)/portal/@applicant/SignWaiver.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ function SignWaiver({ status }: SignWaiverProps) {
1010
return status === PortalStatus.waived ? null : (
1111
<div>
1212
<hr />
13-
<p>
13+
<h3 className="text-3xl my-4">Waiver</h3>
14+
<p className="mt-4">
1415
In order to attend IrvineHacks 2024, please fill out the waiver below
1516
</p>
1617
<Button

0 commit comments

Comments
 (0)