/**
 * Verbose-Logging-Toggle: console.log laesst sich global stummschalten.
 * console.warn/console.error bleiben immer an — Fehler will man immer sehen.
 *
 * Default: an (true). Toggle ueber Settings → Protokoll → Verbose Logging.
 * Beim Start wird der gespeicherte Wert geladen, vorher loggen wir normal.
 */

import AsyncStorage from '@react-native-async-storage/async-storage';

export const VERBOSE_LOGGING_KEY = 'aria_verbose_logging';

// Original-console.log retten, damit wir die Wrapper jederzeit wieder
// "scharf" stellen koennen (sonst waere ein Toggle-an nach -aus tot).
const originalLog = console.log.bind(console);
const noop = () => {};

let _verbose = true;

function applyState(): void {
  console.log = _verbose ? originalLog : noop;
}

/** Wert aus AsyncStorage laden und anwenden. Beim App-Start aufrufen. */
export async function initLogger(): Promise<void> {
  try {
    const v = await AsyncStorage.getItem(VERBOSE_LOGGING_KEY);
    _verbose = v !== 'false'; // default: true
  } catch {}
  applyState();
}

export function isVerboseLogging(): boolean {
  return _verbose;
}

export function setVerboseLogging(verbose: boolean): void {
  _verbose = verbose;
  applyState();
  AsyncStorage.setItem(VERBOSE_LOGGING_KEY, String(verbose)).catch(() => {});
}
