export type SharePayload = {
  title: string;
  text: string;
  url?: string;
};

/**
 * Versucht, Inhalte über den nativen Share-Sheet (Capacitor) oder die
 * Web Share API zu teilen.
 *
 * Gibt `true` zurück, wenn ein Share-Dialog geöffnet wurde (auch wenn der
 * Nutzer ihn abbricht) - dann ist KEIN Clipboard-Fallback nötig. Gibt `false`
 * zurück, wenn kein Share-Mechanismus verfügbar ist und der Aufrufer selbst
 * auf die Zwischenablage ausweichen soll.
 *
 * Die @capacitor/*-Importe sind bewusst dynamisch, damit der Code während des
 * SSR/Prerenderings von Next.js nicht ausgeführt wird und reine Web-Builds
 * ohne die nativen Pakete weiterhin funktionieren.
 */
export async function shareViaNativeOrWeb(payload: SharePayload): Promise<boolean> {
  if (typeof window === 'undefined') return false;

  // 1) Capacitor nativ: nativer Share-Sheet via Bridge.
  try {
    const { Capacitor } = await import('@capacitor/core');
    if (Capacitor.isNativePlatform()) {
      const { Share } = await import('@capacitor/share');
      try {
        await Share.share(payload);
      } catch {
        // Nutzer hat den nativen Dialog abgebrochen - kein Fallback nötig.
      }
      return true;
    }
  } catch {
    // @capacitor/* nicht geladen (z.B. reiner Web-Build) -> weiter mit Web Share API.
  }

  // 2) Web Share API (Browser/PWA).
  if (navigator.share) {
    try {
      await navigator.share(payload);
    } catch {
      // Nutzer hat den Dialog abgebrochen.
    }
    return true;
  }

  return false;
}
