From 7b427ce4286fc91436a91ab1ab2d791e0053c20d Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Thu, 21 Nov 2024 18:27:33 +0530 Subject: [PATCH 1/2] Issusid #230765 fix: Sonar Lint Issue in My learning Journey --- src/components/Assesment/Assesment.jsx | 55 ++- src/components/AssesmentEnd/AssesmentEnd.jsx | 9 +- src/components/DiscoverEnd/DiscoverEnd.jsx | 30 +- src/components/Layouts.jsx/MainLayout.jsx | 3 + src/components/Practice/Mechanics1.jsx | 159 +++++++-- src/components/Practice/Mechanics2.jsx | 130 +++++-- src/components/Practice/Mechanics3.jsx | 3 + src/components/Practice/Mechanics5.jsx | 8 +- src/services/telementryService.js | 353 ++++++++++--------- src/utils/VoiceAnalyser.js | 2 +- src/views/HomePage/HomePage.jsx | 4 +- 11 files changed, 473 insertions(+), 283 deletions(-) diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index 43c9212f..e089467b 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -1,12 +1,6 @@ import MainLayout from "../Layouts.jsx/MainLayout"; import assessmentBackground from "../../assets/images/assessmentBackground.png"; -import { - Box, - Grid, - IconButton, - Tooltip, - Typography, -} from "../../../node_modules/@mui/material/index"; +import { Box, Grid, IconButton, Tooltip, Typography } from "@mui/material"; import LogoutImg from "../../assets/images/logout.svg"; import { styled } from "@mui/material/styles"; import { @@ -20,13 +14,12 @@ import { setLocalData, } from "../../utils/constants"; import practicebg from "../../assets/images/practice-bg.svg"; -import { useNavigate } from "../../../node_modules/react-router-dom/dist/index"; -import { useEffect, useState } from "react"; -import axios from "../../../node_modules/axios/index"; +import { useNavigate } from "react-router-dom"; +import React, { useEffect, useState } from "react"; +import axios from "axios"; // import { useDispatch } from 'react-redux'; import { setVirtualId } from "../../store/slices/user.slice"; import { useDispatch, useSelector } from "react-redux"; -import React from "react"; import desktopLevel1 from "../../assets/images/desktopLevel1.png"; import desktopLevel2 from "../../assets/images/desktopLevel2.png"; import desktopLevel3 from "../../assets/images/desktopLevel3.jpg"; @@ -45,8 +38,14 @@ import panda from "../../assets/images/panda.svg"; import cryPanda from "../../assets/images/cryPanda.svg"; import { uniqueId } from "../../services/utilService"; import { end } from "../../services/telementryService"; +import PropTypes from "prop-types"; export const LanguageModal = ({ lang, setLang, setOpenLangModal }) => { + LanguageModal.propTypes = { + lang: PropTypes.any, + setLang: PropTypes.any, + setOpenLangModal: PropTypes.any, + }; const [selectedLang, setSelectedLang] = useState(lang); return ( ); }; +MessageDialog.propTypes = { + closeDialog: PropTypes.func, + dontShowHeader: PropTypes.bool, + isError: PropTypes.any, + message: PropTypes.string, +}; export const ProfileHeader = ({ setOpenLangModal, @@ -423,7 +428,14 @@ export const ProfileHeader = ({ {handleBack && ( - back + back )} @@ -440,10 +452,14 @@ export const ProfileHeader = ({ > profile-pic + ); }; +ProfileHeader.propTypes = { + points: PropTypes.number, + setOpenLangModal: PropTypes.func, + handleBack: PropTypes.func, + profileName: PropTypes.string, + lang: PropTypes.string, +}; const Assesment = ({ discoverStart }) => { let username; if (localStorage.getItem("token") !== null) { let jwtToken = localStorage.getItem("token"); - var userDetails = jwtDecode(jwtToken); + let userDetails = jwtDecode(jwtToken); username = userDetails.student_name; setLocalData("profileName", username); } @@ -813,4 +836,8 @@ const Assesment = ({ discoverStart }) => { ); }; +Assesment.propTypes = { + discoverStart: PropTypes.bool, +}; + export default Assesment; diff --git a/src/components/AssesmentEnd/AssesmentEnd.jsx b/src/components/AssesmentEnd/AssesmentEnd.jsx index e3b1001a..98141350 100644 --- a/src/components/AssesmentEnd/AssesmentEnd.jsx +++ b/src/components/AssesmentEnd/AssesmentEnd.jsx @@ -1,5 +1,5 @@ import MainLayout from "../Layouts.jsx/MainLayout"; -import { Box } from "@mui/material"; +import { Box, Typography } from "@mui/material"; import { AssesmentCompletePlane, AverageMood, @@ -9,14 +9,13 @@ import { setLocalData, } from "../../utils/constants"; import homeBackground from "../../assets/images/homeBackground.png"; -import { Typography } from "../../../node_modules/@mui/material/index"; import { useNavigate } from "react-router-dom"; import axios from "axios"; import { useEffect, useState } from "react"; import LevelCompleteAudio from "../../assets/audio/levelComplete.wav"; import { ProfileHeader } from "../Assesment/Assesment"; import desktopLevel5 from "../../assets/images/assesmentComplete.png"; -import config from '../../utils/urlConstants.json'; +import config from "../../utils/urlConstants.json"; import { uniqueId } from "../../services/utilService"; const AssesmentEnd = () => { @@ -40,9 +39,9 @@ const AssesmentEnd = () => { setLevel(data.data.milestone_level); setLocalData("userLevel", data.data.milestone_level?.replace("m", "")); let sessionId = getLocalData("sessionId"); - if (!sessionId){ + if (!sessionId) { sessionId = uniqueId(); - localStorage.setItem("sessionId", sessionId) + 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}` diff --git a/src/components/DiscoverEnd/DiscoverEnd.jsx b/src/components/DiscoverEnd/DiscoverEnd.jsx index 37e39011..d51d50af 100644 --- a/src/components/DiscoverEnd/DiscoverEnd.jsx +++ b/src/components/DiscoverEnd/DiscoverEnd.jsx @@ -1,19 +1,15 @@ import { Box, Card, CardContent, IconButton, Typography } from "@mui/material"; import { useEffect, useState } from "react"; import Confetti from "react-confetti"; -import axios from "../../../node_modules/axios/index"; -import { useNavigate } from "../../../node_modules/react-router-dom/dist/index"; +import axios from "axios"; +import { useNavigate } from "react-router-dom"; import LevelCompleteAudio from "../../assets/audio/levelComplete.wav"; import back from "../../assets/images/back-arrow.svg"; import discoverEndLeft from "../../assets/images/discover-end-left.svg"; import discoverEndRight from "../../assets/images/discover-end-right.svg"; import textureImage from "../../assets/images/textureImage.png"; -import { - LetsStart, - getLocalData, - setLocalData, -} from "../../utils/constants"; -import config from '../../utils/urlConstants.json'; +import { LetsStart, getLocalData, setLocalData } from "../../utils/constants"; +import config from "../../utils/urlConstants.json"; const sectionStyle = { backgroundImage: `url(${textureImage})`, @@ -34,7 +30,6 @@ const SpeakSentenceComponent = () => { const [level, setLevel] = useState(""); useEffect(() => { - (async () => { let audio = new Audio(LevelCompleteAudio); audio.play(); @@ -54,10 +49,10 @@ const SpeakSentenceComponent = () => { const handleProfileBack = () => { try { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { - navigate("/") + if (process.env.REACT_APP_IS_APP_IFRAME === "true") { + navigate("/"); } else { - navigate("/discover-start") + navigate("/discover-start"); } } catch (error) { console.error("Error posting message:", error); @@ -77,7 +72,14 @@ const SpeakSentenceComponent = () => { }} > - back + back @@ -132,7 +134,7 @@ const SpeakSentenceComponent = () => { handleProfileBack()} + onClick={handleProfileBack} sx={{ display: "flex", justifyContent: "center", diff --git a/src/components/Layouts.jsx/MainLayout.jsx b/src/components/Layouts.jsx/MainLayout.jsx index 93a17ff5..e3b36bd7 100644 --- a/src/components/Layouts.jsx/MainLayout.jsx +++ b/src/components/Layouts.jsx/MainLayout.jsx @@ -243,6 +243,9 @@ const MainLayout = (props) => { backgroundAddOn )} diff --git a/src/components/Practice/Mechanics1.jsx b/src/components/Practice/Mechanics1.jsx index 9711de7c..5156a947 100644 --- a/src/components/Practice/Mechanics1.jsx +++ b/src/components/Practice/Mechanics1.jsx @@ -1,65 +1,148 @@ -import React from 'react'; -import { Box, Card, CardContent, Button, Typography, IconButton, Divider } from '@mui/material'; -import back from '../../assets/images/back-arrow.svg'; -import speak from '../../assets/images/ic-speak.svg'; -import listen from '../../assets/images/ic-listen.svg'; -import arrow from '../../assets/images/ic-arrow.svg'; -import level from '../../assets/images/level.svg'; -import timer from '../../assets/images/timer.svg'; -import practicebg from '../../assets/images/practice-bg.svg'; +import React from "react"; +import { + Box, + Card, + CardContent, + Button, + Typography, + IconButton, + Divider, +} from "@mui/material"; +import back from "../../assets/images/back-arrow.svg"; +import speak from "../../assets/images/ic-speak.svg"; +import listen from "../../assets/images/ic-listen.svg"; +import arrow from "../../assets/images/ic-arrow.svg"; +import level from "../../assets/images/level.svg"; +import timer from "../../assets/images/timer.svg"; +import practicebg from "../../assets/images/practice-bg.svg"; const sectionStyle = { - width: '100%', - backgroundImage: `url(${practicebg})`, - backgroundSize: 'cover', // Cover the entire viewport - backgroundPosition: 'center center', // Center the image - backgroundRepeat: 'no-repeat', // Do not repeat the image - height: '100vh', - padding: '20px 100px', - boxSizing: 'border-box' + width: "100%", + backgroundImage: `url(${practicebg})`, + backgroundSize: "cover", // Cover the entire viewport + backgroundPosition: "center center", // Center the image + backgroundRepeat: "no-repeat", // Do not repeat the image + height: "100vh", + padding: "20px 100px", + boxSizing: "border-box", }; -const Mechanics1 = ({page, setPage}) => { - +const Mechanics1 = ({ page, setPage }) => { return ( - back + back - + - timer + timer - + Speak the below word - + CAPABILITY - - - - - - - level + + + + level + + - - - ); }; diff --git a/src/components/Practice/Mechanics2.jsx b/src/components/Practice/Mechanics2.jsx index 3ee2e35c..b771981b 100644 --- a/src/components/Practice/Mechanics2.jsx +++ b/src/components/Practice/Mechanics2.jsx @@ -1,62 +1,116 @@ -import React from 'react'; -import { Box, Card, CardContent, Button, Typography, IconButton, Divider } from '@mui/material'; -import back from '../../assets/images/back-arrow.svg'; -import speak from '../../assets/images/ic-speak.svg'; -import arrow from '../../assets/images/ic-arrow.svg'; -import level from '../../assets/images/level.svg'; -import elephant from '../../assets/images/elephant.svg'; -import timer from '../../assets/images/timer.svg'; -import practicebg from '../../assets/images/practice-bg.svg'; +import React from "react"; +import { + Box, + Card, + CardContent, + Button, + Typography, + IconButton, + Divider, +} from "@mui/material"; +import back from "../../assets/images/back-arrow.svg"; +import speak from "../../assets/images/ic-speak.svg"; +import arrow from "../../assets/images/ic-arrow.svg"; +import level from "../../assets/images/level.svg"; +import elephant from "../../assets/images/elephant.svg"; +import timer from "../../assets/images/timer.svg"; +import practicebg from "../../assets/images/practice-bg.svg"; const sectionStyle = { - width: '100%', - backgroundImage: `url(${practicebg})`, - backgroundSize: 'cover', // Cover the entire viewport - backgroundPosition: 'center center', // Center the image - backgroundRepeat: 'no-repeat', // Do not repeat the image - height: '100vh', - padding: '20px 100px', - boxSizing: 'border-box' + width: "100%", + backgroundImage: `url(${practicebg})`, + backgroundSize: "cover", // Cover the entire viewport + backgroundPosition: "center center", // Center the image + backgroundRepeat: "no-repeat", // Do not repeat the image + height: "100vh", + padding: "20px 100px", + boxSizing: "border-box", }; -const Mechanics2 = ({page, setPage}) => { +const Mechanics2 = ({ page, setPage }) => { return ( - back + back - + - timer - - Guess the below image + timer + + Guess the below image - - elephant + + elephant - - - - - - level + + + + level + + - - - - ); }; diff --git a/src/components/Practice/Mechanics3.jsx b/src/components/Practice/Mechanics3.jsx index e89913f0..902c7c88 100644 --- a/src/components/Practice/Mechanics3.jsx +++ b/src/components/Practice/Mechanics3.jsx @@ -272,6 +272,9 @@ const Mechanics2 = ({ height: "clamp(150px, 20vw, 220px)", }} alt="" + width="300" // Set explicit width + height="220" + loading="lazy" /> )} diff --git a/src/components/Practice/Mechanics5.jsx b/src/components/Practice/Mechanics5.jsx index 76121f04..33f3f330 100644 --- a/src/components/Practice/Mechanics5.jsx +++ b/src/components/Practice/Mechanics5.jsx @@ -39,8 +39,6 @@ const Mechanics5 = ({ callUpdateLearner, isShowCase, setEnableNext, - selectedWord, - wordToCheck, setOpenMessageDialog, startShowCase, setStartShowCase, @@ -451,7 +449,6 @@ Mechanics5.propTypes = { setIsNextButtonCalled: PropTypes.func, background: PropTypes.bool, type: PropTypes.any, - words: PropTypes.any, storyLine: PropTypes.number, steps: PropTypes.number, contentId: PropTypes.any, @@ -463,6 +460,11 @@ Mechanics5.propTypes = { gameOverData: PropTypes.any, highlightWords: PropTypes.func, matchedChar: PropTypes.any, + question_audio: PropTypes.any, + parentWords: PropTypes.any, + options: PropTypes.any, + correctness: PropTypes.any, + audio: PropTypes.any, }; export default Mechanics5; diff --git a/src/services/telementryService.js b/src/services/telementryService.js index cd51adbe..edc77deb 100644 --- a/src/services/telementryService.js +++ b/src/services/telementryService.js @@ -1,94 +1,97 @@ -import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry'; +import { CsTelemetryModule } from "@project-sunbird/client-services/telemetry"; -import { uniqueId } from './utilService'; -import { jwtDecode } from '../../node_modules/jwt-decode/build/cjs/index'; +import { uniqueId } from "./utilService"; +import { jwtDecode } from "jwt-decode"; let contentSessionId; let playSessionId; let url; let isBuddyLogin = checkTokenInLocalStorage(); -if (localStorage.getItem('token') !== null) { - let jwtToken = localStorage.getItem('token'); - let userDetails = jwtDecode(jwtToken); +if (localStorage.getItem("token") !== null) { + let jwtToken = localStorage.getItem("token"); + let userDetails = jwtDecode(jwtToken); } function checkTokenInLocalStorage() { - const token = localStorage.getItem('buddyToken'); - return !!token; // Returns true if token is present, false if token is null or undefined + const token = localStorage.getItem("buddyToken"); + return !!token; // Returns true if token is present, false if token is null or undefined } -if (localStorage.getItem('contentSessionId') !== null) { - contentSessionId = localStorage.getItem('contentSessionId'); +if (localStorage.getItem("contentSessionId") !== null) { + contentSessionId = localStorage.getItem("contentSessionId"); } else { - contentSessionId = localStorage.getItem('virtualStorySessionID') || uniqueId(); - localStorage.setItem('allAppContentSessionId', contentSessionId); + contentSessionId = + localStorage.getItem("virtualStorySessionID") || uniqueId(); + localStorage.setItem("allAppContentSessionId", contentSessionId); } let getUrl = window.location.href; -url = getUrl && getUrl.includes('#') && getUrl.split('#')[1].split('/')[1]; +url = getUrl && getUrl.includes("#") && getUrl.split("#")[1].split("/")[1]; export const initialize = async ({ context, config, metadata }) => { - playSessionId = uniqueId(); - if (!CsTelemetryModule.instance.isInitialised) { - await CsTelemetryModule.instance.init({}); - const telemetryConfig = { - config: { - pdata: context.pdata, - env: '', - channel: context.channel, - did: context.did, - authtoken: context.authToken || '', - uid: 'anonymous', - sid: context.sid, - batchsize: process.env.REACT_APP_BATCHSIZE, - mode: context.mode, - host: context.host, - apislug: context.apislug, - endpoint: context.endpoint, - tags: context.tags, - cdata: [ - { id: contentSessionId, type: 'ContentSession' }, - { id: playSessionId, type: 'PlaySession' }, - ], - }, - userOrgDetails: {}, - }; - - try { - await CsTelemetryModule.instance.telemetryService.initTelemetry(telemetryConfig); - } catch (error) { - console.log(':e', error); - } - } -}; + playSessionId = uniqueId(); + if (!CsTelemetryModule.instance.isInitialised) { + await CsTelemetryModule.instance.init({}); + const telemetryConfig = { + config: { + pdata: context.pdata, + env: "", + channel: context.channel, + did: context.did, + authtoken: context.authToken || "", + uid: "anonymous", + sid: context.sid, + batchsize: process.env.REACT_APP_BATCHSIZE, + mode: context.mode, + host: context.host, + apislug: context.apislug, + endpoint: context.endpoint, + tags: context.tags, + cdata: [ + { id: contentSessionId, type: "ContentSession" }, + { id: playSessionId, type: "PlaySession" }, + ], + }, + userOrgDetails: {}, + }; -export const start = (duration) => { try { - CsTelemetryModule.instance.telemetryService.raiseStartTelemetry({ - options: getEventOptions(), - edata: { - type: 'content', - mode: 'play', - stageid: url, - duration: Number((duration / 1e3).toFixed(2)), - dspec: window.navigator.userAgent - }, - }); + await CsTelemetryModule.instance.telemetryService.initTelemetry( + telemetryConfig + ); } catch (error) { - console.log('err', error); + console.log(":e", error); } + } +}; + +export const start = (duration) => { + try { + CsTelemetryModule.instance.telemetryService.raiseStartTelemetry({ + options: getEventOptions(), + edata: { + type: "content", + mode: "play", + stageid: url, + duration: Number((duration / 1e3).toFixed(2)), + dspec: window.navigator.userAgent, + }, + }); + } catch (error) { + console.log("err", error); + } }; export const response = (context, telemetryMode) => { - if (checkTelemetryMode(telemetryMode)) { - CsTelemetryModule.instance.telemetryService.raiseResponseTelemetry( - { - ...context, - }, - getEventOptions(), - ); - } + if (checkTelemetryMode(telemetryMode)) { + CsTelemetryModule.instance.telemetryService.raiseResponseTelemetry( + { + ...context, + }, + getEventOptions() + ); + } }; export const Log = (context, pageid, telemetryMode) => { @@ -114,130 +117,146 @@ export const Log = (context, pageid, telemetryMode) => { }; export const end = (data) => { - CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({ - edata: { - type: 'content', - mode: 'play', - pageid: url, - summary: data?.summary || {}, - duration: data?.duration || '000', - }, - }); + CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({ + edata: { + type: "content", + mode: "play", + pageid: url, + summary: data?.summary || {}, + duration: data?.duration || "000", + }, + }); }; export const interact = (telemetryMode) => { - if (checkTelemetryMode(telemetryMode)) { - CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({ - options: getEventOptions(), - edata: { type: 'TOUCH', subtype: '', pageid: url }, - }); - } + if (checkTelemetryMode(telemetryMode)) { + CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({ + options: getEventOptions(), + edata: { type: "TOUCH", subtype: "", pageid: url }, + }); + } }; export const search = (id) => { - CsTelemetryModule.instance.telemetryService.raiseSearchTelemetry({ - options: getEventOptions(), - edata: { - // Required - type: 'content', // Required. content, assessment, asset - query: id, // Required. Search query string - filters: {}, // Optional. Additional filters - sort: {}, // Optional. Additional sort parameters - correlationid: '', // Optional. Server generated correlation id (for mobile app's telemetry) - size: 0, // Required. Number of search results - topn: [{}], // Required. top N (configurable) results with their score - }, - }); + CsTelemetryModule.instance.telemetryService.raiseSearchTelemetry({ + options: getEventOptions(), + edata: { + // Required + type: "content", // Required. content, assessment, asset + query: id, // Required. Search query string + filters: {}, // Optional. Additional filters + sort: {}, // Optional. Additional sort parameters + correlationid: "", // Optional. Server generated correlation id (for mobile app's telemetry) + size: 0, // Required. Number of search results + topn: [{}], // Required. top N (configurable) results with their score + }, + }); }; export const impression = (currentPage, telemetryMode) => { - if (checkTelemetryMode(telemetryMode)) { - CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry({ - options: getEventOptions(), - edata: { type: 'workflow', subtype: '', pageid: currentPage + '', uri: '' }, - }); - } + if (checkTelemetryMode(telemetryMode)) { + CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry({ + options: getEventOptions(), + edata: { + type: "workflow", + subtype: "", + pageid: currentPage + "", + uri: "", + }, + }); + } }; export const error = (error, data, telemetryMode) => { - if (checkTelemetryMode(telemetryMode)) { - CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({ - options: getEventOptions(), - edata: { - pageid: url, - err: data.err, - errtype: data.errtype, - stacktrace: error.toString() || '', - }, - }); - } + if (checkTelemetryMode(telemetryMode)) { + CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({ + options: getEventOptions(), + edata: { + pageid: url, + err: data.err, + errtype: data.errtype, + stacktrace: error.toString() || "", + }, + }); + } }; export const feedback = (data, contentId, telemetryMode) => { - if (checkTelemetryMode(telemetryMode)) { - CsTelemetryModule.instance.telemetryService.raiseFeedBackTelemetry({ - options: getEventOptions(), - edata: { - contentId: contentId, - rating: data, - comments: '', - }, - }); - } + if (checkTelemetryMode(telemetryMode)) { + CsTelemetryModule.instance.telemetryService.raiseFeedBackTelemetry({ + options: getEventOptions(), + edata: { + contentId: contentId, + rating: data, + comments: "", + }, + }); + } }; function checkTelemetryMode(currentMode) { - return ( - (process.env.REACT_APP_TELEMETRY_MODE === 'ET' && currentMode === 'ET') || - (process.env.REACT_APP_TELEMETRY_MODE === 'NT' && (currentMode === 'ET' || currentMode === 'NT')) || - (process.env.REACT_APP_TELEMETRY_MODE === 'DT' && - (currentMode === 'ET' || currentMode === 'NT' || currentMode === 'DT')) - ); + return ( + (process.env.REACT_APP_TELEMETRY_MODE === "ET" && currentMode === "ET") || + (process.env.REACT_APP_TELEMETRY_MODE === "NT" && + (currentMode === "ET" || currentMode === "NT")) || + (process.env.REACT_APP_TELEMETRY_MODE === "DT" && + (currentMode === "ET" || currentMode === "NT" || currentMode === "DT")) + ); } export const getEventOptions = () => { - var emis_username = 'anonymous'; - var buddyUserId = ''; + let emis_username = "anonymous"; + let buddyUserId = ""; + let userDetails; - if (localStorage.getItem('token') !== null) { - let jwtToken = localStorage.getItem('token'); - var userDetails = jwtDecode(jwtToken); - emis_username = userDetails.emis_username; - } + if (localStorage.getItem("token") !== null) { + let jwtToken = localStorage.getItem("token"); + userDetails = jwtDecode(jwtToken); + emis_username = userDetails.emis_username; + } - if (isBuddyLogin) { - let jwtToken = localStorage.getItem('buddyToken'); - let buddyUserDetails = jwtDecode(jwtToken); - buddyUserId = buddyUserDetails.emis_username; - } + if (isBuddyLogin) { + let jwtToken = localStorage.getItem("buddyToken"); + let buddyUserDetails = jwtDecode(jwtToken); + buddyUserId = buddyUserDetails.emis_username; + } + + const userType = isBuddyLogin ? "Buddy User" : "User"; + const userId = isBuddyLogin + ? emis_username + "/" + buddyUserId + : emis_username || "anonymous"; - const userType = isBuddyLogin ? 'Buddy User' : 'User'; - const userId = isBuddyLogin ? emis_username + '/' + buddyUserId : emis_username || 'anonymous'; - - return { - object: {}, - context: { - pdata: { - // optional - id: process.env.REACT_APP_ID, // Producer ID. For ex: For sunbird it would be "portal" or "genie" - ver: process.env.REACT_APP_VER, // Version of the App - pid: process.env.REACT_APP_PID, // Optional. In case the component is distributed, then which instance of that component - }, - env: process.env.REACT_APP_ENV, - uid: `${isBuddyLogin ? emis_username + '/' + buddyUserId : emis_username || 'anonymous'}`, - cdata: [ - { id: localStorage.getItem('virtualStorySessionID') || contentSessionId, type: 'ContentSession' }, - { id: playSessionId, type: 'PlaySession' }, - { id: userId, type: userType }, - { id: localStorage.getItem("lang") || 'ta', type: 'language' }, - { id: userDetails?.school_name, type: 'school_name' }, - { - id: userDetails?.class_studying_id, - type: 'class_studying_id', - }, - { id: userDetails?.udise_code, type: 'udise_code' }, - ], - rollup: {}, + return { + object: {}, + context: { + pdata: { + // optional + id: process.env.REACT_APP_ID, // Producer ID. For ex: For sunbird it would be "portal" or "genie" + ver: process.env.REACT_APP_VER, // Version of the App + pid: process.env.REACT_APP_PID, // Optional. In case the component is distributed, then which instance of that component + }, + env: process.env.REACT_APP_ENV, + uid: `${ + isBuddyLogin + ? emis_username + "/" + buddyUserId + : emis_username || "anonymous" + }`, + cdata: [ + { + id: localStorage.getItem("virtualStorySessionID") || contentSessionId, + type: "ContentSession", }, - }; + { id: playSessionId, type: "PlaySession" }, + { id: userId, type: userType }, + { id: localStorage.getItem("lang") || "ta", type: "language" }, + { id: userDetails?.school_name, type: "school_name" }, + { + id: userDetails?.class_studying_id, + type: "class_studying_id", + }, + { id: userDetails?.udise_code, type: "udise_code" }, + ], + rollup: {}, + }, + }; }; diff --git a/src/utils/VoiceAnalyser.js b/src/utils/VoiceAnalyser.js index 1884ab47..c1331ffe 100644 --- a/src/utils/VoiceAnalyser.js +++ b/src/utils/VoiceAnalyser.js @@ -761,7 +761,7 @@ VoiceAnalyser.propTypes = { setVoiceText: PropTypes.func.isRequired, livesData: PropTypes.object, contentId: PropTypes.string, - updateStoredData: PropTypes.func.isRequired, + updateStoredData: PropTypes.any, pageName: PropTypes.string, }; diff --git a/src/views/HomePage/HomePage.jsx b/src/views/HomePage/HomePage.jsx index 1a28393e..f0743798 100644 --- a/src/views/HomePage/HomePage.jsx +++ b/src/views/HomePage/HomePage.jsx @@ -1,9 +1,7 @@ import desktopLevel1 from "../../assets/images/desktopLevel1.png"; import desktopLevel2 from "../../assets/images/desktopLevel2.png"; import desktopLevel3 from "../../assets/images/desktopLevel3.jpg"; -import { - useSearchParams, -} from "../../../node_modules/react-router-dom/dist/index"; +import { useSearchParams } from "react-router-dom"; const HomePage = () => { const [searchParams, setSearchParams] = useSearchParams(); From df6c2b33607c624ec6a88bcf88e69fc5a3d07af1 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Wed, 27 Nov 2024 09:15:30 +0530 Subject: [PATCH 2/2] resolve code-rabits comments --- src/components/Practice/Mechanics1.jsx | 16 ++++++++++++++-- src/components/Practice/Mechanics2.jsx | 12 +++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/components/Practice/Mechanics1.jsx b/src/components/Practice/Mechanics1.jsx index d4dc42d8..fd63978a 100644 --- a/src/components/Practice/Mechanics1.jsx +++ b/src/components/Practice/Mechanics1.jsx @@ -112,7 +112,13 @@ const Mechanics1 = ({ page, setPage }) => { width: "100px", }} > - speak + speak Speak @@ -139,7 +145,13 @@ const Mechanics1 = ({ page, setPage }) => { }} > Next - arrow + arrow diff --git a/src/components/Practice/Mechanics2.jsx b/src/components/Practice/Mechanics2.jsx index 6b9ace8e..6c6fbd09 100644 --- a/src/components/Practice/Mechanics2.jsx +++ b/src/components/Practice/Mechanics2.jsx @@ -82,7 +82,13 @@ const Mechanics2 = ({ page, setPage }) => { width: "100px", }} > - speak + speak Speak @@ -117,8 +123,8 @@ const Mechanics2 = ({ page, setPage }) => { }; Mechanics2.propTypes = { - page: PropTypes.number, - setPage: PropTypes.func, + page: PropTypes.number.isRequired, + setPage: PropTypes.func.isRequired, }; export default Mechanics2;