/**
 * Zugriff auf die Lern-Kanäle der Preload-Bridge.
 *
 * Der Anwendungskern entsteht parallel: einzelne Kanäle können noch fehlen,
 * obwohl `window.lernApp` bereits existiert. Die Oberfläche behandelt die
 * Bridge deshalb bewusst als *unvollständig* und prüft jeden Kanal einzeln,
 * bevor sie ihn aufruft. So lädt der Lernmodus auch dann, wenn der Kern noch
 * nicht fertig ist – statt eines Absturzes erscheint eine erklärende Meldung.
 */

import type { LernAppBridge } from '../../../shared/ipc';
import { bridge } from '../bridge';

/** Bridge-Sicht, in der jeder Kanal fehlen darf. */
export type LernBruecke = Partial<LernAppBridge>;

export function lernBruecke(): LernBruecke | undefined {
  return bridge();
}

/**
 * Verständliche deutsche Meldung zu einem beliebigen Fehlerwert.
 * Der technische Grund steht in Klammern dahinter – hilfreich bei Rückfragen,
 * ohne den Text unverständlich zu machen.
 */
export function fehlerMeldung(fehler: unknown, standard: string): string {
  const grund = fehler instanceof Error ? fehler.message.trim() : String(fehler).trim();
  return grund.length > 0 ? `${standard} (${grund})` : standard;
}

/** Meldung für einen Kanal, den der Anwendungskern (noch) nicht anbietet. */
export function kanalFehltMeldung(kanal: string, folge: string): string {
  return `${folge} Der Anwendungskern bietet den Kanal „${kanal}“ zurzeit nicht an.`;
}
