/**
 * Sätze über Zeitpunkte – reine Funktionen, ohne Anzeige.
 *
 * ## Warum sie hier stehen und nicht bei ihren Bausteinen
 *
 * Beide wurden aus ihrer Komponente heraus exportiert, damit die Prüfung den
 * Wortlaut an derselben Quelle misst und nicht an einer Nachbildung. Das ist
 * richtig – aber eine Datei, die neben Komponenten auch anderes ausführt,
 * bricht das schnelle Neuladen im Entwicklungsbetrieb, und der Linter sagt
 * das bei jedem Lauf (`react-refresh/only-export-components`). Zwei Warnungen,
 * die dauerhaft dastehen, sind schlimmer als keine Warnung: Man liest sie
 * nach einer Woche nicht mehr, und die dritte fällt dann auch nicht mehr auf.
 *
 * Hier haben beide Sätze ihren Platz, die Prüfung misst weiter an der Quelle,
 * und der Torwächter ist wieder still.
 */

/** Nur das Datum, ohne Uhrzeit – die Stunde sagt hier nichts. */
function datum(iso: string): string {
  return new Date(iso).toLocaleDateString('de-DE', {
    day: '2-digit',
    month: '2-digit',
    year: 'numeric',
  });
}

/**
 * Der Satz über die letzte Sicherung.
 *
 * Bewusst ohne Ausrufezeichen, ohne Farbe und ohne Zählwerk: Es steht da,
 * was ist. Wer nie gesichert hat, liest das als Tatsache und nicht als
 * Vorwurf – und wer gestern gesichert hat, bekommt keine Erinnerung, die er
 * nicht braucht.
 */
export function sicherungsstandSatz(letzteSicherung: string | null): string {
  if (letzteSicherung === null) {
    return 'Auf diesem Rechner ist noch keine Sicherung angelegt worden.';
  }
  return `Ihre letzte Sicherung: ${datum(letzteSicherung)}.`;
}

/** „vor 12 Tagen“, „gestern“, „heute“ – aus einer ISO-Zeit. */
export function abstandText(iso: string, jetzt: Date = new Date()): string {
  const zeit = Date.parse(iso);
  if (Number.isNaN(zeit)) {
    return '';
  }

  /* Über Kalendertage und nicht über Stunden: „gestern“ soll auch dann
     „gestern“ heißen, wenn dreißig Stunden dazwischenliegen – dieselbe
     Rechnung wie im Anwendungskern (`kalendertageSeit`). */
  const damals = new Date(zeit);
  const a = new Date(damals.getFullYear(), damals.getMonth(), damals.getDate()).getTime();
  const b = new Date(jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate()).getTime();
  const tage = Math.max(0, Math.round((b - a) / 86_400_000));

  if (tage === 0) {
    return 'heute';
  }
  if (tage === 1) {
    return 'gestern';
  }
  return `vor ${String(tage)} Tagen`;
}
