feat: generation of modules from the server, moved modules fields from the general tab

This commit is contained in:
2025-03-05 16:56:39 +04:00
parent 5d19d254da
commit 56135ae10c
85 changed files with 924 additions and 367 deletions

View File

@@ -0,0 +1,54 @@
import React, { createContext, FC, useContext, useEffect, useState } from "react";
import { useProjectsContext } from "../../contexts/ProjectsContext.tsx";
import { MODULES } from "../modules.tsx";
import { Module } from "../types.tsx";
type ModulesContextState = {
modules: Module[];
};
const ModulesContext = createContext<ModulesContextState | undefined>(
undefined,
);
const useModulesContextState = () => {
const { selectedProject } = useProjectsContext();
const [modules, setModules] = useState<Module[]>([]);
useEffect(() => {
const modules = selectedProject?.modules ?? [];
const projectModules = modules.map(module => {
return MODULES[module.key];
}) ?? [];
setModules(projectModules);
}, [selectedProject?.id]);
return {
modules,
};
};
type CardPageContextProviderProps = {
children: React.ReactNode;
};
export const ModulesContextProvider: FC<CardPageContextProviderProps> = ({ children }) => {
const state = useModulesContextState();
return (
<ModulesContext.Provider value={state}>
{children}
</ModulesContext.Provider>
);
};
export const useModulesContext = () => {
const context = useContext(ModulesContext);
if (!context) {
throw new Error(
"useModulesContext must be used within a ModulesContextProvider",
);
}
return context;
};