mirror of
https://github.com/ae-utbm/sith.git
synced 2025-09-13 03:25:49 +00:00
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { userFetchUser } from "#openapi";
|
|
|
|
document.addEventListener("alpine:init", () => {
|
|
Alpine.data("existing_user_subscription_form", () => ({
|
|
loading: false,
|
|
profileFragment: "" as string,
|
|
|
|
async init() {
|
|
const userSelect = document.getElementById("id_member") as HTMLSelectElement;
|
|
userSelect.addEventListener("change", async () => {
|
|
await this.loadProfile(Number.parseInt(userSelect.value));
|
|
});
|
|
await this.loadProfile(Number.parseInt(userSelect.value));
|
|
},
|
|
|
|
async loadProfile(userId: number) {
|
|
const birthdayInput = document.getElementById("id_birthdate") as HTMLInputElement;
|
|
if (!Number.isInteger(userId)) {
|
|
this.profileFragment = "";
|
|
birthdayInput.hidden = true;
|
|
return;
|
|
}
|
|
this.loading = true;
|
|
const [miniProfile, userInfos] = await Promise.all([
|
|
fetch(`/user/${userId}/mini/`),
|
|
// biome-ignore lint/style/useNamingConvention: api is snake_case
|
|
userFetchUser({ path: { user_id: userId } }),
|
|
]);
|
|
this.profileFragment = await miniProfile.text();
|
|
// If the user has no birthdate yet, show the form input
|
|
// to fill this info.
|
|
// Else keep the input hidden and change its value to the user birthdate
|
|
birthdayInput.value = userInfos.data.date_of_birth;
|
|
birthdayInput.hidden = userInfos.data.date_of_birth !== null;
|
|
this.loading = false;
|
|
},
|
|
}));
|
|
});
|