Skip to content

Commit

Permalink
Connect attendance changes
Browse files Browse the repository at this point in the history
  • Loading branch information
elvincheng3 committed Nov 12, 2024
1 parent 6ab23be commit 3e5236b
Show file tree
Hide file tree
Showing 15 changed files with 312 additions and 720 deletions.
102 changes: 0 additions & 102 deletions src/client/client.tsx

This file was deleted.

51 changes: 6 additions & 45 deletions src/components/AttendanceButton.tsx
Original file line number Diff line number Diff line change
@@ -1,62 +1,23 @@
import { useContext, useEffect, useState } from "react";
import { createAttendanceChange } from "../client/client";
import { AuthContext } from "../hooks/useAuth";
import { AttendanceChange, AttendanceData, ChangeStatus } from "../util/Types";
import { AttendanceChange, ChangeStatus } from "../util/Types";
import { AttendanceButtonStyles } from "../util/styleConfig";
import Loading from "./Loading";

interface AttendanceButtonProps {
openModal: () => void;
setIsRegistered: React.Dispatch<React.SetStateAction<boolean>>;
setErrorType: React.Dispatch<React.SetStateAction<number>>;
attendanceChange?: AttendanceChange;
createdAttendanceChange: AttendanceData | {};
eventid: number;
}

export const AttendanceButton = ({
attendanceChange,
createdAttendanceChange,
eventid,
openModal,
setIsRegistered,
setErrorType,
}: AttendanceButtonProps) => {
const { member } = useContext(AuthContext);
const [isCreatingAttendance, setIsCreatingAttendance] = useState(false);
const [initialAttendanceStatus, setAttendanceStatus] = useState(
attendanceChange?.change_status || ChangeStatus.UNREGISTER
);

useEffect(() => {
const makeAttendanceChange = async () => {
try {
setIsCreatingAttendance(true);
//using non-null assertion since it's assumed the user is logged in to make it past the home page
if (member) {
await createAttendanceChange(member.id, eventid);
setIsRegistered(false);
}
setIsCreatingAttendance(false);
// once we successfully created an AttendanceChange its back to pending
setAttendanceStatus(ChangeStatus.NOT_REVIEWED);
} catch (e) {
setErrorType(1);
setIsCreatingAttendance(false);
}
};
//on Mount this useEffect starts,
//so only want this makeAttendanceChange function to start when we actually have something/ this json is not empty
if (!(Object.keys(createdAttendanceChange).length === 0)) {
makeAttendanceChange();
}
}, [member, createdAttendanceChange, eventid, setErrorType, setIsRegistered]);

const renderText = AttendanceButtonStyles[initialAttendanceStatus];
const renderText =
AttendanceButtonStyles[
attendanceChange?.changeStatus || ChangeStatus.UNREGISTER
];

return (
<button onClick={openModal} className={`${renderText.className}`}>
{isCreatingAttendance ? <Loading fullScreen={false} /> : renderText.text}
{renderText.text}
</button>
);
};
Loading

0 comments on commit 3e5236b

Please sign in to comment.