mfe-customer
Version:
Subscription page with Checkout
79 lines (69 loc) • 2.26 kB
JSX
import React, { useState, useEffect, useRef } from "react";
import RequestService from "@ozoneuniverse/mfe-components/dist/components/request-manager";
import { RenderManager } from "@ozoneuniverse/mfe-components/dist/components/managers/renderManager";
import Scene from "@ozoneuniverse/mfe-components/dist/components/models/scene";
import { querys } from "../../querys";
export const withScene = (Component) => (props) => {
const { metaverseName, metaverseSceneName } = props.computedMatch.params;
const canvasRef = useRef(null);
const canvas3DRef = useRef(null);
const [renderManager, setRenderManager] = useState(null);
const getSceneData = (data) => {
let dataOut = {};
for (let i = 0; i < data.length; i++) {
dataOut[data[i].metaverseUserSceneName] = {
config: {
assetsScene: data[i].assets.map((element) => {
return {
name: element.metaverseUserSceneAssetName,
url: element.metaverseUserSceneAssetUrl,
};
}),
},
classScene: Scene,
};
}
return dataOut;
};
const initScene = () => {
const variables = {
input: {
metaverseWorldName: metaverseName,
},
};
let renderManagerData = {
canvas: canvasRef.current,
canvas3D: canvas3DRef.current,
roomsConfig: [],
defaultScene: "",
mfeConfig: {},
auth: false,
};
RequestService.queryGetGraphQL(
querys["getScenesGuest"],
"getScenesGuest",
variables
).then(async (response) => {
const { success, data } = response.data.getMetaverseUserVisitorScenes;
if (success && data.length > 0) {
renderManagerData.roomsConfig = getSceneData(data);
renderManagerData.defaultScene = data[0].metaverseUserSceneName;
await setRenderManager(new RenderManager(renderManagerData));
} else {
//nothing
}
});
};
useEffect(() => {
initScene();
}, []);
useEffect(() => {
if (renderManager) {
renderManager.renderFirstScene({
idScene: metaverseSceneName,
});
}
}, [renderManager]);
const actionsScene = { canvasRef, canvas3DRef };
return <Component {...props} {...actionsScene} />;
};