fix(appointment): render real slot structure in time picker
The slots API returns data.sessions[].slots[] with start_time (HH:MM), is_available, and start/end unix timestamps — not the morning/evening + time/status shape the UI assumed. Add lib/appointmentSlots.js to flatten sessions into morning/evening by start_time, fetch with doctor.uuid, and read item.start_time / item.is_available in the slot grid. Derive the clinic address from the already-loaded doctor.address by location_id instead of a separate auth-required call. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
const MORNING_END = "12:00";
|
||||
|
||||
export function adaptSlots(slotsResponse) {
|
||||
const sessions = slotsResponse?.data?.sessions ?? slotsResponse?.sessions ?? [];
|
||||
|
||||
const morning = [];
|
||||
const evening = [];
|
||||
|
||||
sessions.forEach((session) => {
|
||||
(session.slots ?? []).forEach((slot) => {
|
||||
const target = slot.start_time < MORNING_END ? morning : evening;
|
||||
target.push(slot);
|
||||
});
|
||||
});
|
||||
|
||||
return { morning, evening };
|
||||
}
|
||||
|
||||
export function hasAvailable(slots) {
|
||||
return Array.isArray(slots) && slots.some((slot) => slot.is_available);
|
||||
}
|
||||
Reference in New Issue
Block a user