Files
parenthese/backend/src/lib/date-precision.ts
T
IliesAllaliandClaude Opus 5.5 f47ef8ecac fix(dates): une date corrigee a la main perd la precision importee
Sinon « vers 1879 » restait colle a la date saisie ensuite, et l'export l'aurait ecrite.
Personne, union, et voie contribution.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:29:21 +02:00

27 lines
1.3 KiB
TypeScript

// Une date corrigée à la main perd la précision lue dans le GEDCOM (« vers 1879 », « entre 1914 et 1918 ») :
// elle décrivait l'ancienne date, pas celle qu'on vient de saisir. Une date renvoyée telle quelle la garde.
const sameDay = (a: Date | null | undefined, b: Date | null | undefined) =>
(a ? a.toISOString().slice(0, 10) : null) === (b ? b.toISOString().slice(0, 10) : null)
type PersonDates = { birthDate: Date | null; deathDate: Date | null }
export function personPrecisionResets(current: PersonDates | null, next: Partial<PersonDates>) {
const out: { birthDatePrecision?: null; birthDateEnd?: null; deathDatePrecision?: null; deathDateEnd?: null } = {}
if (!current) return out
if (next.birthDate !== undefined && !sameDay(current.birthDate, next.birthDate)) {
out.birthDatePrecision = null
out.birthDateEnd = null
}
if (next.deathDate !== undefined && !sameDay(current.deathDate, next.deathDate)) {
out.deathDatePrecision = null
out.deathDateEnd = null
}
return out
}
export function unionPrecisionResets(current: { startDate: Date | null } | null, next: { startDate?: Date | null }) {
if (!current || next.startDate === undefined || sameDay(current.startDate, next.startDate)) return {}
return { startDatePrecision: null }
}