"use client";
import { createContext, useContext, useEffect, useState, useCallback } from "react";
import { SettingsApi } from "@/lib/api";

type SettingsMap = Record<string, string>;
interface SettingsCtx {
    settings: SettingsMap;
    reload: () => void;
    s: (key: string, fallback?: string) => string;
    isOn: (key: string) => boolean;
}

const Ctx = createContext<SettingsCtx>({
    settings: {},
    reload: () => { },
    s: (_k, f = "") => f,
    isOn: () => false,
});

export function SettingsProvider({ children }: { children: React.ReactNode }) {
    const [settings, setSettings] = useState<SettingsMap>({});

    const reload = useCallback(() => {
        SettingsApi.getAll()
            .then((data: SettingsMap) => setSettings(data))
            .catch(() => { });
    }, []);

    useEffect(() => { reload(); }, [reload]);

    const s = (key: string, fallback = "") => settings[key] ?? fallback;
    const isOn = (key: string) => settings[key] === "true";

    return <Ctx.Provider value={{ settings, reload, s, isOn }}>{children}</Ctx.Provider>;
}

export function useSettings() { return useContext(Ctx); }
