diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index f22d788a..f909b2cb 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -503,6 +503,7 @@ const Assesment = ({ discoverStart }) => { localStorage.setItem("sessionId", contentSessionId); if (discoverStart && username && !localStorage.getItem("virtualId")) { (async () => { + try { setLocalData("profileName", username); const usernameDetails = await axios.post( `${process.env.REACT_APP_VIRTUAL_ID_HOST}/${config.URLS.GET_VIRTUAL_ID}?username=${username}` @@ -536,11 +537,21 @@ const Assesment = ({ discoverStart }) => { setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); dispatch(setVirtualId(usernameDetails?.data?.result?.virtualID)); + } + catch (error) { + setOpenMessageDialog({ + message: + "An error occurred. Please try again later.", + isError: true, + dontShowHeader: true + }); + } })(); } else { (async () => { const virtualId = getLocalData("virtualId"); const language = lang; + try { const getMilestoneDetails = await axios.get( `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${language}` ); @@ -559,12 +570,32 @@ const Assesment = ({ discoverStart }) => { sessionId = uniqueId(); localStorage.setItem("sessionId", sessionId) } + } + catch(err){ + setOpenMessageDialog({ + message: + "An error occurred. Please try again later.", + isError: true, + dontShowHeader:true + }); + } + if (virtualId) { + try{ + let sessionId = getLocalData("sessionId"); const getPointersDetails = await axios.get( `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); + }catch(err){ + setOpenMessageDialog({ + message: + "Error getting pointer details", + isError: true, + dontShowHeader:true + }); + } } })(); } @@ -618,6 +649,9 @@ const Assesment = ({ discoverStart }) => { message={openMessageDialog.message} closeDialog={() => { setOpenMessageDialog(""); + if (openMessageDialog.isError) { + window.location.reload(); + } }} isError={openMessageDialog.isError} dontShowHeader={openMessageDialog.dontShowHeader} diff --git a/src/components/AssesmentEnd/AssesmentEnd.jsx b/src/components/AssesmentEnd/AssesmentEnd.jsx index db5a1456..774948d5 100644 --- a/src/components/AssesmentEnd/AssesmentEnd.jsx +++ b/src/components/AssesmentEnd/AssesmentEnd.jsx @@ -24,11 +24,13 @@ const AssesmentEnd = () => { const [level, setLevel] = useState(""); const [previousLevel, setPreviousLevel] = useState(""); const [points, setPoints] = useState(0); + const [openMessageDialog, setOpenMessageDialog] = useState(""); useEffect(() => { (async () => { let audio = new Audio(LevelCompleteAudio); audio.play(); + try { const virtualId = getLocalData("virtualId"); const lang = getLocalData("lang"); const previous_level = getLocalData("previous_level"); @@ -39,7 +41,7 @@ const AssesmentEnd = () => { const { data } = getMilestoneDetails; setLevel(data.data.milestone_level); setLocalData("userLevel", data.data.milestone_level?.replace("m", "")); - const sessionId = getLocalData("sessionId"); + let sessionId = getLocalData("sessionId"); if (!sessionId){ sessionId = uniqueId(); localStorage.setItem("sessionId", sessionId) @@ -48,6 +50,14 @@ const AssesmentEnd = () => { `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); + }catch (error) { + setOpenMessageDialog({ + message: + "Error fetching data", + isError: true, + dontShowHeader:true + }); + } })(); setTimeout(() => { setShake(false); diff --git a/src/components/DiscoverEnd/DiscoverEnd.jsx b/src/components/DiscoverEnd/DiscoverEnd.jsx index 37e39011..51579f54 100644 --- a/src/components/DiscoverEnd/DiscoverEnd.jsx +++ b/src/components/DiscoverEnd/DiscoverEnd.jsx @@ -14,6 +14,7 @@ import { setLocalData, } from "../../utils/constants"; import config from '../../utils/urlConstants.json'; +import { MessageDialog } from "../Assesment/Assesment"; const sectionStyle = { backgroundImage: `url(${textureImage})`, @@ -32,6 +33,7 @@ const sectionStyle = { const SpeakSentenceComponent = () => { const [shake, setShake] = useState(true); const [level, setLevel] = useState(""); + const [openMessageDialog, setOpenMessageDialog] = useState(""); useEffect(() => { @@ -40,12 +42,21 @@ const SpeakSentenceComponent = () => { audio.play(); const virtualId = getLocalData("virtualId"); const lang = getLocalData("lang"); + try { const getMilestoneDetails = await axios.get( `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` ); const { data } = getMilestoneDetails; setLevel(data.data.milestone_level); setLocalData("userLevel", data.data.milestone_level?.replace("m", "")); + }catch (error) { + setOpenMessageDialog({ + message: + "An error occurred. Please try again later.", + isError: true, + dontShowHeader: true + }); + } })(); setTimeout(() => { setShake(false); @@ -68,6 +79,20 @@ const SpeakSentenceComponent = () => { const navigate = useNavigate(); return ( + <> + {!!openMessageDialog && ( + { + setOpenMessageDialog(""); + if (openMessageDialog.isError) { + window.location.reload(); + } + }} + isError={openMessageDialog.isError} + dontShowHeader={openMessageDialog.dontShowHeader} + /> + )} { + ); }; diff --git a/src/components/DiscoverSentance/DiscoverSentance.jsx b/src/components/DiscoverSentance/DiscoverSentance.jsx index c64ebe3f..6e844cc4 100644 --- a/src/components/DiscoverSentance/DiscoverSentance.jsx +++ b/src/components/DiscoverSentance/DiscoverSentance.jsx @@ -65,6 +65,7 @@ const SpeakSentenceComponent = () => { useEffect(() => { if (!(localStorage.getItem("contentSessionId") !== null)) { (async () => { + try { const sessionId = getLocalData("sessionId"); const virtualId = getLocalData("virtualId"); const lang = getLocalData("lang"); @@ -72,6 +73,14 @@ const SpeakSentenceComponent = () => { `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); + } catch (error) { + setOpenMessageDialog({ + message: + "Error retrieving local data", + isError: true, + dontShowHeader:true + }); + } })(); } }, []); @@ -244,7 +253,12 @@ const SpeakSentenceComponent = () => { } } } catch (error) { - console.log(error); + setOpenMessageDialog({ + message: + "An error occurred. Please try again later.", + isError: true, + dontShowHeader:true + }); } }; @@ -252,12 +266,6 @@ const SpeakSentenceComponent = () => { (async () => { let quesArr = []; try { - // const resSentence = await axios.get(`${process.env.REACT_APP_LEARNER_AI_APP_HOST}/scores/GetContent/sentence/${UserID}`); - // quesArr = [...quesArr, ...(resSentence?.data?.content?.splice(0, 5) || [])]; - // const resWord = await axios.get(`${process.env.REACT_APP_LEARNER_AI_APP_HOST}/scores/GetContent/word/${UserID}`); - // quesArr = [...quesArr, ...(resWord?.data?.content?.splice(0, 5) || [])]; - // const resPara = await axios.get(`${process.env.REACT_APP_LEARNER_AI_APP_HOST}/scores/GetContent/paragraph/${UserID}`); - // quesArr = [...quesArr, ...(resPara?.data?.content || [])]; const lang = getLocalData("lang"); const resAssessment = await axios.post( `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_ASSESSMENT}`, @@ -269,6 +277,16 @@ const SpeakSentenceComponent = () => { const sentences = resAssessment?.data?.data?.find( (elem) => elem.category === "Sentence" ); + + if (!sentences) { + setOpenMessageDialog({ + message: + "No sentences found in assessment data", + isError: true, + dontShowHeader:true + }); + return; + } const resPagination = await axios.get( `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.collectionId}` @@ -279,12 +297,16 @@ const SpeakSentenceComponent = () => { setAssessmentResponse(resAssessment); localStorage.setItem("storyTitle", sentences?.name); quesArr = [...quesArr, ...(resPagination?.data?.data || [])]; - // quesArr[1].contentType = 'image'; - // quesArr[0].contentType = 'phonics'; console.log("quesArr", quesArr); setQuestions(quesArr); } catch (error) { - console.log("err", error); + setOpenMessageDialog({ + message: + "Error fetching assessment", + isError: true, + dontShowHeader:true + }); + return; } })(); }, []); @@ -305,6 +327,9 @@ const SpeakSentenceComponent = () => { closeDialog={() => { setOpenMessageDialog(""); setDisableScreen(false); + if (openMessageDialog.isError) { + window.location.reload(); + } }} isError={openMessageDialog.isError} dontShowHeader={openMessageDialog.dontShowHeader} diff --git a/src/routes/index.js b/src/routes/index.js index 375ea6fc..efa89372 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -56,7 +56,7 @@ const routData = [ ]; // add login route for test rig -if (process.env.REACT_APP_IS_APP_TEST_RIG === 'true') { +if (process.env.REACT_APP_IS_IN_APP_AUTHORISATION === 'true') { routData.push( { id: "route-001", diff --git a/src/utils/VoiceAnalyser.js b/src/utils/VoiceAnalyser.js index 93e43bcc..837462e5 100644 --- a/src/utils/VoiceAnalyser.js +++ b/src/utils/VoiceAnalyser.js @@ -413,6 +413,12 @@ function VoiceAnalyser(props) { } } catch (error) { setLoader(false); + setOpenMessageDialog({ + message: + "Error fetching update learner profile details:", + isError: true, + dontShowHeader:true + }); if(props.handleNext){ props.handleNext(); } @@ -421,7 +427,6 @@ function VoiceAnalyser(props) { } setRecordedAudioBase64(""); setApiResponse("error"); - console.log("err", error); } }; diff --git a/src/utils/constants.js b/src/utils/constants.js index 21fd00f8..1890c456 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -3524,8 +3524,8 @@ export const levelConfig = { { name: "తెలుగు", lang: "te", symbol: "ఈ" } , ]; -const appLanguages = process.env.REACT_APP_IS_APP_LANGUAGES - ? JSON.parse(process.env.REACT_APP_IS_APP_LANGUAGES) +const appLanguages = process.env.REACT_APP_LANGUAGES + ? JSON.parse(process.env.REACT_APP_LANGUAGES) : []; export const languages = AllLanguages.filter(lang => diff --git a/src/views/LoginPage/LoginPage.jsx b/src/views/LoginPage/LoginPage.jsx index ba6cc425..911e5846 100644 --- a/src/views/LoginPage/LoginPage.jsx +++ b/src/views/LoginPage/LoginPage.jsx @@ -4,11 +4,13 @@ import { useNavigate } from 'react-router-dom'; import { Container, Typography, TextField, Button, Grid } from '@mui/material'; import config from "../../utils/urlConstants.json"; import './LoginPage.css'; // Import the CSS file +import { MessageDialog } from '../../components/Assesment/Assesment'; const LoginPage = () => { const navigate = useNavigate(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); + const [openMessageDialog, setOpenMessageDialog] = useState(""); const handleSubmit = async (e) => { e.preventDefault(); @@ -20,7 +22,7 @@ const LoginPage = () => { try { const usernameDetails = await axios.post( - `${process.env.REACT_APP_VIRTUAL_ID_HOST}/${config.URLS.GET_VIRTUAL_ID}?username=${username}` + `${process.env.REACT_APP_VIRTUAL_ID_HOST}/${config. URLS.GET_VIRTUAL_ID}?username=${username}` ); if (usernameDetails?.data?.result?.virtualID) { @@ -31,12 +33,31 @@ const LoginPage = () => { alert("Enter correct username and password"); } } catch (error) { - console.error("Error occurred:", error); - alert("An error occurred. Please try again later."); + setOpenMessageDialog({ + message: + "An error occurred. Please try again later.", + isError: true, + dontShowHeader:true + }); } }; return ( + <> + {!!openMessageDialog && ( + { + setOpenMessageDialog(""); + if (openMessageDialog.isError) { + window.location.reload(); + } + }} + isError={openMessageDialog.isError} + dontShowHeader={openMessageDialog.dontShowHeader} + /> + )} +
@@ -74,6 +95,7 @@ const LoginPage = () => {
+ ); }; diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx index ef33e3d7..72c83d36 100644 --- a/src/views/Practice/Practice.jsx +++ b/src/views/Practice/Practice.jsx @@ -274,12 +274,16 @@ const Practice = () => { gameOver({ link: "/assesment-end" }, true); return; } - catch(e){ - // catch error + catch (err) { + setOpenMessageDialog({ + message: + "Error posting lesson progress data", + isError: true, + dontShowHeader:true + }); } } - // navigate("/assesment-end"); } let quesArr = []; @@ -358,7 +362,12 @@ const Practice = () => { setProgressData(practiceProgress[virtualId]); } } catch (error) { - console.log(error); + setOpenMessageDialog({ + message: + "Error posting lesson progress data", + isError: true, + dontShowHeader:true + }); } }; @@ -495,6 +504,12 @@ const Practice = () => { setLoading(false); } catch (error) { setLoading(false); + setOpenMessageDialog({ + message: + "Content Unavailable", + isError: true, + dontShowHeader:true + }); console.log("err", error); } }; @@ -520,7 +535,7 @@ const Practice = () => { currentPracticeStep: newCurrentPracticeStep, fromBack: true, }; - + try { await axios.post( `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { @@ -563,6 +578,15 @@ const Practice = () => { }, 1000); setCurrentQuestion(practiceProgress[virtualId]?.currentQuestion || 0); setLocalData("practiceProgress", JSON.stringify(practiceProgress)); + } + catch (err) { + setOpenMessageDialog({ + message: + "Error posting lesson progress data", + isError: true, + dontShowHeader:true + }); + } } else { if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { navigate("/"); @@ -876,6 +900,9 @@ const Practice = () => { closeDialog={() => { setOpenMessageDialog(""); setDisableScreen(false); + if (openMessageDialog.isError) { + window.location.reload(); + } }} isError={openMessageDialog.isError} dontShowHeader={openMessageDialog.dontShowHeader}