Skip to content

DateHelper: formatDateDistance defensiv gegen leere/ungültige Eingaben absichern #333

@coderabbitai

Description

@coderabbitai

Problem

Die Funktion formatDateDistance in resources/js/Lib/DateHelper.ts behandelt leere oder ungültige Datumswerte nicht defensiv. Bei einem leeren String oder einem ungültigen Datum kann parse() ein ungültiges Date-Objekt zurückgeben, woraufhin formatDistanceStrict einen RangeError wirft und die History-Ansicht abbricht.

Empfohlene Lösung

export const formatDateDistance = (date: string) => {
  if (!date) return ''
  let parsedDate: Date
  if (date.length === 10) {
    parsedDate = parse(date, 'dd.MM.yyyy', new Date())
  } else {
    parsedDate = parse(date.substring(0, 16), 'dd.MM.yyyy HH:mm', new Date())
  }
  if (Number.isNaN(parsedDate.getTime())) return ''
  return formatDistanceStrict(parsedDate, new Date(), {
    locale: de,
    addSuffix: true
  })
}

Kontext

Gefunden bei Code-Review in PR #332 (HistoryView optimiert).

Gemeldet von: @dspangenberg

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions