import { createContext, useEffect, useState } from "react"; import AnythingLLM from "./media/logo/anything-llm.png"; import AnythingLLMDark from "./media/logo/anything-llm-dark.png"; import DefaultLoginLogoLight from "./media/illustrations/login-logo.svg"; import DefaultLoginLogoDark from "./media/illustrations/login-logo-light.svg"; import System from "./models/system"; export const REFETCH_LOGO_EVENT = "refetch-logo"; export const LogoContext = createContext(); export function LogoProvider({ children }) { const [logo, setLogo] = useState(""); const [loginLogo, setLoginLogo] = useState(""); const [isCustomLogo, setIsCustomLogo] = useState(false); const DefaultLoginLogo = localStorage.getItem("theme") !== "default" ? DefaultLoginLogoDark : DefaultLoginLogoLight; async function fetchInstanceLogo() { try { const { isCustomLogo, logoURL } = await System.fetchLogo(); if (logoURL) { setLogo(logoURL); setLoginLogo(isCustomLogo ? logoURL : DefaultLoginLogo); setIsCustomLogo(isCustomLogo); } else { localStorage.getItem("theme") !== "default" ? setLogo(AnythingLLMDark) : setLogo(AnythingLLM); setLoginLogo(DefaultLoginLogo); setIsCustomLogo(false); } } catch (err) { localStorage.getItem("theme") !== "default" ? setLogo(AnythingLLMDark) : setLogo(AnythingLLM); setLoginLogo(DefaultLoginLogo); setIsCustomLogo(false); console.error("Failed to fetch logo:", err); } } useEffect(() => { fetchInstanceLogo(); window.addEventListener(REFETCH_LOGO_EVENT, fetchInstanceLogo); return () => { window.removeEventListener(REFETCH_LOGO_EVENT, fetchInstanceLogo); }; }, []); return ( {children} ); }