mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-02 20:43:36 +00:00
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { useMemo } from "react";
|
|
import { useAppStore, defaultBackgroundSettings } from "@/store/app-store";
|
|
|
|
interface UseBoardBackgroundProps {
|
|
currentProject: { path: string; id: string } | null;
|
|
}
|
|
|
|
export function useBoardBackground({ currentProject }: UseBoardBackgroundProps) {
|
|
const boardBackgroundByProject = useAppStore(
|
|
(state) => state.boardBackgroundByProject
|
|
);
|
|
|
|
// Get background settings for current project
|
|
const backgroundSettings = useMemo(() => {
|
|
return (
|
|
(currentProject && boardBackgroundByProject[currentProject.path]) ||
|
|
defaultBackgroundSettings
|
|
);
|
|
}, [currentProject, boardBackgroundByProject]);
|
|
|
|
// Build background image style if image exists
|
|
const backgroundImageStyle = useMemo(() => {
|
|
if (!backgroundSettings.imagePath || !currentProject) {
|
|
return {};
|
|
}
|
|
|
|
return {
|
|
backgroundImage: `url(${
|
|
import.meta.env.VITE_SERVER_URL || "http://localhost:3008"
|
|
}/api/fs/image?path=${encodeURIComponent(
|
|
backgroundSettings.imagePath
|
|
)}&projectPath=${encodeURIComponent(currentProject.path)}${
|
|
backgroundSettings.imageVersion
|
|
? `&v=${backgroundSettings.imageVersion}`
|
|
: ""
|
|
})`,
|
|
backgroundSize: "cover",
|
|
backgroundPosition: "center",
|
|
backgroundRepeat: "no-repeat",
|
|
} as React.CSSProperties;
|
|
}, [backgroundSettings, currentProject]);
|
|
|
|
return {
|
|
backgroundSettings,
|
|
backgroundImageStyle,
|
|
};
|
|
}
|