Skip to content

Commit

Permalink
feat: add confirm modal on attend after unattend deadline
Browse files Browse the repository at this point in the history
  • Loading branch information
Terbau committed Nov 7, 2023
1 parent a4808ae commit 2ec4543
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 6 deletions.
35 changes: 30 additions & 5 deletions src/events/components/Attendance/AttendButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,19 @@ import { Button } from '@dotkomonline/design-system';
import { useToast } from 'core/utils/toast/useToast';
import { unwrapResult } from '@reduxjs/toolkit';
import style from './attendance.less';
import { ConfirmModal } from 'common/components/Modal';

interface IAttendButtonProps {
eventId: number;
isEventFull: boolean;
isAfterUnattendDeadline: boolean;
}

const AttendButton: FC<IAttendButtonProps> = (props: IAttendButtonProps) => {
const dispatch = useDispatch();
const { eventId, isEventFull } = props;
const [showModal, setShowModal] = useState<boolean>(false);
const { eventId, isEventFull, isAfterUnattendDeadline } = props;
const [showCaptchaModal, setShowCaptchaModal] = useState(false);
const [showConfirmModal, setShowConfirmModal] = useState(false);
const [addToast] = useToast({ type: 'success', duration: 5000 });

const signUp = async (token: string | null) => {
Expand All @@ -29,12 +32,34 @@ const AttendButton: FC<IAttendButtonProps> = (props: IAttendButtonProps) => {
}
}
};
const toggleModal = () => setShowModal(!showModal);
const modal = <CaptchaModal showModal={showModal} toggleModal={toggleModal} setRecaptcha={signUp} />;
const toggleCaptchaModal = () => setShowCaptchaModal((prevState) => !prevState);
const modal = <CaptchaModal showModal={showCaptchaModal} toggleModal={toggleCaptchaModal} setRecaptcha={signUp} />;

const onConfirmModalClose = (retValue: boolean) => {
setShowConfirmModal(false);

if (retValue) {
toggleCaptchaModal();
}
};

const onButtonClick = () => {
if (!isAfterUnattendDeadline) {
toggleCaptchaModal();
} else {
setShowConfirmModal(true);
}
};

return (
<>
<Button color={isEventFull ? 'secondary' : 'success'} onClick={toggleModal} className={style.button}>
<ConfirmModal
title="Avmeldingsfrist utløpt"
message="Er du sikker på at du vil melde deg på dette arrangementet? Du vil ikke kunne melde deg av."
open={showConfirmModal}
onClose={onConfirmModalClose}
/>
<Button color={isEventFull ? 'secondary' : 'success'} onClick={onButtonClick} className={style.button}>
Meld meg på {isEventFull ? 'venteliste' : null}
</Button>
{modal}
Expand Down
8 changes: 7 additions & 1 deletion src/events/components/Attendance/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,13 @@ const Attendance: FC<IAttendButtonProps> = (props: IAttendButtonProps) => {
if (!canAttend.status) return <p>{canAttend.message}</p>;

// Base-case: The user is logged in and can attend!
return <AttendButton eventId={id} isEventFull={max_capacity <= number_of_seats_taken} />;
return (
<AttendButton
eventId={id}
isEventFull={max_capacity <= number_of_seats_taken}
isAfterUnattendDeadline={currentTime > unattendDeadline}
/>
);
};

export default Attendance;

0 comments on commit 2ec4543

Please sign in to comment.