mfe-customer
Version:
Subscription page with Checkout
139 lines (131 loc) • 4.13 kB
JSX
import React, { useState } from "react";
import RequestService from "@ozoneuniverse/mfe-components/dist/components/request-manager";
import { querys } from "../../querys";
import { useParams, useHistory } from "react-router-dom";
export const withLogin = (Component) => (props) => {
let history = useHistory();
const { metaverseName } = useParams();
const [errorLogin, setErrorLogin] = useState(false);
const [isLogged, setIsLogged] = useState(false);
const onLogin = (values) => {
setErrorLogin(false);
const { metaverse } = values;
const variables = {
input: {
email: metaverse.email,
password: metaverse.password,
metaverseWorldName: metaverseName,
},
};
RequestService.makeMutation(
querys["getOwnerLogin"],
"getOwnerLogin",
variables
).then((response) => {
const { error, data } = response.data.metaverseOwnerLogin;
if (!error) {
RequestService.queryGetGraphQL(querys["getScenes"]).then((response) => {
const { success, data } = response.data.getMetaverseUserScenes;
if (success && data.length > 0) {
history.push(
`/metaverse/${metaverseName}/${data[0].metaverseUserSceneName}`
);
} else {
}
});
setIsLogged(true);
} else {
//console.error('error Login fail');
setErrorLogin(true);
}
});
};
const onSelectScene = (values) => {
const nameScene = "test";
const variables = {
input: {
metaverseUserSceneName: nameScene,
metaverseSceneId: `${metaverseName}-${nameScene}`,
},
};
RequestService.makeMutation(querys["addScene"], "addScene", variables).then(
(response) => {
const { success, data } = response.data.addMetaverseUserScene;
if (success && data) {
const { metaverseUserSceneId, metaverseUserSceneName } = data;
addAssets({ metaverseUserSceneId, metaverseUserSceneName }).then(
() => {
history.push(
`/metaverse/${metaverseName}/${metaverseUserSceneName}`
);
}
);
} else {
}
}
);
};
const addAssets = ({ metaverseUserSceneId, metaverseUserSceneName }) => {
const assets = [
{
url: "AssetPack.gltf",
name: "AssetPack",
},
{
url: "HighPack.gltf",
name: "HighPack",
},
{
url: "SignPack.gltf",
name: "SignPack",
},
{
url: "TeleportFloor.gltf",
name: "TeleportFloor",
},
];
const baseURL =
"https://assets2022.s3.amazonaws.com/Dragon/demo/artGallery/";
return Promise.all(
assets.map((element) => {
return new Promise((resolve, reject) => {
RequestService.makeMutation(
querys["addAssetIntoScene"],
"addAssetIntoScene",
{
input: {
metaverseUserSceneId,
metaverseUserSceneAssetName: element.name,
metaverseUserSceneAssetUrl: baseURL + element.url,
metaverseUserSceneAssetRotationX: 0,
metaverseUserSceneAssetRotationY: 0,
metaverseUserSceneAssetRotationZ: 0,
metaverseUserSceneAssetScaleX: 1,
metaverseUserSceneAssetScaleY: 1,
metaverseUserSceneAssetScaleZ: 1,
metaverseUserSceneAssetPositionX: 0,
metaverseUserSceneAssetPositionY: 0,
metaverseUserSceneAssetPositionZ: 0,
},
}
).then((response) => {
// const { success, data } = response.data.addMetaverseUserSceneAsset;
// if (success && data) {
// console.log("asset add", response);
// } else {
// }
resolve(true);
});
});
})
);
};
const actionsLogin = {
metaverseName,
onLogin,
errorLogin,
isLogged,
onSelectScene,
};
return <Component {...props} {...actionsLogin} />;
};