diff --git a/webclient/src/Classes.js b/webclient/src/Classes.js index b839b58..5dea796 100644 --- a/webclient/src/Classes.js +++ b/webclient/src/Classes.js @@ -92,6 +92,7 @@ export function ClassDetail(props) { const [clazz, setClass] = useState(false); const [refreshCount, refreshClass] = useReducer(x => x + 1, 0); const [error, setError] = useState(false); + const [loading, setLoading] = useState(false); const { token, user, refreshUser } = props; const { id } = useParams(); const userTraining = clazz && clazz.students.find(x => x.user == user.id); @@ -108,6 +109,7 @@ export function ClassDetail(props) { }, [refreshCount]); const handleSignup = () => { + setLoading(true); const data = { attendance_status: 'Waiting for payment', session: id }; requester('/training/', 'POST', token, data) .then(res => { @@ -120,6 +122,7 @@ export function ClassDetail(props) { }; const handleToggle = (newStatus) => { + setLoading(true); const data = { attendance_status: newStatus, session: id }; requester('/training/'+userTraining.id+'/', 'PUT', token, data) .then(res => { @@ -132,6 +135,10 @@ export function ClassDetail(props) { }); }; + useEffect(() => { + setLoading(false); + }, [userTraining]); + // TODO: calculate yesterday and lock signups return ( @@ -198,11 +205,11 @@ export function ClassDetail(props) {
Status: {userTraining.attendance_status}
{userTraining.attendance_status === 'Withdrawn' ? -