Files
encoach_frontend/src/hooks/useAssignmentArchive.tsx
2024-02-18 11:46:08 +00:00

46 lines
1.1 KiB
TypeScript

import React from "react";
import axios from "axios";
import { toast } from "react-toastify";
import { BsArchive } from "react-icons/bs";
export const useAssignmentArchive = (
assignmentId: string,
reload?: Function
) => {
const [loading, setLoading] = React.useState(false);
const archive = () => {
// archive assignment
setLoading(true);
axios
.post(`/api/assignments/${assignmentId}/archive`)
.then((res) => {
toast.success("Assignment archived!");
if(reload) reload();
setLoading(false);
})
.catch((err) => {
toast.error("Failed to archive the assignment!");
setLoading(false);
});
};
const renderIcon = (downloadClasses: string, loadingClasses: string) => {
if (loading) {
return (
<span className={`${loadingClasses} loading loading-infinity w-6`} />
);
}
return (
<BsArchive
className={`${downloadClasses} text-2xl cursor-pointer`}
onClick={(e) => {
e.stopPropagation();
archive();
}}
/>
);
};
return renderIcon;
};