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 { projectName, setProjectName } = useProjectName();
const { projectId } = useParams(); const { projectId } = useParams();
const { comparisonProduct } = useComparisonProduct(); const { comparisonProduct } = useComparisonProduct();
const { userId, organization, email } = getUserData(); const { userId, organization } = getUserData();
const validatedProgress = Math.min(100, Math.max(0, progress)); 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(() => { 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 ( return (
<RenderOverlay> <RenderOverlay>
<div <div

View File

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

View File

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