move some state over to zustand store
This commit is contained in:
parent
fd6a8f779d
commit
98951e0382
@ -42,17 +42,24 @@ import TipLink from "./components/core/TipLink";
|
|||||||
import SelectAndEditModeToggleButton from "./components/select-and-edit/SelectAndEditModeToggleButton";
|
import SelectAndEditModeToggleButton from "./components/select-and-edit/SelectAndEditModeToggleButton";
|
||||||
import { useAppStore } from "./store/app-store";
|
import { useAppStore } from "./store/app-store";
|
||||||
import KeyboardShortcutBadge from "./components/core/KeyboardShortcutBadge";
|
import KeyboardShortcutBadge from "./components/core/KeyboardShortcutBadge";
|
||||||
|
import { useProjectStore } from "./store/project-store";
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const [appState, setAppState] = useState<AppState>(AppState.INITIAL);
|
const [appState, setAppState] = useState<AppState>(AppState.INITIAL);
|
||||||
const [generatedCode, setGeneratedCode] = useState<string>("");
|
|
||||||
|
|
||||||
const [inputMode, setInputMode] = useState<"image" | "video">("image");
|
const {
|
||||||
|
inputMode,
|
||||||
|
setInputMode,
|
||||||
|
isImportedFromCode,
|
||||||
|
setIsImportedFromCode,
|
||||||
|
referenceImages,
|
||||||
|
setReferenceImages,
|
||||||
|
generatedCode,
|
||||||
|
setGeneratedCode,
|
||||||
|
} = useProjectStore();
|
||||||
|
|
||||||
const [referenceImages, setReferenceImages] = useState<string[]>([]);
|
|
||||||
const [executionConsole, setExecutionConsole] = useState<string[]>([]);
|
const [executionConsole, setExecutionConsole] = useState<string[]>([]);
|
||||||
const [updateInstruction, setUpdateInstruction] = useState("");
|
const [updateInstruction, setUpdateInstruction] = useState("");
|
||||||
const [isImportedFromCode, setIsImportedFromCode] = useState<boolean>(false);
|
|
||||||
|
|
||||||
const textareaRef = useRef<HTMLTextAreaElement>(null);
|
const textareaRef = useRef<HTMLTextAreaElement>(null);
|
||||||
|
|
||||||
|
|||||||
45
frontend/src/store/project-store.ts
Normal file
45
frontend/src/store/project-store.ts
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import { create } from "zustand";
|
||||||
|
import { History } from "../components/history/history_types";
|
||||||
|
|
||||||
|
// Store for app-wide state
|
||||||
|
interface ProjectStore {
|
||||||
|
// Inputs
|
||||||
|
inputMode: "image" | "video";
|
||||||
|
setInputMode: (mode: "image" | "video") => void;
|
||||||
|
isImportedFromCode: boolean;
|
||||||
|
setIsImportedFromCode: (imported: boolean) => void;
|
||||||
|
referenceImages: string[];
|
||||||
|
setReferenceImages: (images: string[]) => void;
|
||||||
|
|
||||||
|
// Outputs and other state
|
||||||
|
generatedCode: string;
|
||||||
|
setGeneratedCode: (
|
||||||
|
updater: string | ((currentCode: string) => string)
|
||||||
|
) => void;
|
||||||
|
currentVersion: number | null;
|
||||||
|
setCurrentVersion: (version: number | null) => void;
|
||||||
|
appHistory: History[];
|
||||||
|
setAppHistory: (history: History[]) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useProjectStore = create<ProjectStore>((set) => ({
|
||||||
|
// Inputs and their setters
|
||||||
|
inputMode: "image",
|
||||||
|
setInputMode: (mode) => set({ inputMode: mode }),
|
||||||
|
isImportedFromCode: false,
|
||||||
|
setIsImportedFromCode: (imported) => set({ isImportedFromCode: imported }),
|
||||||
|
referenceImages: [],
|
||||||
|
setReferenceImages: (images) => set({ referenceImages: images }),
|
||||||
|
|
||||||
|
// Outputs and other state
|
||||||
|
generatedCode: "",
|
||||||
|
setGeneratedCode: (updater) =>
|
||||||
|
set((state) => ({
|
||||||
|
generatedCode:
|
||||||
|
typeof updater === "function" ? updater(state.generatedCode) : updater,
|
||||||
|
})),
|
||||||
|
currentVersion: null,
|
||||||
|
setCurrentVersion: (version) => set({ currentVersion: version }),
|
||||||
|
appHistory: [],
|
||||||
|
setAppHistory: (history) => set({ appHistory: history }),
|
||||||
|
}));
|
||||||
Loading…
Reference in New Issue
Block a user