ENCOA-109: Made the modal disappear when a user is created

This commit is contained in:
Tiago Ribeiro
2024-08-27 11:14:29 +01:00
parent 7fb0ed884c
commit b7940087b5
5 changed files with 16 additions and 9 deletions

View File

@@ -55,7 +55,7 @@ const USER_TYPE_PERMISSIONS: {
}, },
}; };
export default function BatchCodeGenerator({user}: {user: User}) { export default function BatchCodeGenerator({user, onFinish}: {user: User; onFinish: () => void}) {
const [infos, setInfos] = useState<{email: string; name: string; passport_id: string}[]>([]); const [infos, setInfos] = useState<{email: string; name: string; passport_id: string}[]>([]);
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const [expiryDate, setExpiryDate] = useState<Date | null>( const [expiryDate, setExpiryDate] = useState<Date | null>(
@@ -165,6 +165,8 @@ export default function BatchCodeGenerator({user}: {user: User}) {
)} codes and they have been notified by e-mail!`, )} codes and they have been notified by e-mail!`,
{toastId: "success"}, {toastId: "success"},
); );
onFinish();
return; return;
} }

View File

@@ -61,7 +61,7 @@ const USER_TYPE_PERMISSIONS: {
}, },
}; };
export default function BatchCreateUser({user}: {user: User}) { export default function BatchCreateUser({user, onFinish}: {user: User; onFinish: () => void}) {
const [infos, setInfos] = useState< const [infos, setInfos] = useState<
{ {
email: string; email: string;
@@ -159,6 +159,7 @@ export default function BatchCreateUser({user}: {user: User}) {
try { try {
for (const newUser of newUsers) await axios.post("/api/make_user", {...newUser, type, expiryDate}); for (const newUser of newUsers) await axios.post("/api/make_user", {...newUser, type, expiryDate});
toast.success(`Successfully added ${newUsers.length} user(s)!`); toast.success(`Successfully added ${newUsers.length} user(s)!`);
onFinish();
} catch { } catch {
toast.error("Something went wrong, please try again later!"); toast.error("Something went wrong, please try again later!");
} finally { } finally {

View File

@@ -48,7 +48,7 @@ const USER_TYPE_PERMISSIONS: {
}, },
}; };
export default function CodeGenerator({user}: {user: User}) { export default function CodeGenerator({user, onFinish}: {user: User; onFinish: () => void}) {
const [generatedCode, setGeneratedCode] = useState<string>(); const [generatedCode, setGeneratedCode] = useState<string>();
const [expiryDate, setExpiryDate] = useState<Date | null>( const [expiryDate, setExpiryDate] = useState<Date | null>(
user?.subscriptionExpirationDate ? moment(user.subscriptionExpirationDate).toDate() : null, user?.subscriptionExpirationDate ? moment(user.subscriptionExpirationDate).toDate() : null,

View File

@@ -54,7 +54,7 @@ const USER_TYPE_PERMISSIONS: {
}, },
}; };
export default function UserCreator({user}: {user: User}) { export default function UserCreator({user, onFinish}: {user: User; onFinish: () => void}) {
const [name, setName] = useState<string>(); const [name, setName] = useState<string>();
const [email, setEmail] = useState<string>(); const [email, setEmail] = useState<string>();
const [phone, setPhone] = useState<string>(); const [phone, setPhone] = useState<string>();
@@ -118,6 +118,7 @@ export default function UserCreator({user}: {user: User}) {
.post("/api/make_user", body) .post("/api/make_user", body)
.then(() => { .then(() => {
toast.success("That user has been created!"); toast.success("That user has been created!");
onFinish();
setName(""); setName("");
setEmail(""); setEmail("");

View File

@@ -72,22 +72,25 @@ export default function Admin() {
{user && ( {user && (
<Layout user={user} className="gap-6"> <Layout user={user} className="gap-6">
<Modal isOpen={modalOpen === "batchCreateUser"} onClose={() => setModalOpen(undefined)}> <Modal isOpen={modalOpen === "batchCreateUser"} onClose={() => setModalOpen(undefined)}>
<BatchCreateUser user={user} /> <BatchCreateUser user={user} onFinish={() => setModalOpen(undefined)} />
</Modal> </Modal>
<Modal isOpen={modalOpen === "batchCreateCode"} onClose={() => setModalOpen(undefined)}> <Modal isOpen={modalOpen === "batchCreateCode"} onClose={() => setModalOpen(undefined)}>
<BatchCodeGenerator user={user} /> <BatchCodeGenerator user={user} onFinish={() => setModalOpen(undefined)} />
</Modal> </Modal>
<Modal isOpen={modalOpen === "createCode"} onClose={() => setModalOpen(undefined)}> <Modal isOpen={modalOpen === "createCode"} onClose={() => setModalOpen(undefined)}>
<CodeGenerator user={user} /> <CodeGenerator user={user} onFinish={() => setModalOpen(undefined)} />
</Modal> </Modal>
<Modal isOpen={modalOpen === "createUser"} onClose={() => setModalOpen(undefined)}> <Modal isOpen={modalOpen === "createUser"} onClose={() => setModalOpen(undefined)}>
<UserCreator user={user} /> <UserCreator user={user} onFinish={() => setModalOpen(undefined)} />
</Modal> </Modal>
<Modal isOpen={modalOpen === "gradingSystem"} onClose={() => setModalOpen(undefined)}> <Modal isOpen={modalOpen === "gradingSystem"} onClose={() => setModalOpen(undefined)}>
<CorporateGradingSystem <CorporateGradingSystem
user={user} user={user}
defaultSteps={gradingSystem?.steps || CEFR_STEPS} defaultSteps={gradingSystem?.steps || CEFR_STEPS}
mutate={(steps) => mutate({user: user.id, steps})} mutate={(steps) => {
mutate({user: user.id, steps});
setModalOpen(undefined);
}}
/> />
</Modal> </Modal>