fix: ensure only one travel day per calendar date

Serialize Live-log day creation, prune empty duplicates, and use local dates for "today".

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-03 17:24:51 +02:00
parent 9ae24aa6fb
commit ac627a022f
4 changed files with 124 additions and 16 deletions
+9
View File
@@ -3,6 +3,7 @@ import {
buildLogEntryPayload,
hasUnsavedEventDraft,
isLogEventDraftEmpty,
localDateString,
normalizeLogEvent,
type LogEventPayload
} from './logEntryPayload.js'
@@ -13,6 +14,14 @@ const emptyDraft = (): LogEventPayload =>
const filledDraft = (): LogEventPayload =>
normalizeLogEvent({ time: '12:34', remarks: 'Wind dreht' })
describe('localDateString', () => {
it('uses local calendar date, not UTC', () => {
const date = new Date(2026, 5, 4, 1, 30, 0)
expect(localDateString(date)).toBe('2026-06-04')
expect(date.toISOString().substring(0, 10)).toBe('2026-06-03')
})
})
describe('logEntryPayload event drafts', () => {
it('treats time-only draft as empty', () => {
expect(isLogEventDraftEmpty(emptyDraft())).toBe(true)
+8
View File
@@ -24,6 +24,14 @@ export interface LogEventPayload {
remarks: string
}
/** Calendar date YYYY-MM-DD in local timezone (matches logbook entry `date` field). */
export function localDateString(date: Date = new Date()): string {
const y = date.getFullYear()
const m = String(date.getMonth() + 1).padStart(2, '0')
const d = String(date.getDate()).padStart(2, '0')
return `${y}-${m}-${d}`
}
/** Local time as HH:MM (24-hour). */
export function currentLocalTimeHHMM(date: Date = new Date()): string {
const hours = String(date.getHours()).padStart(2, '0')