Standardize time formatting and avoid string slicing

- Created formatTimeString() utility to properly parse time strings
- Replaced all .slice(0, 5) calls with proper time formatting
- Handles both 'HH:MM:SS' and 'HH:MM' formats safely
- More robust than string slicing
This commit is contained in:
counterweight 2025-12-21 17:56:20 +01:00
parent a25e84e197
commit 3c13270bc0
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
2 changed files with 17 additions and 4 deletions

View file

@ -8,7 +8,7 @@ import { Header } from "../../components/Header";
import { useRequireAuth } from "../../hooks/useRequireAuth";
import { components } from "../../generated/api";
import constants from "../../../../shared/constants.json";
import { formatDate, formatDisplayDate, getDateRange } from "../../utils/date";
import { formatDate, formatDisplayDate, getDateRange, formatTimeString } from "../../utils/date";
const { slotDurationMinutes, maxAdvanceDays, minAdvanceDays } = constants.booking;
@ -87,8 +87,8 @@ export default function AdminAvailabilityPage() {
setEditSlots(
existingSlots.length > 0
? existingSlots.map((s) => ({
start_time: s.start_time.slice(0, 5),
end_time: s.end_time.slice(0, 5),
start_time: formatTimeString(s.start_time),
end_time: formatTimeString(s.end_time),
}))
: [{ start_time: "09:00", end_time: "17:00" }]
);
@ -206,7 +206,7 @@ export default function AdminAvailabilityPage() {
};
const formatSlotTime = (slot: TimeSlot): string => {
return `${slot.start_time.slice(0, 5)} - ${slot.end_time.slice(0, 5)}`;
return `${formatTimeString(slot.start_time)} - ${formatTimeString(slot.end_time)}`;
};
if (isLoading) {