featureView liefert zusaetzlich disabledReason, disabledAt und loeschungAm (Berliner Tag, 30 Tage nach disabledAt); alle drei nur im Zustand disabled, sonst null. Neu termine/frist.js mit LOESCHFRIST_TAGE, loeschzeit und loeschTag (nur zeit.js/util.js). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
30 lines
1.3 KiB
JavaScript
30 lines
1.3 KiB
JavaScript
/**
|
|
* Loeschfrist abgeschalteter Terminplaner: 30 Tage nach `disabledAt` loescht der Tageslauf (jobs.js) die Buchungen und die
|
|
* Einstellung. Diese Datei haelt die Frist an einer Stelle, damit Anzeige (siteFeatures.featureView), Mails und Rechtstexte
|
|
* dieselbe Zahl und dieselbe Rechnung benutzen. Reine Funktionen, nur Importe aus zeit.js und util.js (kein Kreis mit siteFeatures.js).
|
|
*/
|
|
import { ausUtc } from './zeit.js'
|
|
import { zeitMs } from './util.js'
|
|
|
|
/** Tage zwischen dem Abschalten (disabledAt) und der Loeschung. */
|
|
export const LOESCHFRIST_TAGE = 30
|
|
|
|
const TAG_MS = 24 * 60 * 60 * 1000
|
|
|
|
/**
|
|
* Zeitpunkt, ab dem die Daten geloescht werden duerfen: disabledAt plus 30 x 24 Stunden (keine Wanduhr-Rechnung, wie der Tageslauf).
|
|
* disabledAt: ISO-String (auch mit +00:00 wie von Appwrite), Date oder Zahl; fehlend oder ungueltig => null.
|
|
*/
|
|
export function loeschzeit(disabledAt) {
|
|
const ms = zeitMs(disabledAt)
|
|
if (!Number.isFinite(ms)) return null
|
|
const ende = new Date(ms + LOESCHFRIST_TAGE * TAG_MS)
|
|
return Number.isNaN(ende.getTime()) ? null : ende
|
|
}
|
|
|
|
/** Berliner Kalendertag der Loeschung ('JJJJ-MM-TT') oder null, wenn disabledAt fehlt oder ungueltig ist. */
|
|
export function loeschTag(disabledAt) {
|
|
const ende = loeschzeit(disabledAt)
|
|
return ende ? ausUtc(ende).tag : null
|
|
}
|