Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IssueId #218981 feat Implement Exception Handling for Unavailable Con… #99

Open
wants to merge 1 commit into
base: all-2.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 63 additions & 36 deletions src/components/Assesment/Assesment.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -503,40 +503,58 @@ const Assesment = ({ discoverStart }) => {
localStorage.setItem("sessionId", contentSessionId);
if (discoverStart && username && !localStorage.getItem("virtualId")) {
(async () => {
setLocalData("profileName", username);
const usernameDetails = await axios.post(
`${process.env.REACT_APP_VIRTUAL_ID_HOST}/${config.URLS.GET_VIRTUAL_ID}?username=${username}`
);
const getMilestoneDetails = await axios.get(
`${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${usernameDetails?.data?.result?.virtualID}?language=${lang}`
);

localStorage.setItem(
"getMilestone",
JSON.stringify({ ...getMilestoneDetails.data })
);
setLevel(
getMilestoneDetails?.data.data?.milestone_level?.replace("m", "")
);
localStorage.setItem(
"virtualId",
usernameDetails?.data?.result?.virtualID
);
let session_id = localStorage.getItem("sessionId");

if (!session_id){
session_id = uniqueId();
localStorage.setItem("sessionId", session_id)
try {
setLocalData("profileName", username);

const usernameDetails = await axios.post(
`${process.env.REACT_APP_VIRTUAL_ID_HOST}/${config.URLS.GET_VIRTUAL_ID}?username=${username}`
);

try {
const getMilestoneDetails = await axios.get(
`${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${usernameDetails?.data?.result?.virtualID}?language=${lang}`
);

localStorage.setItem(
"getMilestone",
JSON.stringify({ ...getMilestoneDetails.data })
);
setLevel(
getMilestoneDetails?.data.data?.milestone_level?.replace("m", "")
);
localStorage.setItem(
"virtualId",
usernameDetails?.data?.result?.virtualID
);

let session_id = localStorage.getItem("sessionId");

if (!session_id) {
session_id = uniqueId();
localStorage.setItem("sessionId", session_id);
}

localStorage.setItem("lang", lang || "ta");

try {
const getPointersDetails = await axios.get(
`${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${usernameDetails?.data?.result?.virtualID}/${session_id}?language=${lang}`
);

setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0);
} catch (error) {
console.error("Error fetching pointer details:", error);
}

dispatch(setVirtualId(usernameDetails?.data?.result?.virtualID));
} catch (error) {
console.error("Error fetching milestone details:", error);
}
} catch (error) {
console.error("Error fetching username details:", error);
ajinkyapandetekdi marked this conversation as resolved.
Show resolved Hide resolved
}

localStorage.setItem("lang", lang || "ta");
const getPointersDetails = await axios.get(
`${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${usernameDetails?.data?.result?.virtualID}/${session_id}?language=${lang}`
);
setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0);

dispatch(setVirtualId(usernameDetails?.data?.result?.virtualID));
})();

} else {
(async () => {
const virtualId = getLocalData("virtualId");
Expand All @@ -561,10 +579,19 @@ const Assesment = ({ discoverStart }) => {
}

if (virtualId) {
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);
try{
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
});
}
}
})();
}
Expand Down
45 changes: 27 additions & 18 deletions src/components/AssesmentEnd/AssesmentEnd.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,35 @@ const AssesmentEnd = () => {
(async () => {
let audio = new Audio(LevelCompleteAudio);
audio.play();
const virtualId = getLocalData("virtualId");
const lang = getLocalData("lang");
const previous_level = getLocalData("previous_level");
setPreviousLevel(previous_level?.replace("m", ""));
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", ""));
const sessionId = getLocalData("sessionId");
if (!sessionId){
sessionId = uniqueId();
localStorage.setItem("sessionId", sessionId)

try {
const virtualId = getLocalData("virtualId");
const lang = getLocalData("lang");
const previous_level = getLocalData("previous_level");
setPreviousLevel(previous_level?.replace("m", ""));

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", ""));

let sessionId = getLocalData("sessionId");
if (!sessionId) {
sessionId = uniqueId();
localStorage.setItem("sessionId", 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 (error) {
console.error("Error fetching data:", error);
}
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);
})();

setTimeout(() => {
setShake(false);
}, 4000);
Expand Down
77 changes: 49 additions & 28 deletions src/components/DiscoverSentance/DiscoverSentance.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,24 @@ const SpeakSentenceComponent = () => {
}, [currentQuestion]);

useEffect(() => {
if (!(localStorage.getItem("contentSessionId") !== null)) {
if (localStorage.getItem("contentSessionId") === null) {
(async () => {
const sessionId = getLocalData("sessionId");
const virtualId = getLocalData("virtualId");
const lang = getLocalData("lang");
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);
try {
const sessionId = getLocalData("sessionId");
const virtualId = getLocalData("virtualId");
const lang = getLocalData("lang");

try {
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 (error) {
console.error("Error fetching pointer details:", error);
}
} catch (error) {
console.error("Error retrieving local data:", error);
}
})();
}
}, []);
Expand Down Expand Up @@ -252,42 +261,54 @@ 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}`,
{
...{ tags: ["ASER"], language: lang },
}
);

let resAssessment;
try {
resAssessment = await axios.post(
`${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_ASSESSMENT}`,
{
...{ tags: ["ASER"], language: lang },
}
);
} catch (err) {
console.error("Error fetching assessment:", err);
return;
}

const sentences = resAssessment?.data?.data?.find(
(elem) => elem.category === "Sentence"
);

if (!sentences) {
console.error("No sentences found in assessment data");
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}`
);
let resPagination;
try {
resPagination = await axios.get(
`${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.collectionId}`
);
} catch (err) {
console.error("Error fetching pagination:", err);
return; // Exit if there's an error fetching the pagination
}

setCurrentContentType("Sentence");
setTotalSyllableCount(resPagination?.data?.totalSyllableCount)
setTotalSyllableCount(resPagination?.data?.totalSyllableCount);
setCurrentCollectionId(sentences?.collectionId);
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);
console.error("An unexpected error occurred:", error);
}
})();
}, []);

