Files
encoach_frontend/src/hooks/useAssignmentArchive.tsx

43 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 (
<div
className="tooltip flex items-center justify-center w-fit h-fit"
data-tip="Archive assignment"
onClick={(e) => {
e.stopPropagation();
archive();
}}>
<BsArchive className={`${downloadClasses} text-2xl cursor-pointer tooltip`} />
</div>
);
};
return renderIcon;
};