"use client";

import React, { createContext, useContext } from "react";

export interface SiteConfig {
  company_name?: string;
  company_logo?: string;
  company_logo_public_id?: string;
  company_description?: string;
  company_short_description?: string;
  company_phone?: string;
  company_email?: string;
  company_address?: string;
  whatsapp_number?: string;
  facebook_url?: string;
  instagram_url?: string;
  twitter_url?: string;
  footer_text?: string;
  copyright_year?: string;
  meta_description?: string;
  whatsapp_popup?: string;
  terms_and_conditions?: string;
  privacy_policy?: string;
  emi_enabled?: string;
  emi_interest_rate?: string;
  emi_min_amount?: string;
  emi_tenures?: string;
  emi_tenure_rates?: string;
}

const SiteConfigContext = createContext<SiteConfig>({});

export function SiteConfigProvider({
  config,
  children,
}: {
  config: SiteConfig;
  children: React.ReactNode;
}) {
  React.useEffect(() => {
    if (!config.company_logo) return;
    const icons = document.querySelectorAll("link[rel*='icon']");
    if (icons.length > 0) {
      icons.forEach((icon) => {
        (icon as HTMLLinkElement).href = config.company_logo!;
      });
    } else {
      const link = document.createElement("link");
      link.rel = "shortcut icon";
      link.href = config.company_logo;
      document.getElementsByTagName("head")[0].appendChild(link);
    }
  }, [config.company_logo]);

  return (
    <SiteConfigContext.Provider value={config}>
      {children}
    </SiteConfigContext.Provider>
  );
}

export function useSiteConfig(): SiteConfig {
  return useContext(SiteConfigContext);
}