const handleBack = () => {
const destination = process.env.REACT_APP_IS_APP_IFRAME === 'true' ? "/" : "/discover-start";
navigate(destination);
Expand Down
47 changes: 44 additions & 3 deletions src/utils/VoiceAnalyser.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,57 @@ function VoiceAnalyser(props) {
}, [props.contentId]);

const playAudio = (val) => {
const { originalText } = props;
try {
var audio = new Audio(
const audio = new Audio(
recordedAudio
? recordedAudio
: props.contentId
? `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${props.contentId}.wav`
: AudioPath[1][10]
);
set_temp_audio(audio);
setPauseAudio(val);

audio.addEventListener('canplaythrough', () => {
set_temp_audio(audio);
setPauseAudio(val);
audio.play();
});

audio.addEventListener('error', (err) => {
console.error('Audio error: ', err);

const lang = localStorage.getItem('lang') || 'en';
let voiceLang = 'en-US';

if (lang === 'hi') {
voiceLang = 'hi-IN';
} else if (lang === 'en') {
voiceLang = 'en-US';
}

if ('speechSynthesis' in window) {
const synth = window.speechSynthesis;
const utterance = new SpeechSynthesisUtterance(originalText);
const voices = synth.getVoices();

// Find a voice that matches the language preference
const selectedVoice = voices.find((voice) => voice.lang === voiceLang);
if (selectedVoice) {
utterance.voice = selectedVoice;
} else {
console.error(`No voice found for language: ${voiceLang}`);
}

utterance.onend = () => {
setPauseAudio(false);
};

synth.speak(utterance);
setPauseAudio(val);
} else {
console.error('Web Speech API is not supported in this browser.');
}
});
ajinkyapandetekdi marked this conversation as resolved.
Show resolved Hide resolved
} catch (err) {
console.log(err);
}
Expand Down
Loading