'use client';

/**
 * Loescht alle lokal in der App gespeicherten Daten sowie den
 * Service-Worker-Registrierungen und Browser-Caches. Wird auf der
 * Startseite und der separaten "Daten loeschen"-Seite verwendet.
 */
export async function resetAppData(): Promise<void> {
  if (typeof window === 'undefined') return;

  // 1. Alle eigenen localStorage-Eintraege entfernen.
  const keysToRemove: string[] = [];
  for (let i = 0; i < localStorage.length; i++) {
    const key = localStorage.key(i);
    if (key && key.startsWith('yumder_')) {
      keysToRemove.push(key);
    }
  }
  keysToRemove.forEach((key) => localStorage.removeItem(key));

  // 2. Service Worker abmelden und Caches leeren (PWA).
  try {
    if ('serviceWorker' in navigator) {
      const registrations = await navigator.serviceWorker.getRegistrations();
      await Promise.all(registrations.map((r) => r.unregister()));
    }
    if ('caches' in window) {
      const cacheNames = await caches.keys();
      await Promise.all(cacheNames.map((name) => caches.delete(name)));
    }
  } catch {
    // Best-effort: auch wenn der Browser SW/Caches nicht unterstuetzt,
    // ist das lokale Loeschen bereits passiert.
  }
}
