refactor: simplify project data handling in LoadingPage, Controls, and Scene components

This commit is contained in:
Jerald-Golden-B 2025-06-19 15:23:22 +05:30
parent 8c6c068b17
commit a6d13940cc
3 changed files with 32 additions and 43 deletions

View File

@ -15,27 +15,23 @@ const LoadingPage: React.FC<LoadingPageProps> = ({ progress }) => {
const { projectName, setProjectName } = useProjectName();
const { projectId } = useParams();
const { comparisonProduct } = useComparisonProduct();
const { userId, organization, email } = getUserData();
const { userId, organization } = getUserData();
const validatedProgress = Math.min(100, Math.max(0, progress));
const generateThumbnail = async () => {
try {
if (!email || !userId) {
console.error("User data not found in localStorage");
return;
}
const projects = await getAllProjects(userId, organization);
const filterProject = projects?.Projects.find(
(val: any) => val.projectUuid === projectId || val._id === projectId
);
setProjectName(filterProject.projectName);
} catch { }
};
useEffect(() => {
generateThumbnail();
if (!userId) return;
getAllProjects(userId, organization).then((projects) => {
const filterProject = projects?.Projects.find((val: any) => val.projectUuid === projectId || val._id === projectId);
if (filterProject) {
setProjectName(filterProject.projectName);
}
}).catch((error) => {
console.log(error);
})
}, []);
return (
<RenderOverlay>
<div

View File

@ -22,7 +22,7 @@ export default function Controls() {
const { socket } = useSocketStore();
const state = useThree();
const { projectId } = useParams();
const { userId, organization, email } = getUserData();
const { userId, organization } = getUserData();
useEffect(() => {
if (controlsRef.current) {
@ -30,7 +30,6 @@ export default function Controls() {
(controlsRef.current as any).mouseButtons.right = CONSTANTS.thirdPersonControls.rightMouse;
}
getCamera(organization, userId, projectId).then((data) => {
// console.log('data: ', data);
if (data && data.position && data.target) {
@ -53,7 +52,6 @@ export default function Controls() {
localStorage.setItem("cameraPosition", JSON.stringify(new THREE.Vector3(...CONSTANTS.threeDimension.defaultPosition)));
localStorage.setItem("controlTarget", JSON.stringify(new THREE.Vector3(...CONSTANTS.threeDimension.defaultTarget)));
const camData = {
organization,
userId: userId,

View File

@ -30,31 +30,26 @@ export default function Scene({ layout }: { readonly layout: 'Main Layout' | 'Co
const { activeModule } = useModuleStore();
const { loadingProgress } = useLoadingProgress();
const handleUpdatingProject = async () => {
if (!projectId && loadingProgress > 1) return;
try {
const projects = await getAllProjects(userId, organization);
let projectUuid = projects.Projects.find(
(val: any) => val.projectUuid === projectId || val._id === projectId
);
const canvas =
document.getElementById("sceneCanvas")?.children[0]?.children[0];
const screenshotDataUrl = (canvas as HTMLCanvasElement)?.toDataURL("image/png");
const updateProjects = {
projectId: projectUuid,
organization,
userId,
projectName: projectUuid.projectName,
thumbnail: screenshotDataUrl,
};
if (projectSocket) {
projectSocket.emit("v1:project:update", updateProjects);
}
} catch (error) { }
};
useEffect(() => {
handleUpdatingProject()
if (!projectId && loadingProgress > 1) return;
getAllProjects(userId, organization)
.then((projects) => {
let project = projects.Projects.find((val: any) => val.projectUuid === projectId || val._id === projectId);
const canvas = document.getElementById("sceneCanvas")?.children[0]?.children[0];
const screenshotDataUrl = (canvas as HTMLCanvasElement)?.toDataURL("image/png");
const updateProjects = {
projectId: project.projectUuid,
organization,
userId,
projectName: project.projectName,
thumbnail: screenshotDataUrl,
};
if (projectSocket) {
projectSocket.emit("v1:project:update", updateProjects);
}
}).catch((err) => {
console.error(err);
});
}, [activeModule, assets, loadingProgress])
return (