refactor: update backend URL and added conveyor event storing in ackend

This commit is contained in:
2025-04-01 14:25:42 +05:30
parent 6f483baf8d
commit 526befad20
20 changed files with 173 additions and 72 deletions

View File

@@ -32,7 +32,7 @@ const CamModelsGroup = () => {
if (!socket) return;
const organization = email!.split("@")[1].split(".")[0];
socket.on("userConnectRespones", (data: any) => {
socket.on("userConnectResponse", (data: any) => {
if (!groupRef.current) return;
if (data.data.userData.email === email) return;
if (socket.id === data.socketId || organization !== data.organization)
@@ -64,7 +64,11 @@ const CamModelsGroup = () => {
});
});
socket.on("userDisConnectRespones", (data: any) => {
// socket.on("users:online", (data: any) => {
// console.log('users online: ', data);
// })
socket.on("userDisConnectResponse", (data: any) => {
if (!groupRef.current) return;
if (socket.id === data.socketId || organization !== data.organization)
return;
@@ -109,6 +113,15 @@ const CamModelsGroup = () => {
};
}, [socket, activeUsers]);
// useEffect(() => {
// console.log(activeUsers);
// }, [activeUsers])
// useEffect(() => {
// console.log(models);
// }, [models])
useFrame(() => {
if (!groupRef.current) return;
Object.keys(models).forEach((uuid) => {
@@ -142,7 +155,7 @@ const CamModelsGroup = () => {
const filteredData = data.cameraDatas.filter(
(camera: any) => camera.userData.email !== email
);
let a:any = [];
let a: any = [];
if (filteredData.length > 0) {
loader.load(camModel, (gltf) => {
const newCams = filteredData.map((cam: any) => {

View File

@@ -82,14 +82,14 @@ export default function SocketResponses({
})
socket.on('model-asset:response:updates', async (data: any) => {
console.log('data: ', data);
// console.log('data: ', data);
if (socket.id === data.socketId) {
return
}
if (organization !== data.organization) {
return
}
if (data.message === "flooritem created") {
if (data.message === "Model created successfully") {
const loader = new GLTFLoader();
const dracoLoader = new DRACOLoader();
@@ -101,10 +101,61 @@ export default function SocketResponses({
isTempLoader.current = true;
const cachedModel = THREE.Cache.get(data.data.modelname);
let url;
if (cachedModel) {
// console.log(`Getting ${data.data.modelname} from cache`);
url = URL.createObjectURL(cachedModel);
const model = cachedModel.scene.clone();
model.uuid = data.data.modeluuid;
model.userData = { name: data.data.modelname, modelId: data.data.modelFileID };
model.position.set(...data.data.position as [number, number, number]);
model.rotation.set(data.data.rotation.x, data.data.rotation.y, data.data.rotation.z);
model.scale.set(...CONSTANTS.assetConfig.defaultScaleBeforeGsap);
model.traverse((child: any) => {
if (child.isMesh) {
// Clone the material to ensure changes are independent
// child.material = child.material.clone();
child.castShadow = true;
child.receiveShadow = true;
}
});
itemsGroup.current.add(model);
if (tempLoader.current) {
tempLoader.current.material.dispose();
tempLoader.current.geometry.dispose();
itemsGroup.current.remove(tempLoader.current);
tempLoader.current = undefined;
}
const newFloorItem: Types.FloorItemType = {
modeluuid: data.data.modeluuid,
modelname: data.data.modelname,
modelfileID: data.data.modelfileID,
position: [...data.data.position as [number, number, number]],
rotation: {
x: model.rotation.x,
y: model.rotation.y,
z: model.rotation.z,
},
isLocked: data.data.isLocked,
isVisible: data.data.isVisible,
};
if (data.data.eventData) {
newFloorItem.eventData = data.data.eventData;
}
setFloorItems((prevItems: any) => {
const updatedItems = [...(prevItems || []), newFloorItem];
localStorage.setItem("FloorItems", JSON.stringify(updatedItems));
return updatedItems;
});
gsap.to(model.position, { y: data.data.position[1], duration: 1.5, ease: 'power2.out' });
gsap.to(model.scale, { x: 1, y: 1, z: 1, duration: 1.5, ease: 'power2.out', onComplete: () => { toast.success("Model Added!") } });
} else {
const indexedDBModel = await retrieveGLTF(data.data.modelname);
if (indexedDBModel) {
@@ -118,7 +169,9 @@ export default function SocketResponses({
}
}
loadModel(url);
if (url) {
loadModel(url);
}
} catch (error) {
console.error('Error fetching asset model:', error);
@@ -168,6 +221,10 @@ export default function SocketResponses({
isVisible: data.data.isVisible,
};
if (data.data.eventData) {
newFloorItem.eventData = data.data.eventData;
}
setFloorItems((prevItems: any) => {
const updatedItems = [...(prevItems || []), newFloorItem];
localStorage.setItem("FloorItems", JSON.stringify(updatedItems));
@@ -183,7 +240,7 @@ export default function SocketResponses({
});
}
} else if (data.message === "flooritems updated") {
} else if (data.message === "Model updated successfully") {
itemsGroup.current.children.forEach((item: THREE.Group) => {
if (item.uuid === data.data.modeluuid) {
item.position.set(...data.data.position as [number, number, number]);
@@ -212,14 +269,14 @@ export default function SocketResponses({
}
})
socket.on('FloorItemsDeleteResponse', (data: any) => {
socket.on('model-asset:response:updates', (data: any) => {
if (socket.id === data.socketId) {
return
}
if (organization !== data.organization) {
return
}
if (data.message === "flooritem deleted") {
if (data.message === "Model deleted successfully") {
const deletedUUID = data.data.modeluuid;
let items = JSON.parse(localStorage.getItem("FloorItems")!);
@@ -746,7 +803,6 @@ export default function SocketResponses({
return
}
if (data.message === "zone deleted") {
console.log('data: ', data);
const updatedZones = zones.filter((zone: any) => zone.zoneId !== data.data.zoneId);
setZones(updatedZones);
@@ -769,7 +825,7 @@ export default function SocketResponses({
return () => {
socket.off('zone:response:updates');
socket.off('zone:response:updates');
socket.off('zone:response:delete');
};
}, [socket, zones, zonePoints])