From 44e43e31d7a08de2d2a35669957be78fd162f3c1 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Thu, 20 Jun 2024 16:47:10 +0530 Subject: [PATCH 01/39] Branch update for test-rig prod --- .github/workflows/all-prod-rig.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-prod-rig.yml b/.github/workflows/all-prod-rig.yml index 6ae94336..6e14dbe6 100644 --- a/.github/workflows/all-prod-rig.yml +++ b/.github/workflows/all-prod-rig.yml @@ -3,7 +3,7 @@ name: ALL rig prod Deployment on: push: branches: - - test + - test-rig-1.1-prod jobs: deploy: From f405c18370847654389c0b5c6352004b3d88ea86 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Thu, 20 Jun 2024 17:02:11 +0530 Subject: [PATCH 02/39] Issue #219845 fix: branch update for test-rig prod --- .github/workflows/all-prod-rig.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-prod-rig.yml b/.github/workflows/all-prod-rig.yml index 6e14dbe6..01b39294 100644 --- a/.github/workflows/all-prod-rig.yml +++ b/.github/workflows/all-prod-rig.yml @@ -79,7 +79,7 @@ jobs: run: npm run build - name: Deploy to S3 Bucket - run: aws s3 sync ./build s3://sb-all-rig/all-automation/ + run: aws s3 sync ./build s3://sb-all-rig/ - name: Debug Environment Variables run: | From 933fd5faf07f0144122e8cc8692ebef03dbf06c4 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Tue, 25 Jun 2024 12:22:39 +0530 Subject: [PATCH 03/39] Issueid #221626 fix: Implement AuthGuard for Route Protection in React --- src/views/AppContent/AppContent.jsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/views/AppContent/AppContent.jsx b/src/views/AppContent/AppContent.jsx index fb9ef9a6..7cf3cf9f 100644 --- a/src/views/AppContent/AppContent.jsx +++ b/src/views/AppContent/AppContent.jsx @@ -1,14 +1,13 @@ import React, { useEffect, Fragment } from "react"; -import { Routes, Route } from "react-router-dom"; +import { Routes, Route, useNavigate } from "react-router-dom"; import CustomizedSnackbars from "../../views/Snackbar/CustomSnackbar"; -import { useSelector } from "react-redux"; const PrivateRoute = (props) => { - const { virtualId } = useSelector((state) => state.user); - // const navigate = useNavigate(); + const virtualId = localStorage.getItem('virtualId'); + const navigate = useNavigate(); useEffect(() => { if (!virtualId && props.requiresAuth) { - // navigate("/"); + navigate("/"); } }, [virtualId]); From 2fd4db1cf6bf8390f431330d9697cdd3bbf4777b Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Wed, 26 Jun 2024 11:08:04 +0530 Subject: [PATCH 04/39] Issueid #221626 fix: Implement AuthGuard for Route Protection in React --- src/routes/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/routes/index.js b/src/routes/index.js index 375ea6fc..51560936 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -54,9 +54,12 @@ const routData = [ requiresAuth: true, }, ]; - // add login route for test rig -if (process.env.REACT_APP_IS_APP_TEST_RIG === 'true') { + +const virtualId = localStorage.getItem('virtualId'); +const isLogin = process.env.REACT_APP_IS_APP_TEST_RIG_LOGIN_ENABLE === 'true'; + +if (isLogin && !virtualId) { routData.push( { id: "route-001", From f4ab19960e549e78082a9f16a6c5691252e7738d Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Wed, 26 Jun 2024 13:48:38 +0530 Subject: [PATCH 05/39] Issueid #221626 fix: Implement AuthGuard for Route Protection in React --- src/routes/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/index.js b/src/routes/index.js index 51560936..7891f52b 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -57,7 +57,7 @@ const routData = [ // add login route for test rig const virtualId = localStorage.getItem('virtualId'); -const isLogin = process.env.REACT_APP_IS_APP_TEST_RIG_LOGIN_ENABLE === 'true'; +const isLogin = process.env.REACT_APP_IS_IN_APP_AUTHORISATION === 'true'; if (isLogin && !virtualId) { routData.push( From 870e270e0fdf4f68b84f626e2c916c521f0d6b5b Mon Sep 17 00:00:00 2001 From: Gourav More Date: Wed, 26 Jun 2024 13:51:50 +0530 Subject: [PATCH 06/39] Update all-dev-rig.yml --- .github/workflows/all-dev-rig.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 78ac4392..016fff42 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -3,7 +3,7 @@ name: ALL rig dev Deployment on: push: branches: - - test-rig-1.1 + - all-1.2 jobs: deploy: From 4af5ad0451d3e8cb6370d4cc2dfebae6f203b8ff Mon Sep 17 00:00:00 2001 From: Gourav More Date: Wed, 26 Jun 2024 15:24:55 +0530 Subject: [PATCH 07/39] Update all-dev-rig.yml --- .github/workflows/all-dev-rig.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 016fff42..7bac2619 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -73,7 +73,7 @@ jobs: REACT_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} - REACT_APP_IS_APP_TEST_RIG: ${{ vars.REACT_APP_IS_APP_TEST_RIG }} + REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build From 9c8d30b3d516fbb909853c855d553738c54e2c69 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Wed, 26 Jun 2024 15:29:42 +0530 Subject: [PATCH 08/39] Issue #env config updates --- .github/workflows/all-app-sandbox.yml | 2 +- .github/workflows/all-prod-rig.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/all-app-sandbox.yml b/.github/workflows/all-app-sandbox.yml index 9bfbbceb..45f36483 100644 --- a/.github/workflows/all-app-sandbox.yml +++ b/.github/workflows/all-app-sandbox.yml @@ -73,7 +73,7 @@ jobs: REACT_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} - REACT_APP_IS_APP_TEST_RIG: ${{ vars.REACT_APP_IS_APP_TEST_RIG }} + REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build diff --git a/.github/workflows/all-prod-rig.yml b/.github/workflows/all-prod-rig.yml index 01b39294..d82589ea 100644 --- a/.github/workflows/all-prod-rig.yml +++ b/.github/workflows/all-prod-rig.yml @@ -73,7 +73,7 @@ jobs: REACT_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} - REACT_APP_IS_APP_TEST_RIG: ${{ vars.REACT_APP_IS_APP_TEST_RIG }} + REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build From 96114aa11943249cfb6482c60a683f8af55a0c7e Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Fri, 12 Jul 2024 12:27:06 +0530 Subject: [PATCH 09/39] IssueId #223082 feat: Create Log Out Button in Test-Rig [React] --- src/assets/images/logout.svg | 4 + src/components/Assesment/Assesment.jsx | 201 ++++++++++++++++--------- 2 files changed, 135 insertions(+), 70 deletions(-) create mode 100644 src/assets/images/logout.svg diff --git a/src/assets/images/logout.svg b/src/assets/images/logout.svg new file mode 100644 index 00000000..8546b939 --- /dev/null +++ b/src/assets/images/logout.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index f22d788a..9a2eaa18 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -4,8 +4,11 @@ import { Box, Grid, IconButton, + Tooltip, Typography, } from "../../../node_modules/@mui/material/index"; +import LogoutImg from "../../assets/images/logout.svg"; +import { styled } from "@mui/material/styles"; import { RoundTick, SelectLanguageButton, @@ -16,9 +19,7 @@ import { setLocalData, } from "../../utils/constants"; import practicebg from "../../assets/images/practice-bg.svg"; -import { - useNavigate, -} from "../../../node_modules/react-router-dom/dist/index"; +import { useNavigate } from "../../../node_modules/react-router-dom/dist/index"; import { useEffect, useState } from "react"; import axios from "../../../node_modules/axios/index"; // import { useDispatch } from 'react-redux'; @@ -169,7 +170,8 @@ export const LanguageModal = ({ lang, setLang, setOpenLangModal }) => { { try { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { - window.parent.postMessage({ type: 'restore-iframe-content' }, '*'); - navigate("/") + if (process.env.REACT_APP_IS_APP_IFRAME === "true") { + window.parent.postMessage({ type: "restore-iframe-content" }, "*"); + navigate("/"); } else { - navigate("/discover-start") + navigate("/discover-start"); } } catch (error) { console.error("Error posting message:", error); } }; + const handleLogout = () => { + localStorage.clear(); + navigate("/Login"); + }; + + const CustomIconButton = styled(IconButton)({ + padding: "6px 20px", + color: "white", + fontSize: "20px", + fontWeight: 500, + borderRadius: "8px", + marginRight: "10px", + fontFamily: '"Lato", "sans-serif"', + position: "relative", + display: "flex", + alignItems: "center", + justifyContent: "center", + "& .logout-img": { + display: "block", + filter: "invert(1)", + }, + }); + + const CustomTooltip = styled(({ className, ...props }) => ( + + ))({ + [`& .MuiTooltip-tooltip`]: { + fontSize: "1.2rem", // Adjust the font size as needed + }, + }); + return ( <> {!!openMessageDialog && ( @@ -377,7 +410,13 @@ export const ProfileHeader = ({ zIndex: 5555, }} > - + {handleBack && ( @@ -388,11 +427,19 @@ export const ProfileHeader = ({ {username && ( <> - profile-pic + profile-pic - {username || ""} + {username || ""} )} - + */} - + @@ -470,6 +517,20 @@ export const ProfileHeader = ({ + + {process.env.REACT_APP_IS_IN_APP_AUTHORISATION === "true" && ( + + + Logout + + + )} + @@ -491,7 +552,7 @@ const Assesment = ({ discoverStart }) => { const [level, setLevel] = useState(""); const dispatch = useDispatch(); const [openLangModal, setOpenLangModal] = useState(false); - const [lang, setLang] = useState(getLocalData("lang") || "en"); + const [lang, setLang] = useState(getLocalData("lang") || "en"); const [points, setPoints] = useState(0); useEffect(() => { @@ -524,11 +585,11 @@ const Assesment = ({ discoverStart }) => { ); let session_id = localStorage.getItem("sessionId"); - if (!session_id){ + if (!session_id) { session_id = uniqueId(); - localStorage.setItem("sessionId", session_id) + localStorage.setItem("sessionId", session_id); } - + 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}` @@ -555,9 +616,9 @@ const Assesment = ({ discoverStart }) => { ); let sessionId = getLocalData("sessionId"); - if (!sessionId || sessionId === 'null'){ + if (!sessionId || sessionId === "null") { sessionId = uniqueId(); - localStorage.setItem("sessionId", sessionId) + localStorage.setItem("sessionId", sessionId); } if (virtualId) { @@ -607,7 +668,7 @@ const Assesment = ({ discoverStart }) => { height: "100vh", backgroundImage: `url(${images?.[`desktopLevel${level || 1}`]})`, backgroundRepeat: "round", - backgroundSize: 'auto', + backgroundSize: "auto", position: "relative", }; @@ -675,68 +736,68 @@ const Assesment = ({ discoverStart }) => { ) : ( - - - {discoverStart - ? "Let's test your language skills" - : "You have good language skills"} - - - {level > 0 - ? `Take the assessment to complete Level ${level}.` - : "Take the assessment to discover your level"} + {discoverStart + ? "Let's test your language skills" + : "You have good language skills"} + + + {level > 0 + ? `Take the assessment to complete Level ${level}.` + : "Take the assessment to discover your level"} + + + + + - - - - - + )} ); From 18d9bb9cefbfeffa04d4fa8adf2b119a3c3a00b9 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Fri, 12 Jul 2024 12:46:57 +0530 Subject: [PATCH 10/39] IssueId #223082 feat: Create Log Out Button in Test-Rig [React] --- src/components/Assesment/Assesment.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index 9a2eaa18..62fb4c34 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -517,8 +517,8 @@ export const ProfileHeader = ({ - - {process.env.REACT_APP_IS_IN_APP_AUTHORISATION === "true" && ( + {process.env.REACT_APP_IS_IN_APP_AUTHORISATION === "true" && ( + - )} - + + )} From bb7c1ecdc858c648ebe5888638b3a8c8baec71aa Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Fri, 12 Jul 2024 13:06:21 +0530 Subject: [PATCH 11/39] IssueId #223082 feat: Create Log Out Button in Test-Rig [React] --- src/components/Assesment/Assesment.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index 62fb4c34..6a2a9e2e 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -43,6 +43,7 @@ import config from "../../utils/urlConstants.json"; import panda from "../../assets/images/panda.svg"; import cryPanda from "../../assets/images/cryPanda.svg"; import { uniqueId } from "../../services/utilService"; +import { end } from "../../services/telementryService"; export const LanguageModal = ({ lang, setLang, setOpenLangModal }) => { const [selectedLang, setSelectedLang] = useState(lang); @@ -355,6 +356,7 @@ export const ProfileHeader = ({ const handleLogout = () => { localStorage.clear(); + end({}); navigate("/Login"); }; From 04c9989d11d9a1afbac6f0c7a47774d8e45a810c Mon Sep 17 00:00:00 2001 From: Gourav More Date: Fri, 12 Jul 2024 14:43:02 +0530 Subject: [PATCH 12/39] devices spects added in start event --- src/services/telementryService.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/services/telementryService.js b/src/services/telementryService.js index 2f1157e6..cd51adbe 100644 --- a/src/services/telementryService.js +++ b/src/services/telementryService.js @@ -72,6 +72,7 @@ export const start = (duration) => { mode: 'play', stageid: url, duration: Number((duration / 1e3).toFixed(2)), + dspec: window.navigator.userAgent }, }); } catch (error) { From bd45cce98876d3afce09c5dcb7e8dacfc8f374b1 Mon Sep 17 00:00:00 2001 From: deepali chavhan Date: Thu, 25 Jul 2024 17:28:23 +0530 Subject: [PATCH 13/39] TaskID #223472 feat: Conversion CRA to Vite R&D --- public/index.html => index.html | 5 ++- package.json | 22 +++++----- src/{App.js => App.jsx} | 21 +++++----- src/components/Assesment/Assesment.jsx | 14 +++---- src/components/AssesmentEnd/AssesmentEnd.jsx | 6 +-- src/components/DiscoverEnd/DiscoverEnd.jsx | 4 +- .../DiscoverSentance/DiscoverSentance.jsx | 34 +++++++-------- src/components/Practice/Mechanics3.jsx | 2 +- src/config/awsS3.js | 6 +-- src/index.js | 15 ------- src/index.jsx | 13 ++++++ src/routes/index.js | 2 +- src/services/telementryService.js | 18 ++++---- src/services/telemetryService.js | 18 ++++---- .../{AudioCompare.js => AudioCompare.jsx} | 0 .../{VoiceAnalyser.js => VoiceAnalyser.jsx} | 22 +++++----- src/utils/{constants.js => constants.jsx} | 10 ++--- src/views/LoginPage/LoginPage.jsx | 2 +- src/views/Practice/Practice.jsx | 42 +++++++++---------- vite.config.js | 15 +++++++ 20 files changed, 144 insertions(+), 127 deletions(-) rename public/index.html => index.html (89%) rename src/{App.js => App.jsx} (72%) delete mode 100644 src/index.js create mode 100644 src/index.jsx rename src/utils/{AudioCompare.js => AudioCompare.jsx} (100%) rename src/utils/{VoiceAnalyser.js => VoiceAnalyser.jsx} (95%) rename src/utils/{constants.js => constants.jsx} (99%) create mode 100644 vite.config.js diff --git a/public/index.html b/index.html similarity index 89% rename from public/index.html rename to index.html index 6f15aaa8..558ecdc0 100644 --- a/public/index.html +++ b/index.html @@ -13,7 +13,7 @@ content="Base React App structure for Devigital Systems Projects" /> - + EkStep -
+
+ diff --git a/package.json b/package.json index 7948ced6..542fd128 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,9 @@ "canvas-confetti": "^1.9.2", "character-error-rate": "^1.1.4", "classnames": "^2.3.1", + "eslint-plugin-import": "^2.28.0", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.1", "faker": "^5.5.3", "homophones": "^1.0.1", "jwt-decode": "^4.0.0", @@ -34,7 +37,6 @@ "react-infinite-scroll-component": "^6.1.0", "react-redux": "^9.1.0", "react-router-dom": "^6.0.2", - "react-scripts": "5.0.1", "react-virtualized": "^9.22.3", "react-virtualized-auto-sizer": "^1.0.6", "react-window": "^1.8.6", @@ -43,14 +45,12 @@ "sass": "^1.44.0", "split-graphemes": "^0.5.0", "use-sound": "^4.0.1", - "web-vitals": "^2.1.4", - "eslint-plugin-import": "^2.28.0", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.1" + "web-vitals": "^2.1.4" }, "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", + "start": "vite", + "build": "vite build", + "serve": "vite preview", "test": "react-scripts test", "eject": "react-scripts eject", "prettier:cli": "prettier \"src/**/*.js\" \"**/*.json\"", @@ -87,16 +87,18 @@ ] }, "devDependencies": { + "@mui/styles": "^5.15.10", + "@vitejs/plugin-react": "^4.3.1", "eslint": "^7.32.0", - "prettier": "^2.3.2", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "husky": "^9.0.11", "lint-staged": "^11.0.0", + "prettier": "^2.3.2", "react": "^18.2.0", - "@mui/styles": "^5.15.10" + "vite": "^5.3.4" }, - "lint-staged": { + "lint-staged": { "src/**/*.{js,jsx}": [ "npx eslint --fix", "npx prettier --write" diff --git a/src/App.js b/src/App.jsx similarity index 72% rename from src/App.js rename to src/App.jsx index a2c813c9..eea78816 100644 --- a/src/App.js +++ b/src/App.jsx @@ -8,7 +8,8 @@ import { AppContent } from './views'; import theme from './assets/styles/theme'; import { initialize } from './services/telementryService'; import { startEvent } from './services/callTelemetryIntract'; -import '@project-sunbird/telemetry-sdk/index.js'; +import '../src/index.css'; +// import '@project-sunbird/telemetry-sdk/index.js'; const App = () => { const ranonce = useRef(false); @@ -24,27 +25,27 @@ const App = () => { await initialize({ context: { - mode: process.env.REACT_APP_MODE, // To identify preview used by the user to play/edit/preview + mode: import.meta.env.VITE_APP_MODE, // To identify preview used by the user to play/edit/preview authToken: '', // Auth key to make api calls did: did, // Unique id to identify the device or browser uid: 'anonymous', - channel: process.env.REACT_APP_CHANNEL, // Unique id of the channel(Channel ID) - env: process.env.REACT_APP_ENV, + channel: import.meta.env.VITE_APP_CHANNEL, // Unique id of the channel(Channel ID) + env: import.meta.env.VITE_APP_ENV, 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 + id: import.meta.env.VITE_APP_ID, // Producer ID. For ex: For sunbird it would be "portal" or "genie" + ver: import.meta.env.VITE_APP_VER, // Version of the App + pid: import.meta.env.VITE_APP_PID, // Optional. In case the component is distributed, then which instance of that component }, tags: [ // Defines the tags data '', ], timeDiff: 0, // Defines the time difference// Defines the object roll up data - host: process.env.REACT_APP_HOST, // Defines the from which domain content should be load - endpoint: process.env.REACT_APP_ENDPOINT, - apislug: process.env.REACT_APP_APISLUG, + host: import.meta.env.VITE_APP_HOST, // Defines the from which domain content should be load + endpoint: import.meta.env.VITE_APP_ENDPOINT, + apislug: import.meta.env.VITE_APP_APISLUG, }, config: {}, // tslint:disable-next-line:max-line-length diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index 6a2a9e2e..91c86798 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -343,7 +343,7 @@ export const ProfileHeader = ({ const handleProfileBack = () => { try { - if (process.env.REACT_APP_IS_APP_IFRAME === "true") { + if (import.meta.env.VITE_APP_IS_APP_IFRAME === "true") { window.parent.postMessage({ type: "restore-iframe-content" }, "*"); navigate("/"); } else { @@ -519,7 +519,7 @@ export const ProfileHeader = ({ - {process.env.REACT_APP_IS_IN_APP_AUTHORISATION === "true" && ( + {import.meta.env.VITE_APP_IS_IN_APP_AUTHORISATION === "true" && ( @@ -568,10 +568,10 @@ const Assesment = ({ discoverStart }) => { (async () => { setLocalData("profileName", username); const usernameDetails = await axios.post( - `${process.env.REACT_APP_VIRTUAL_ID_HOST}/${config.URLS.GET_VIRTUAL_ID}?username=${username}` + `${import.meta.env.VITE_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}` + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${usernameDetails?.data?.result?.virtualID}?language=${lang}` ); localStorage.setItem( @@ -594,7 +594,7 @@ const Assesment = ({ discoverStart }) => { 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}` + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${usernameDetails?.data?.result?.virtualID}/${session_id}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); @@ -605,7 +605,7 @@ const Assesment = ({ discoverStart }) => { const virtualId = getLocalData("virtualId"); const language = lang; const getMilestoneDetails = await axios.get( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${language}` + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${language}` ); localStorage.setItem( "getMilestone", @@ -625,7 +625,7 @@ 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}` + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); } diff --git a/src/components/AssesmentEnd/AssesmentEnd.jsx b/src/components/AssesmentEnd/AssesmentEnd.jsx index db5a1456..f30f61ed 100644 --- a/src/components/AssesmentEnd/AssesmentEnd.jsx +++ b/src/components/AssesmentEnd/AssesmentEnd.jsx @@ -34,18 +34,18 @@ const AssesmentEnd = () => { 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}` + `${import.meta.env.VITE_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"); + 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}` + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); })(); diff --git a/src/components/DiscoverEnd/DiscoverEnd.jsx b/src/components/DiscoverEnd/DiscoverEnd.jsx index 37e39011..b36ec6db 100644 --- a/src/components/DiscoverEnd/DiscoverEnd.jsx +++ b/src/components/DiscoverEnd/DiscoverEnd.jsx @@ -41,7 +41,7 @@ const SpeakSentenceComponent = () => { const virtualId = getLocalData("virtualId"); const lang = getLocalData("lang"); const getMilestoneDetails = await axios.get( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` ); const { data } = getMilestoneDetails; setLevel(data.data.milestone_level); @@ -54,7 +54,7 @@ const SpeakSentenceComponent = () => { const handleProfileBack = () => { try { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { + if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { navigate("/") } else { navigate("/discover-start") diff --git a/src/components/DiscoverSentance/DiscoverSentance.jsx b/src/components/DiscoverSentance/DiscoverSentance.jsx index c64ebe3f..7cac38e0 100644 --- a/src/components/DiscoverSentance/DiscoverSentance.jsx +++ b/src/components/DiscoverSentance/DiscoverSentance.jsx @@ -69,7 +69,7 @@ const SpeakSentenceComponent = () => { 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}` + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); })(); @@ -100,7 +100,7 @@ const SpeakSentenceComponent = () => { }, [voiceText]); const send = (score) => { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { + if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { window.parent.postMessage({ score: score, message: "all-test-rig-score", @@ -117,7 +117,7 @@ const SpeakSentenceComponent = () => { if (!(localStorage.getItem("contentSessionId") !== null)) { const pointsRes = await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_POINTER}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_POINTER}`, { userId: localStorage.getItem("virtualId"), sessionId: localStorage.getItem("sessionId"), @@ -133,7 +133,7 @@ const SpeakSentenceComponent = () => { } await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: localStorage.getItem("virtualId"), sessionId: localStorage.getItem("sessionId"), @@ -150,7 +150,7 @@ const SpeakSentenceComponent = () => { } else if (currentQuestion === questions.length - 1) { const sub_session_id = getLocalData("sub_session_id"); const getSetResultRes = await axios.post( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_SET_RESULT}`, + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_SET_RESULT}`, { sub_session_id: sub_session_id, contentType: currentContentType, @@ -165,9 +165,9 @@ const SpeakSentenceComponent = () => { const { data: getSetData } = getSetResultRes; const data = JSON.stringify(getSetData?.data); Log(data, "discovery", "ET"); - if(process.env.REACT_APP_POST_LEARNER_PROGRESS === "true"){ + if(import.meta.env.VITE_APP_POST_LEARNER_PROGRESS === "true"){ await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, { userId: localStorage.getItem("virtualId"), sessionId: localStorage.getItem("sessionId"), @@ -190,7 +190,7 @@ const SpeakSentenceComponent = () => { (elem) => elem.category === "Sentence" ); const resSentencesPagination = await axios.get( - `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.[newSentencePassedCounter]?.collectionId}` + `${import.meta.env.VITE_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.[newSentencePassedCounter]?.collectionId}` ); setCurrentContentType("Sentence"); setTotalSyllableCount(resSentencesPagination?.data?.totalSyllableCount); @@ -214,7 +214,7 @@ const SpeakSentenceComponent = () => { (elem) => elem.category === "Word" ); const resWordsPagination = await axios.get( - `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${words?.collectionId}` + `${import.meta.env.VITE_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${words?.collectionId}` ); setCurrentContentType("Word"); setTotalSyllableCount(resWordsPagination?.data?.totalSyllableCount); @@ -232,7 +232,7 @@ const SpeakSentenceComponent = () => { // (elem) => elem.category === "Char" // ); // const resCharPagination = await axios.get( - // `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/content-service/v1/content/pagination?page=1&limit=5&collectionId=${char?.content?.[0]?.collectionId}` + // `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/content-service/v1/content/pagination?page=1&limit=5&collectionId=${char?.content?.[0]?.collectionId}` // ); // setCurrentContentType("Char"); // setCurrentCollectionId(char?.content?.[0]?.collectionId); @@ -252,15 +252,15 @@ const SpeakSentenceComponent = () => { (async () => { let quesArr = []; try { - // const resSentence = await axios.get(`${process.env.REACT_APP_LEARNER_AI_APP_HOST}/scores/GetContent/sentence/${UserID}`); + // const resSentence = await axios.get(`${import.meta.env.VITE_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}`); + // const resWord = await axios.get(`${import.meta.env.VITE_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}`); + // const resPara = await axios.get(`${import.meta.env.VITE_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}`, + `${import.meta.env.VITE_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_ASSESSMENT}`, { ...{ tags: ["ASER"], language: lang }, } @@ -271,7 +271,7 @@ const SpeakSentenceComponent = () => { ); const resPagination = await axios.get( - `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.collectionId}` + `${import.meta.env.VITE_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.collectionId}` ); setCurrentContentType("Sentence"); setTotalSyllableCount(resPagination?.data?.totalSyllableCount) @@ -289,9 +289,9 @@ const SpeakSentenceComponent = () => { })(); }, []); const handleBack = () => { - const destination = process.env.REACT_APP_IS_APP_IFRAME === 'true' ? "/" : "/discover-start"; + const destination = import.meta.env.VITE_APP_IS_APP_IFRAME === 'true' ? "/" : "/discover-start"; navigate(destination); - // if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { + // if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { // navigate("/"); // } else { // navigate("/discover-start") diff --git a/src/components/Practice/Mechanics3.jsx b/src/components/Practice/Mechanics3.jsx index 3c493976..7f6efce8 100644 --- a/src/components/Practice/Mechanics3.jsx +++ b/src/components/Practice/Mechanics3.jsx @@ -246,7 +246,7 @@ const Mechanics2 = ({ type="audio/mp3" src={ contentId - ? `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` + ? `${import.meta.env.VITE_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` : "" } /> diff --git a/src/config/awsS3.js b/src/config/awsS3.js index 34d950f4..b4200643 100644 --- a/src/config/awsS3.js +++ b/src/config/awsS3.js @@ -1,9 +1,9 @@ // import { S3Client } from '@aws-sdk/client-s3'; // export default new S3Client({ -// region: process.env.REACT_APP_AWS_S3_REGION, +// region: import.meta.env.VITE_APP_AWS_S3_REGION, // credentials: { -// accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY_ID, -// secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY, +// accessKeyId: import.meta.env.REACT_APP_AWS_ACCESS_KEY_ID, +// secretAccessKey: import.meta.env.REACT_APP_AWS_SECRET_ACCESS_KEY, // }, // }); diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 3bf82148..00000000 --- a/src/index.js +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react'; -import { render } from 'react-dom'; -import { Provider } from 'react-redux'; -import App from './App'; -import './assets/styles/index.scss'; -import store from './store/configureStore'; -import './index.css'; -render( - - - - - , - document.getElementById('root'), -); diff --git a/src/index.jsx b/src/index.jsx new file mode 100644 index 00000000..75bd9704 --- /dev/null +++ b/src/index.jsx @@ -0,0 +1,13 @@ +import ReactDOM from 'react-dom/client'; +import { Provider } from 'react-redux'; +import store from './store/configureStore'; // Import the store correctly +import App from './App'; // Import your App component + +const rootElement = document.getElementById('root'); +const root = ReactDOM.createRoot(rootElement); + +root.render( + + + +); diff --git a/src/routes/index.js b/src/routes/index.js index 7891f52b..17eb01df 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -57,7 +57,7 @@ const routData = [ // add login route for test rig const virtualId = localStorage.getItem('virtualId'); -const isLogin = process.env.REACT_APP_IS_IN_APP_AUTHORISATION === 'true'; +const isLogin = import.meta.env.VITE_APP_IS_IN_APP_AUTHORISATION === 'true'; if (isLogin && !virtualId) { routData.push( diff --git a/src/services/telementryService.js b/src/services/telementryService.js index cd51adbe..9e33eadc 100644 --- a/src/services/telementryService.js +++ b/src/services/telementryService.js @@ -1,7 +1,7 @@ import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry'; import { uniqueId } from './utilService'; -import { jwtDecode } from '../../node_modules/jwt-decode/build/cjs/index'; +import { jwtDecode } from "jwt-decode"; let contentSessionId; let playSessionId; @@ -41,7 +41,7 @@ export const initialize = async ({ context, config, metadata }) => { authtoken: context.authToken || '', uid: 'anonymous', sid: context.sid, - batchsize: process.env.REACT_APP_BATCHSIZE, + batchsize: import.meta.env.VITE_APP_BATCHSIZE, mode: context.mode, host: context.host, apislug: context.apislug, @@ -188,9 +188,9 @@ export const feedback = (data, contentId, telemetryMode) => { 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' && + (import.meta.env.VITE_APP_TELEMETRY_MODE === 'ET' && currentMode === 'ET') || + (import.meta.env.VITE_APP_TELEMETRY_MODE === 'NT' && (currentMode === 'ET' || currentMode === 'NT')) || + (import.meta.env.VITE_APP_TELEMETRY_MODE === 'DT' && (currentMode === 'ET' || currentMode === 'NT' || currentMode === 'DT')) ); } @@ -219,11 +219,11 @@ export const getEventOptions = () => { 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 + id: import.meta.env.VITE_APP_ID, // Producer ID. For ex: For sunbird it would be "portal" or "genie" + ver: import.meta.env.VITE_APP_VER, // Version of the App + pid: import.meta.env.VITE_APP_PID, // Optional. In case the component is distributed, then which instance of that component }, - env: process.env.REACT_APP_ENV, + env: import.meta.env.VITE_APP_ENV, uid: `${isBuddyLogin ? emis_username + '/' + buddyUserId : emis_username || 'anonymous'}`, cdata: [ { id: localStorage.getItem('virtualStorySessionID') || contentSessionId, type: 'ContentSession' }, diff --git a/src/services/telemetryService.js b/src/services/telemetryService.js index 9dae9426..d66a7ec3 100644 --- a/src/services/telemetryService.js +++ b/src/services/telemetryService.js @@ -7,21 +7,21 @@ export const initialize = ({ did }) => { const telemetryConfig = { config: { pdata: { - id: process.env.REACT_APP_ID, - ver: process.env.REACT_APP_VER, - pid: process.env.REACT_APP_PID, + id: import.meta.env.VITE_APP_ID, + ver: import.meta.env.VITE_APP_VER, + pid: import.meta.env.VITE_APP_PID, }, - env: process.env.REACT_APP_ENV, - channel: process.env.REACT_APP_CHANNEL, + env: import.meta.env.VITE_APP_ENV, + channel: import.meta.env.VITE_APP_CHANNEL, did: did, authtoken: '', uid: 'anonymous', sid: '', batchsize: 1, mode: '', - host: process.env.REACT_APP_BASE_URL, - apislug: process.env.REACT_APP_API_SLUG, - endpoint: process.env.REACT_APP_ENDPOINT, + host: import.meta.env.REACT_APP_BASE_URL, + apislug: import.meta.env.REACT_APP_API_SLUG, + endpoint: import.meta.env.VITE_APP_ENDPOINT, tags: [], cdata: [ { id: '', type: 'ContentSession' }, @@ -62,7 +62,7 @@ export const getEventOptions = () => { ver: '', pid: '', }, - env: process.env.ENV, + env: import.meta.env.ENV, uid: 'anonymous', cdata: [], rollup: {}, diff --git a/src/utils/AudioCompare.js b/src/utils/AudioCompare.jsx similarity index 100% rename from src/utils/AudioCompare.js rename to src/utils/AudioCompare.jsx diff --git a/src/utils/VoiceAnalyser.js b/src/utils/VoiceAnalyser.jsx similarity index 95% rename from src/utils/VoiceAnalyser.js rename to src/utils/VoiceAnalyser.jsx index 93e43bcc..181f8780 100644 --- a/src/utils/VoiceAnalyser.js +++ b/src/utils/VoiceAnalyser.jsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; -import { Box, CircularProgress } from "../../node_modules/@mui/material/index"; -import axios from "../../node_modules/axios/index"; -import calcCER from "../../node_modules/character-error-rate/index"; +import { Box, CircularProgress } from "@mui/material"; +import axios from "axios"; +import calcCER from "character-error-rate"; import s1 from "../assets/audio/S1.m4a"; import s2 from "../assets/audio/S2.m4a"; import s3 from "../assets/audio/S3.m4a"; @@ -69,7 +69,7 @@ function VoiceAnalyser(props) { const lang = getLocalData("lang"); const { livesData, setLivesData } = props; const [isAudioPreprocessing, setIsAudioPreprocessing] = useState( - process.env.REACT_APP_IS_AUDIOPREPROCESSING === "true" + import.meta.env.VITE_APP_IS_AUDIOPREPROCESSING === "true" ); const initiateValues = async () => { @@ -87,7 +87,7 @@ function VoiceAnalyser(props) { recordedAudio ? recordedAudio : props.contentId - ? `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${props.contentId}.wav` + ? `${import.meta.env.VITE_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${props.contentId}.wav` : AudioPath[1][10] ); set_temp_audio(audio); @@ -264,7 +264,7 @@ function VoiceAnalyser(props) { if (callUpdateLearner) { const { data: updateLearnerData } = await axios.post( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.UPDATE_LEARNER_PROFILE}/${lang}`, + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.UPDATE_LEARNER_PROFILE}/${lang}`, { original_text: originalText, audio: base64Data, @@ -356,15 +356,15 @@ function VoiceAnalyser(props) { let word_result = finalScore === 100 ? "correct" : "incorrect"; - // TODO: Remove false when REACT_APP_AWS_S3_BUCKET_NAME and keys added + // TODO: Remove false when VITE_APP_AWS_S3_BUCKET_NAME and keys added var audioFileName = ""; - if (process.env.REACT_APP_CAPTURE_AUDIO === "true" && false) { + if (import.meta.env.VITE_APP_CAPTURE_AUDIO === "true" && false) { let getContentId = currentLine; - audioFileName = `${process.env.REACT_APP_CHANNEL + audioFileName = `${import.meta.env.VITE_APP_CHANNEL }/${sessionId}-${Date.now()}-${getContentId}.wav`; const command = new PutObjectCommand({ - Bucket: process.env.REACT_APP_AWS_S3_BUCKET_NAME, + Bucket: import.meta.env.VITE_APP_AWS_S3_BUCKET_NAME, Key: audioFileName, Body: Uint8Array.from(window.atob(base64Data), (c) => c.charCodeAt(0) @@ -380,7 +380,7 @@ function VoiceAnalyser(props) { { // Required target: - process.env.REACT_APP_CAPTURE_AUDIO === "true" + import.meta.env.VITE_APP_CAPTURE_AUDIO === "true" ? `${audioFileName}` : "", // Required. Target of the response //"qid": "", // Required. Unique assessment/question id diff --git a/src/utils/constants.js b/src/utils/constants.jsx similarity index 99% rename from src/utils/constants.js rename to src/utils/constants.jsx index 21fd00f8..e74bcd6a 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.jsx @@ -132,7 +132,7 @@ export const ListenButton = (props) => { rx="35" fill="url(#paint0_linear_400_1331)" /> - + { y2="56.914" gradientUnits="userSpaceOnUse" > - - + + diff --git a/src/views/LoginPage/LoginPage.jsx b/src/views/LoginPage/LoginPage.jsx index ba6cc425..d50ebe27 100644 --- a/src/views/LoginPage/LoginPage.jsx +++ b/src/views/LoginPage/LoginPage.jsx @@ -20,7 +20,7 @@ const LoginPage = () => { try { const usernameDetails = await axios.post( - `${process.env.REACT_APP_VIRTUAL_ID_HOST}/${config.URLS.GET_VIRTUAL_ID}?username=${username}` + `${import.meta.env.VITE_APP_VIRTUAL_ID_HOST}/${config.URLS.GET_VIRTUAL_ID}?username=${username}` ); if (usernameDetails?.data?.result?.virtualID) { diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx index ef33e3d7..d681dc50 100644 --- a/src/views/Practice/Practice.jsx +++ b/src/views/Practice/Practice.jsx @@ -128,7 +128,7 @@ const Practice = () => { }, [voiceText]); const send = (score) => { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { + if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { window.parent.postMessage({ score: score, message: "all-test-rig-score", @@ -165,7 +165,7 @@ const Practice = () => { } } else { const pointsRes = await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_POINTER}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_POINTER}`, { userId: localStorage.getItem("virtualId"), sessionId: localStorage.getItem("sessionId"), @@ -199,7 +199,7 @@ const Practice = () => { let showcasePercentage = ((currentQuestion + 1) * 100) / questions.length; await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -228,7 +228,7 @@ const Practice = () => { const sub_session_id = getLocalData("sub_session_id"); const getSetResultRes = await axios.post( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_SET_RESULT}`, + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_SET_RESULT}`, { sub_session_id: sub_session_id, contentType: currentContentType, @@ -243,9 +243,9 @@ const Practice = () => { Log(data, "practice", "ET"); setPercentage(getSetData?.data?.percentage); checkFluency(currentContentType, getSetData?.data?.fluency); - if(process.env.REACT_APP_POST_LEARNER_PROGRESS === "true"){ + if(import.meta.env.VITE_APP_POST_LEARNER_PROGRESS === "true"){ await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, { userId: virtualId, sessionId: sessionId, @@ -260,7 +260,7 @@ const Practice = () => { if (getSetData.data.sessionResult === "pass") { try{ await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -294,7 +294,7 @@ const Practice = () => { ); await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -312,7 +312,7 @@ const Practice = () => { // navigate("/assesment-end"); } const resGetContent = await axios.get( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); setTotalSyllableCount(resGetContent?.data?.totalSyllableCount) @@ -385,12 +385,12 @@ const Practice = () => { const playTeacherAudio = () => { const contentId = questions[currentQuestion]?.contentId; var audio = new Audio( - `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` + `${import.meta.env.VITE_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` ); audio.addEventListener("canplaythrough", () => { set_temp_audio( new Audio( - `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` + `${import.meta.env.VITE_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` ) ); }); @@ -402,7 +402,7 @@ const Practice = () => { setLoading(true); const lang = getLocalData("lang"); const virtualId = getLocalData("virtualId"); - const sessionId = getLocalData("sessionId"); + let sessionId = getLocalData("sessionId"); if (!sessionId){ sessionId = uniqueId(); @@ -410,7 +410,7 @@ const Practice = () => { } const getMilestoneDetails = await axios.get( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` ); setLocalData( "getMilestone", @@ -425,10 +425,10 @@ const Practice = () => { setLevel(level); const resLessons = await axios.get( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_LESSON_PROGRESS_BY_ID}/${virtualId}?language=${lang}` + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_LESSON_PROGRESS_BY_ID}/${virtualId}?language=${lang}` ); const getPointersDetails = await axios.get( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); @@ -452,7 +452,7 @@ const Practice = () => { ); const resWord = await axios.get( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); setTotalSyllableCount(resWord?.data?.totalSyllableCount) setLivesData({ @@ -476,7 +476,7 @@ const Practice = () => { setIsShowCase(showcaseLevel); if (showcaseLevel) { await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -522,7 +522,7 @@ const Practice = () => { }; await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -541,7 +541,7 @@ const Practice = () => { ); let quesArr = []; const resWord = await axios.get( - `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` + `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); setTotalSyllableCount(resWord?.data?.totalSyllableCount) setLivesData({ @@ -564,7 +564,7 @@ const Practice = () => { setCurrentQuestion(practiceProgress[virtualId]?.currentQuestion || 0); setLocalData("practiceProgress", JSON.stringify(practiceProgress)); } else { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { + if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { navigate("/"); }else { navigate("/discover-start") @@ -697,7 +697,7 @@ const Practice = () => { useEffect(() => { if (questions[currentQuestion]?.contentSourceData) { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { + if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { const contentSourceData = questions[currentQuestion]?.contentSourceData || []; const stringLengths = contentSourceData.map(item => item.text.length); const length = stringLengths[0]; diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..75e628ee --- /dev/null +++ b/vite.config.js @@ -0,0 +1,15 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig(() => { + return { + build: { + outDir: 'build', + }, + plugins: [react()], + server: { + open: true, + port: 3000, + }, + }; +}); \ No newline at end of file From 8c65fd071640e270169116b590bad73ad05bb963 Mon Sep 17 00:00:00 2001 From: deepali chavhan Date: Tue, 30 Jul 2024 12:37:10 +0530 Subject: [PATCH 14/39] Task #224175 fix: Sonar Cloud Fixes for all-learner-ai-app --- src/components/Assesment/Assesment.jsx | 2 +- src/components/AssesmentEnd/AssesmentEnd.jsx | 2 +- src/index.css | 4 ++-- src/views/Practice/Practice.jsx | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index 6a2a9e2e..8039eb2c 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -344,7 +344,7 @@ export const ProfileHeader = ({ const handleProfileBack = () => { try { if (process.env.REACT_APP_IS_APP_IFRAME === "true") { - window.parent.postMessage({ type: "restore-iframe-content" }, "*"); + window.parent.postMessage({ type: "restore-iframe-content" }); navigate("/"); } else { navigate("/discover-start"); diff --git a/src/components/AssesmentEnd/AssesmentEnd.jsx b/src/components/AssesmentEnd/AssesmentEnd.jsx index db5a1456..e3b1001a 100644 --- a/src/components/AssesmentEnd/AssesmentEnd.jsx +++ b/src/components/AssesmentEnd/AssesmentEnd.jsx @@ -39,7 +39,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) diff --git a/src/index.css b/src/index.css index f97a3937..217a9822 100644 --- a/src/index.css +++ b/src/index.css @@ -118,7 +118,7 @@ color: #1cc871; -webkit-text-stroke-width: 0.5; -webkit-text-stroke-color: #00b359; - font-family: Quicksand; + font-family: sans-serif; font-size: 40px; font-style: normal; font-weight: 700; @@ -130,7 +130,7 @@ color: #c30303; -webkit-text-stroke-width: 0.5; -webkit-text-stroke-color: #c30303; - font-family: Quicksand; + font-family: sans-serif; font-size: 40px; font-style: normal; font-weight: 700; diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx index ef33e3d7..48039573 100644 --- a/src/views/Practice/Practice.jsx +++ b/src/views/Practice/Practice.jsx @@ -402,7 +402,7 @@ const Practice = () => { setLoading(true); const lang = getLocalData("lang"); const virtualId = getLocalData("virtualId"); - const sessionId = getLocalData("sessionId"); + let sessionId = getLocalData("sessionId"); if (!sessionId){ sessionId = uniqueId(); @@ -701,7 +701,7 @@ const Practice = () => { const contentSourceData = questions[currentQuestion]?.contentSourceData || []; const stringLengths = contentSourceData.map(item => item.text.length); const length = stringLengths[0]; - window.parent.postMessage({ type: 'stringLengths', length }, '*'); + window.parent.postMessage({ type: 'stringLengths', length }); } } }, [questions[currentQuestion]]); From 96689fb9c6ba70c9175307e2a7dc364434047199 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Tue, 30 Jul 2024 14:24:42 +0530 Subject: [PATCH 15/39] Update all-dev-rig.yml --- .github/workflows/all-dev-rig.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 7bac2619..40069fd6 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -3,7 +3,7 @@ name: ALL rig dev Deployment on: push: branches: - - all-1.2 + - all-1.2.1 jobs: deploy: From e5f57f56295f4b24f878c0dfe051674380951c99 Mon Sep 17 00:00:00 2001 From: deepali chavhan Date: Tue, 30 Jul 2024 15:34:55 +0530 Subject: [PATCH 16/39] Task #224175 fix: sonar issue fixed --- src/utils/AudioCompare.js | 2 +- src/views/Practice/Practice.jsx | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/utils/AudioCompare.js b/src/utils/AudioCompare.js index 1dba58c1..90f38655 100644 --- a/src/utils/AudioCompare.js +++ b/src/utils/AudioCompare.js @@ -95,7 +95,7 @@ const AudioRecorderCompair = (props) => { {(!props.dontShowListen || props.recordedAudio) && ( <> {!props.pauseAudio ? ( -
{ props.playAudio(true); }}> +
{ props.playAudio(true); }} aria-label="Play audio"> diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx index 48039573..ddb5ac52 100644 --- a/src/views/Practice/Practice.jsx +++ b/src/views/Practice/Practice.jsx @@ -215,6 +215,7 @@ const Practice = () => { currentQuestion === questions.length - 1 || isGameOver ? currentPracticeStep + 1 : currentPracticeStep; + newPracticeStep = Number(newPracticeStep); let newQuestionIndex = currentQuestion === questions.length - 1 ? 0 : currentQuestion + 1; From b350c0abeeb175b895374407a7a6c13c59b76bec Mon Sep 17 00:00:00 2001 From: deepali chavhan Date: Tue, 6 Aug 2024 12:07:33 +0530 Subject: [PATCH 17/39] TaskID #223472 feat: Conversion CRA to Vite R&D --- .husky/pre-commit | 4 +-- eslintrc.json | 3 +- package.json | 7 ++-- src/utils/AudioCompare.jsx | 66 ++++++++++++++++++++++++++++++++------ 4 files changed, 63 insertions(+), 17 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 36af2198..5342649f 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,2 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - +# .husky/pre-commit npx lint-staged diff --git a/eslintrc.json b/eslintrc.json index 5b25cb05..d0df545a 100644 --- a/eslintrc.json +++ b/eslintrc.json @@ -4,7 +4,8 @@ "plugin:import/errors", "plugin:react/recommended", "plugin:jsx-a11y/recommended", - "prettier" + "prettier", + "react-app" ], "plugins": ["react", "import", "jsx-a11y", "prettier"], "rules": { diff --git a/package.json b/package.json index 542fd128..7a794da4 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,6 @@ "canvas-confetti": "^1.9.2", "character-error-rate": "^1.1.4", "classnames": "^2.3.1", - "eslint-plugin-import": "^2.28.0", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.1", "faker": "^5.5.3", "homophones": "^1.0.1", "jwt-decode": "^4.0.0", @@ -91,7 +88,11 @@ "@vitejs/plugin-react": "^4.3.1", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", + "eslint-config-react-app": "^7.0.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsx-a11y": "^6.9.0", "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-react": "^7.35.0", "husky": "^9.0.11", "lint-staged": "^11.0.0", "prettier": "^2.3.2", diff --git a/src/utils/AudioCompare.jsx b/src/utils/AudioCompare.jsx index 90f38655..7b8f7596 100644 --- a/src/utils/AudioCompare.jsx +++ b/src/utils/AudioCompare.jsx @@ -6,7 +6,8 @@ import RecordVoiceVisualizer from "./RecordVoiceVisualizer"; import useAudioDetection from "./useAudioDetection"; const AudioRecorderCompair = (props) => { - const { startDetection, stopDetection, isSilent, isRunning, audioDetected } = useAudioDetection(); + const { startDetection, stopDetection, isSilent, isRunning, audioDetected } = + useAudioDetection(); const [status, setStatus] = useState(""); const [audioSrc, setAudioSrc] = useState(""); const [recordingInitialized, setRecordingInitialized] = useState(false); @@ -80,8 +81,19 @@ const AudioRecorderCompair = (props) => { {(() => { if (status === "recording" && recordingInitialized) { return ( -
- +
+ @@ -91,17 +103,35 @@ const AudioRecorderCompair = (props) => { ); } else { return ( -
+
{(!props.dontShowListen || props.recordedAudio) && ( <> {!props.pauseAudio ? ( -
{ props.playAudio(true); }} aria-label="Play audio"> +
+ ) : ( - { props.playAudio(false); }}> + { + props.playAudio(false); + }} + > )} @@ -110,7 +140,15 @@ const AudioRecorderCompair = (props) => {
{!props.showOnlyListen && ( - + {!props.recordedAudio ? : } )} @@ -122,10 +160,18 @@ const AudioRecorderCompair = (props) => {

- -
From f15bd8c74b7b6e54785a3fc417079253547cd5af Mon Sep 17 00:00:00 2001 From: deepali chavhan Date: Tue, 6 Aug 2024 14:30:55 +0530 Subject: [PATCH 18/39] Task #224175 fix: changes in github actions for vite --- .github/workflows/all-dev-rig.yml | 62 +++++++++++++++---------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 7bac2619..6415e224 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -44,37 +44,37 @@ jobs: - name: Build and Package Application env: SKIP_PREFLIGHT_CHECK: ${{ vars.SKIP_PREFLIGHT_CHECK }} - REACT_APP_MODE: ${{ vars.REACT_APP_MODE }} - REACT_APP_authToken: ${{ vars.REACT_APP_authToken }} - REACT_APP_PID: ${{ vars.REACT_APP_PID }} - REACT_APP_UID: ${{ vars.REACT_APP_UID }} - REACT_APP_ID: ${{ vars.REACT_APP_ID }} - REACT_APP_VER: ${{ vars.REACT_APP_VER }} - REACT_APP_TIMEDIFF: ${{ vars.REACT_APP_TIMEDIFF }} - REACT_APP_HOST: ${{ vars.REACT_APP_HOST }} - REACT_APP_ENDPOINT: ${{ vars.REACT_APP_ENDPOINT }} - REACT_APP_APISLUG: ${{ vars.REACT_APP_APISLUG }} - REACT_APP_CHANNEL: ${{ vars.REACT_APP_CHANNEL }} - REACT_APP_ENV: ${{ vars.REACT_APP_ENV }} - REACT_APP_BATCHSIZE: ${{ vars.REACT_APP_BATCHSIZE }} - REACT_APP_CONTENT_SIZE: ${{ vars.REACT_APP_CONTENT_SIZE }} - REACT_APP_LANGUAGE: ${{ vars.REACT_APP_LANGUAGE }} - REACT_APP_TELEMETRY_MODE: ${{ vars.REACT_APP_TELEMETRY_MODE }} - REACT_APP_VIRTUAL_ID_HOST: ${{ vars.REACT_APP_VIRTUAL_ID_HOST }} - REACT_APP_LEARNER_AI_ORCHESTRATION_HOST: ${{ vars.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST }} - REACT_APP_LEARNER_AI_APP_HOST: ${{ vars.REACT_APP_LEARNER_AI_APP_HOST }} - REACT_APP_CONTENT_SERVICE_APP_HOST: ${{ vars.REACT_APP_CONTENT_SERVICE_APP_HOST }} - REACT_APP_CAPTURE_AUDIO: ${{ vars.REACT_APP_CAPTURE_AUDIO }} - REACT_APP_AWS_S3_BUCKET_NAME: ${{ vars.REACT_APP_AWS_S3_BUCKET_NAME }} - REACT_APP_AWS_S3_BUCKET_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_URL }} - REACT_APP_AWS_S3_REGION: ${{ vars.REACT_APP_AWS_S3_REGION }} - REACT_APP_AWS_S3_BUCKET_CONTENT_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_CONTENT_URL }} - REACT_APP_MIN_DECIBELS: ${{ vars.REACT_APP_MIN_DECIBELS }} - REACT_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} - REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} - REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} - REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} - REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} + VITE_APP_MODE: ${{ vars.REACT_APP_MODE }} + VITE_APP_authToken: ${{ vars.REACT_APP_authToken }} + VITE_APP_PID: ${{ vars.REACT_APP_PID }} + VITE_APP_UID: ${{ vars.REACT_APP_UID }} + VITE_APP_ID: ${{ vars.REACT_APP_ID }} + VITE_APP_VER: ${{ vars.REACT_APP_VER }} + VITE_APP_TIMEDIFF: ${{ vars.REACT_APP_TIMEDIFF }} + VITE_APP_HOST: ${{ vars.REACT_APP_HOST }} + VITE_APP_ENDPOINT: ${{ vars.REACT_APP_ENDPOINT }} + VITE_APP_APISLUG: ${{ vars.REACT_APP_APISLUG }} + VITE_APP_CHANNEL: ${{ vars.REACT_APP_CHANNEL }} + VITE_APP_ENV: ${{ vars.REACT_APP_ENV }} + VITE_APP_BATCHSIZE: ${{ vars.REACT_APP_BATCHSIZE }} + VITE_APP_CONTENT_SIZE: ${{ vars.REACT_APP_CONTENT_SIZE }} + VITE_APP_LANGUAGE: ${{ vars.REACT_APP_LANGUAGE }} + VITE_APP_TELEMETRY_MODE: ${{ vars.REACT_APP_TELEMETRY_MODE }} + VITE_APP_VIRTUAL_ID_HOST: ${{ vars.REACT_APP_VIRTUAL_ID_HOST }} + VITE_APP_LEARNER_AI_ORCHESTRATION_HOST: ${{ vars.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST }} + VITE_APP_LEARNER_AI_APP_HOST: ${{ vars.REACT_APP_LEARNER_AI_APP_HOST }} + VITE_APP_CONTENT_SERVICE_APP_HOST: ${{ vars.REACT_APP_CONTENT_SERVICE_APP_HOST }} + VITE_APP_CAPTURE_AUDIO: ${{ vars.REACT_APP_CAPTURE_AUDIO }} + VITE_APP_AWS_S3_BUCKET_NAME: ${{ vars.REACT_APP_AWS_S3_BUCKET_NAME }} + VITE_APP_AWS_S3_BUCKET_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_URL }} + VITE_APP_AWS_S3_REGION: ${{ vars.REACT_APP_AWS_S3_REGION }} + VITE_APP_AWS_S3_BUCKET_CONTENT_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_CONTENT_URL }} + VITE_APP_MIN_DECIBELS: ${{ vars.REACT_APP_MIN_DECIBELS }} + VITE_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} + VITE_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} + VITE_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} + VITE_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} + VITE_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build From fabe956d6b38f6d6175e01a071e97611a3c2401c Mon Sep 17 00:00:00 2001 From: deepali chavhan Date: Tue, 6 Aug 2024 15:01:01 +0530 Subject: [PATCH 19/39] Task #223472 fix: changes in github actions for vite --- .github/workflows/all-dev-rig.yml | 5 ++++- src/utils/constants.jsx | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 6415e224..3e0e615c 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -74,7 +74,10 @@ jobs: VITE_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} VITE_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} VITE_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} - VITE_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} + VITE_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} + VITE_APP_ASR_OFFLINE_LANGUAGUAGES: ${{ vars.REACT_APP_ASR_OFFLINE_LANGUAGUAGES }} + VITE_APP_AWS_ACCESS_KEY_ID: ${{ secrets.REACT_APP_AWS_ACCESS_KEY_ID }} + _APP_AWS_SECRET_ACCESS_KEY: ${{ secrets.REACT_APP_AWS_SECRET_ACCESS_KEY }} CI: false # Disabling CI to not treat warnings as errors run: npm run build diff --git a/src/utils/constants.jsx b/src/utils/constants.jsx index e74bcd6a..6d280d18 100644 --- a/src/utils/constants.jsx +++ b/src/utils/constants.jsx @@ -3336,12 +3336,12 @@ export const levelGetContent = { { title: "P1", criteria: "word", - template: "simple" + template: "simple", }, { title: "P2", criteria: "word", - template: "simple" + template: "simple", }, { title: "P3", criteria: "sentence", template: "simple" }, { title: "P4", criteria: "sentence", template: "simple" }, @@ -3453,10 +3453,10 @@ export function callConfettiSnow() { } // since particles fall down, start a bit higher than random - timeLeft = animationEnd - Date.now(); + timeLeft = animationEnd - Date.now(); var ticks = Math.max(200, 500 * (timeLeft / duration)); var skew; - skew = Math.max(0.8, skew - 0.001); + skew = Math.max(0.8, skew - 0.001); confetti({ particleCount: 1, @@ -3516,20 +3516,20 @@ export const levelConfig = { 9: { color: "#00C7E2" }, }; - const AllLanguages = [ +const AllLanguages = [ { name: "தமிழ்", lang: "ta", symbol: "இ" }, { name: "English", lang: "en", symbol: "A" }, { name: "हिंदी", lang: "hi", symbol: "क" }, - { name: "ಕನ್ನಡ", lang: "kn", symbol: "ಕ" } , - { name: "తెలుగు", lang: "te", symbol: "ఈ" } , + { name: "ಕನ್ನಡ", lang: "kn", symbol: "ಕ" }, + { name: "తెలుగు", lang: "te", symbol: "ఈ" }, ]; -const appLanguages = import.meta.env.VITE_APP_IS_APP_LANGUAGES - ? JSON.parse(import.meta.env.VITE_APP_IS_APP_LANGUAGES) +const appLanguages = import.meta.env.VITE_APP_LANGUAGES + ? JSON.parse(import.meta.env.VITE_APP_LANGUAGES) : []; -export const languages = AllLanguages.filter(lang => - appLanguages.includes(lang.lang) +export const languages = AllLanguages.filter((lang) => + appLanguages.includes(lang.lang) ); export const randomizeArray = (arr) => { From ddf546eb4e6170a195654e9c5f1aba8c879295bb Mon Sep 17 00:00:00 2001 From: deepali chavhan Date: Tue, 6 Aug 2024 15:03:25 +0530 Subject: [PATCH 20/39] Task #223472 fix: changes in github actions for vite --- .github/workflows/all-dev-rig.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 3e0e615c..f33afcba 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -77,7 +77,7 @@ jobs: VITE_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} VITE_APP_ASR_OFFLINE_LANGUAGUAGES: ${{ vars.REACT_APP_ASR_OFFLINE_LANGUAGUAGES }} VITE_APP_AWS_ACCESS_KEY_ID: ${{ secrets.REACT_APP_AWS_ACCESS_KEY_ID }} - _APP_AWS_SECRET_ACCESS_KEY: ${{ secrets.REACT_APP_AWS_SECRET_ACCESS_KEY }} + VITE_APP_AWS_SECRET_ACCESS_KEY: ${{ secrets.REACT_APP_AWS_SECRET_ACCESS_KEY }} CI: false # Disabling CI to not treat warnings as errors run: npm run build From f391328d76166d4aef84853247ac3dc274efe37f Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Tue, 6 Aug 2024 15:35:37 +0530 Subject: [PATCH 21/39] Issueid #223945 fix: When user is log out we are redirecting to home page --- .github/workflows/all-app-sandbox.yml | 2 +- .github/workflows/all-dev-rig.yml | 2 +- .github/workflows/all-prod-rig.yml | 2 +- src/components/Assesment/Assesment.jsx | 2 +- src/routes/index.js | 24 ++++++++++++------------ src/utils/constants.js | 4 ++-- src/views/AppContent/AppContent.jsx | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/all-app-sandbox.yml b/.github/workflows/all-app-sandbox.yml index 45f36483..b3e750a4 100644 --- a/.github/workflows/all-app-sandbox.yml +++ b/.github/workflows/all-app-sandbox.yml @@ -74,7 +74,7 @@ jobs: REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} - REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} + REACT_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 40069fd6..1bd8de6f 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -74,7 +74,7 @@ jobs: REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} - REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} + REACT_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build diff --git a/.github/workflows/all-prod-rig.yml b/.github/workflows/all-prod-rig.yml index d82589ea..98b6d296 100644 --- a/.github/workflows/all-prod-rig.yml +++ b/.github/workflows/all-prod-rig.yml @@ -74,7 +74,7 @@ jobs: REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} - REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} + REACT_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index 8039eb2c..3a6385bb 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -357,7 +357,7 @@ export const ProfileHeader = ({ const handleLogout = () => { localStorage.clear(); end({}); - navigate("/Login"); + navigate("/login"); }; const CustomIconButton = styled(IconButton)({ diff --git a/src/routes/index.js b/src/routes/index.js index 7891f52b..db7142a2 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -3,6 +3,12 @@ import * as reviews from "../views"; const routData = [ + { + id: "route-001", + path: "/", + component: reviews.DiscoverStart, + requiresAuth: true, + }, { id: "route-002", path: "/discover", @@ -53,6 +59,12 @@ const routData = [ component: reviews.PracticeRedirectPage, requiresAuth: true, }, + { + id: "route-010", + path: "/login", + component: reviews.LoginPage, + requiresAuth: false, + }, ]; // add login route for test rig @@ -61,12 +73,6 @@ const isLogin = process.env.REACT_APP_IS_IN_APP_AUTHORISATION === 'true'; if (isLogin && !virtualId) { routData.push( - { - id: "route-001", - path: "/", - component: reviews.LoginPage, - requiresAuth: true, - }, { id: "route-000", path: "*", @@ -76,12 +82,6 @@ if (isLogin && !virtualId) { ); }else { routData.push( - { - id: "route-001", - path: "/", - component: reviews.DiscoverStart, - requiresAuth: false, - }, { id: "route-000", path: "*", 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/AppContent/AppContent.jsx b/src/views/AppContent/AppContent.jsx index 7cf3cf9f..d054867a 100644 --- a/src/views/AppContent/AppContent.jsx +++ b/src/views/AppContent/AppContent.jsx @@ -7,7 +7,7 @@ const PrivateRoute = (props) => { const navigate = useNavigate(); useEffect(() => { if (!virtualId && props.requiresAuth) { - navigate("/"); + navigate("/login"); } }, [virtualId]); From c9eabbf053f9143af99392069c06ad05a2e316ff Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Tue, 6 Aug 2024 16:21:34 +0530 Subject: [PATCH 22/39] Issueid #223945 fix: When user is log out we are redirecting to home page --- src/utils/constants.jsx | 3544 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 3544 insertions(+) diff --git a/src/utils/constants.jsx b/src/utils/constants.jsx index e69de29b..6d280d18 100644 --- a/src/utils/constants.jsx +++ b/src/utils/constants.jsx @@ -0,0 +1,3544 @@ +import confetti from "canvas-confetti"; +import * as React from "react"; + +export const getLocalData = (item) => { + return localStorage.getItem(item); +}; + +export const setLocalData = (item, value) => { + return localStorage.setItem(item, value); +}; + +export function replaceAll(string, search, replace) { + return string.split(search).join(replace); +} + +export function compareArrays(arr1, arr2) { + let words_result = []; + + // Iterate over each element and compare + for (var k in arr1) { + if (arr2[k] === "" || arr2[k] === undefined) { + // Element not available on the same key + words_result.push("-1"); + } else if (arr1[k] === arr2[k]) { + // Elements match on the same key + words_result.push("1"); + } else { + // Element does not match on the same key + words_result.push("0"); + } + } + if (arr1.length < arr2.length) { + for (let i = arr1.length; i < arr2.length; i++) { + words_result.push("-1"); + } + } + return words_result; +} + +export const questionsList = [ + { + question: + "One day, a dog was passing by a river. He had a bone in his mouth.", + type: "sentence", + }, + { + question: "He looked into the water and saw his own reflection in it.", + type: "sentence", + }, + { + question: "He started barking bow-wow, and bone fell into the water.", + type: "sentence", + }, + { question: "River", type: "word" }, + { question: "Water", type: "word" }, + { question: "Barking", type: "word" }, + { + question: + "There are many different kinds of animals that live in China. Tigers and leopards are animals that live in China's forests in the north.", + type: "paragraph", + }, + { + question: + "Bali and Lombok are neighbouring islands both are part of the Indonesian archipelago. It is easy to appreciate each island as an attractive tourist destination.", + type: "paragraph", + }, + { + question: + "Martin Luther led many demonstrations against racism. He delivered his message in a non-violent manner. The jail sentence he received was four months.", + type: "paragraph", + }, +]; + +export const NextButton = (props) => { + return ( + + + + + + + + + + + + + + + + + ); +}; + +export const ListenButton = (props) => { + return ( + + + + + + + + + + + + + + + + + + ); +}; + +export const SpeakButton = (props) => ( + + + + + + + + + + + + + + + + +); + +export const StopButton = (props) => ( + + + + + + + + + + + + + + + + +); + +export const AudioPlayerSvg = (props) => { + return ( + + + + ); +}; + +export const PlayAudioButton = (props) => ( + + + + +); + +export const StopAudioButton = (props) => ( + + + +); + +export const AudioBarSvg = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const AudioBarColoredSvg = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const SubmitButton = (props) => ( + + + + + + + + + + +); + +export const LevelOne = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LevelTwo = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LevelThree = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LevelFour = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LevelFive = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LevelSix = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LevelSeven = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LevelEight = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LevelNine = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const LetsStart = (props) => ( + + + + + + + + + + +); +export const StartAssessmentButton = (props) => ( + + + + + +); + +export const GoodMood = (props) => ( + + + +); + +export const AverageMood = (props) => ( + + + +); + +export const BadMood = (props) => ( + + + +); + +export const GreenTick = (props) => ( + + + + + + + + + +); + +export const LevelRight = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const SelectLanguageButton = (props) => ( + + + + + + + +); + +export const RoundTick = (props) => ( + + + + + + + + + + +); + +export const RetryIcon = (props) => ( + + + + + + + + + + + + + + + + +); + +export const AssesmentCompletePlane = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const HeartRed = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const HeartBlack = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export const SessionID = "13900744731701973109305"; +export const UserID = "1390074473"; + +export const practiceSteps = [ + { name: "P1", fullName: "Practice 1" }, + { name: "P2", fullName: "Practice 2" }, + { name: "P3", fullName: "Practice 3" }, + { name: "P4", fullName: "Practice 4" }, + { name: "S1", fullName: "Showcase 1" }, + { name: "P5", fullName: "Practice 5" }, + { name: "P6", fullName: "Practice 6" }, + { name: "P7", fullName: "Practice 7" }, + { name: "P8", fullName: "Practice 8" }, + { name: "S2", fullName: "Showcase 2" }, +]; + +export const levelGetContent = { + 0: [ + { title: "P1", criteria: "word", template: "simple" }, + { title: "P2", criteria: "word", template: "simple" }, + { title: "P3", criteria: "word", template: "simple" }, + { title: "P4", criteria: "word", template: "simple" }, + { title: "S1", criteria: "word", template: "simple" }, + { title: "P5", criteria: "word", template: "simple" }, + { title: "P6", criteria: "word", template: "simple" }, + { title: "P7", criteria: "word", template: "simple" }, + { title: "P8", criteria: "word", template: "simple" }, + { title: "S2", criteria: "word", template: "simple" }, + ], + 1: [ + { title: "P1", criteria: "word", template: "simple" }, + { title: "P2", criteria: "word", template: "simple" }, + { title: "P3", criteria: "word", template: "simple" }, + { title: "P4", criteria: "word", template: "simple" }, + { title: "S1", criteria: "word", template: "simple" }, + { title: "P5", criteria: "word", template: "simple" }, + { title: "P6", criteria: "word", template: "simple" }, + { title: "P7", criteria: "word", template: "simple" }, + { title: "P8", criteria: "word", template: "simple" }, + { title: "S2", criteria: "word", template: "simple" }, + ], + 2: [ + { title: "P1", criteria: "char", template: "simple" }, + { title: "P2", criteria: "char", template: "simple" }, + { title: "P3", criteria: "word", template: "simple", mechanism: "audio" }, + { title: "P4", criteria: "word", template: "simple", mechanism: "audio" }, + { title: "S1", criteria: "word", template: "simple" }, + { title: "P5", criteria: "word", template: "simple" }, + { title: "P6", criteria: "word", template: "simple" }, + { title: "P7", criteria: "word", template: "simple", mechanism: "audio" }, + { title: "P8", criteria: "word", template: "simple", mechanism: "audio" }, + { title: "S2", criteria: "word", template: "simple" }, + ], + 3: [ + { + title: "P1", + criteria: "word", + template: "simple", + }, + { + title: "P2", + criteria: "word", + template: "simple", + }, + { title: "P3", criteria: "sentence", template: "simple" }, + { title: "P4", criteria: "sentence", template: "simple" }, + { title: "S1", criteria: "sentence", template: "simple" }, + { + title: "P5", + criteria: "sentence", + template: "simple", + mechanism: "fillInTheBlank", + }, + { + title: "P6", + criteria: "sentence", + template: "simple", + mechanism: "fillInTheBlank", + }, + { title: "P7", criteria: "sentence", template: "simple" }, + { title: "P8", criteria: "sentence", template: "simple" }, + { title: "S2", criteria: "sentence", template: "simple" }, + ], + 4: [ + { title: "P1", criteria: "word", template: "simple" }, + { title: "P2", criteria: "word", template: "simple" }, + { title: "P3", criteria: "sentence", template: "simple" }, + { title: "P4", criteria: "sentence", template: "simple" }, + { title: "S1", criteria: "sentence", template: "simple" }, + { title: "P5", criteria: "sentence", template: "simple" }, + { title: "P6", criteria: "sentence", template: "simple" }, + { title: "P7", criteria: "sentence", template: "simple" }, + { title: "P8", criteria: "sentence", template: "simple" }, + { title: "S2", criteria: "sentence", template: "simple" }, + ], + 5: [ + { title: "P1", criteria: "sentence", template: "simple" }, + { title: "P2", criteria: "sentence", template: "simple" }, + { title: "P3", criteria: "sentence", template: "simple" }, + { title: "P4", criteria: "sentence", template: "simple" }, + { title: "S1", criteria: "sentence", template: "simple" }, + { title: "P5", criteria: "sentence", template: "simple" }, + { title: "P6", criteria: "sentence", template: "simple" }, + { title: "P7", criteria: "sentence", template: "simple" }, + { title: "P8", criteria: "sentence", template: "simple" }, + { title: "S2", criteria: "sentence", template: "simple" }, + ], + 6: [ + { title: "P1", criteria: "sentence", template: "simple" }, + { title: "P2", criteria: "sentence", template: "simple" }, + { title: "P3", criteria: "paragraph", template: "simple" }, + { title: "P4", criteria: "paragraph", template: "simple" }, + { title: "S1", criteria: "paragraph", template: "simple" }, + { title: "P5", criteria: "sentence", template: "simple" }, + { title: "P6", criteria: "paragraph", template: "simple" }, + { title: "P7", criteria: "paragraph", template: "simple" }, + { title: "P8", criteria: "paragraph", template: "simple" }, + { title: "S2", criteria: "paragraph", template: "simple" }, + ], + 7: [ + { title: "P1", criteria: "sentence", template: "simple" }, + { title: "P2", criteria: "sentence", template: "simple" }, + { title: "P3", criteria: "paragraph", template: "simple" }, + { title: "P4", criteria: "paragraph", template: "simple" }, + { title: "S1", criteria: "paragraph", template: "simple" }, + { title: "P5", criteria: "paragraph", template: "simple" }, + { title: "P6", criteria: "paragraph", template: "simple" }, + { title: "P7", criteria: "paragraph", template: "simple" }, + { title: "P8", criteria: "paragraph", template: "simple" }, + { title: "S2", criteria: "paragraph", template: "simple" }, + ], + 8: [ + { title: "P1", criteria: "sentence", template: "simple" }, + { title: "P2", criteria: "sentence", template: "simple" }, + { title: "P3", criteria: "paragraph", template: "simple" }, + { title: "P4", criteria: "paragraph", template: "simple" }, + { title: "S1", criteria: "paragraph", template: "simple" }, + { title: "P5", criteria: "paragraph", template: "simple" }, + { title: "P6", criteria: "paragraph", template: "simple" }, + { title: "P7", criteria: "paragraph", template: "simple" }, + { title: "P8", criteria: "paragraph", template: "simple" }, + { title: "S2", criteria: "paragraph", template: "simple" }, + ], + 9: [ + { title: "P1", criteria: "sentence", template: "simple" }, + { title: "P2", criteria: "sentence", template: "simple" }, + { title: "P3", criteria: "paragraph", template: "simple" }, + { title: "P4", criteria: "paragraph", template: "simple" }, + { title: "S1", criteria: "paragraph", template: "simple" }, + { title: "P5", criteria: "paragraph", template: "simple" }, + { title: "P6", criteria: "paragraph", template: "simple" }, + { title: "P7", criteria: "paragraph", template: "simple" }, + { title: "P8", criteria: "paragraph", template: "simple" }, + { title: "S2", criteria: "paragraph", template: "simple" }, + ], +}; + +export function callConfettiSnow() { + var duration = 3 * 1000; + var animationEnd = Date.now() + duration; + // var defaults = { startVelocity: 30, spread: 360, ticks: 60, zIndex: 0 }; + + // function randomInRange(min, max) { + // return Math.random() * (max - min) + min; + // } + + var interval = setInterval(function () { + var timeLeft = animationEnd - Date.now(); + + if (timeLeft <= 0) { + return clearInterval(interval); + } + + // since particles fall down, start a bit higher than random + timeLeft = animationEnd - Date.now(); + var ticks = Math.max(200, 500 * (timeLeft / duration)); + var skew; + skew = Math.max(0.8, skew - 0.001); + + confetti({ + particleCount: 1, + startVelocity: 0, + ticks: ticks, + origin: { + x: Math.random(), + // since particles fall down, skew start toward the top + y: Math.random() * skew - 0.2, + }, + colors: ["#3298D6"], + shapes: ["circle"], + }); + }, 250); +} + +export const callConfetti = () => { + var duration = 3 * 1000; + var animationEnd = Date.now() + duration; + var defaults = { startVelocity: 30, spread: 360, ticks: 60, zIndex: 0 }; + + function randomInRange(min, max) { + return Math.random() * (max - min) + min; + } + + var interval = setInterval(function () { + var timeLeft = animationEnd - Date.now(); + + if (timeLeft <= 0) { + return clearInterval(interval); + } + + var particleCount = 50 * (timeLeft / duration); + // since particles fall down, start a bit higher than random + confetti({ + ...defaults, + particleCount, + origin: { x: randomInRange(0.1, 0.3), y: Math.random() - 0.2 }, + }); + confetti({ + ...defaults, + particleCount, + origin: { x: randomInRange(0.7, 0.9), y: Math.random() - 0.2 }, + }); + }, 250); +}; + +export const levelConfig = { + 1: { color: "#3872C1" }, + 2: { color: "#FF1276" }, + 3: { color: "#FFB31F" }, + 4: { color: "#BC00FF" }, + 5: { color: "#37C473" }, + 6: { color: "#F810E1" }, + 7: { color: "#634AFF" }, + 8: { color: "#B4CF12" }, + 9: { color: "#00C7E2" }, +}; + +const AllLanguages = [ + { name: "தமிழ்", lang: "ta", symbol: "இ" }, + { name: "English", lang: "en", symbol: "A" }, + { name: "हिंदी", lang: "hi", symbol: "क" }, + { name: "ಕನ್ನಡ", lang: "kn", symbol: "ಕ" }, + { name: "తెలుగు", lang: "te", symbol: "ఈ" }, +]; + +const appLanguages = import.meta.env.VITE_APP_LANGUAGES + ? JSON.parse(import.meta.env.VITE_APP_LANGUAGES) + : []; + +export const languages = AllLanguages.filter((lang) => + appLanguages.includes(lang.lang) +); + +export const randomizeArray = (arr) => { + let wordsArr = [...arr]; + for (let i = wordsArr.length - 1; i > 0; i--) { + let j = Math.floor(Math.random() * i); + let k = wordsArr[i]; + wordsArr[i] = wordsArr[j]; + wordsArr[j] = k; + } + return wordsArr; +}; From e18ed85dc8bd9c04906fc13530b322aaafb9bca5 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Mon, 12 Aug 2024 18:01:26 +0530 Subject: [PATCH 23/39] Revert "Task #223472 fix: changes in github actions for vite" --- .github/workflows/all-dev-rig.yml | 5 +---- src/utils/constants.jsx | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index f33afcba..6415e224 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -74,10 +74,7 @@ jobs: VITE_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} VITE_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} VITE_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} - VITE_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} - VITE_APP_ASR_OFFLINE_LANGUAGUAGES: ${{ vars.REACT_APP_ASR_OFFLINE_LANGUAGUAGES }} - VITE_APP_AWS_ACCESS_KEY_ID: ${{ secrets.REACT_APP_AWS_ACCESS_KEY_ID }} - VITE_APP_AWS_SECRET_ACCESS_KEY: ${{ secrets.REACT_APP_AWS_SECRET_ACCESS_KEY }} + VITE_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build diff --git a/src/utils/constants.jsx b/src/utils/constants.jsx index 6d280d18..e74bcd6a 100644 --- a/src/utils/constants.jsx +++ b/src/utils/constants.jsx @@ -3336,12 +3336,12 @@ export const levelGetContent = { { title: "P1", criteria: "word", - template: "simple", + template: "simple" }, { title: "P2", criteria: "word", - template: "simple", + template: "simple" }, { title: "P3", criteria: "sentence", template: "simple" }, { title: "P4", criteria: "sentence", template: "simple" }, @@ -3453,10 +3453,10 @@ export function callConfettiSnow() { } // since particles fall down, start a bit higher than random - timeLeft = animationEnd - Date.now(); + timeLeft = animationEnd - Date.now(); var ticks = Math.max(200, 500 * (timeLeft / duration)); var skew; - skew = Math.max(0.8, skew - 0.001); + skew = Math.max(0.8, skew - 0.001); confetti({ particleCount: 1, @@ -3516,20 +3516,20 @@ export const levelConfig = { 9: { color: "#00C7E2" }, }; -const AllLanguages = [ + const AllLanguages = [ { name: "தமிழ்", lang: "ta", symbol: "இ" }, { name: "English", lang: "en", symbol: "A" }, { name: "हिंदी", lang: "hi", symbol: "क" }, - { name: "ಕನ್ನಡ", lang: "kn", symbol: "ಕ" }, - { name: "తెలుగు", lang: "te", symbol: "ఈ" }, + { name: "ಕನ್ನಡ", lang: "kn", symbol: "ಕ" } , + { name: "తెలుగు", lang: "te", symbol: "ఈ" } , ]; -const appLanguages = import.meta.env.VITE_APP_LANGUAGES - ? JSON.parse(import.meta.env.VITE_APP_LANGUAGES) +const appLanguages = import.meta.env.VITE_APP_IS_APP_LANGUAGES + ? JSON.parse(import.meta.env.VITE_APP_IS_APP_LANGUAGES) : []; -export const languages = AllLanguages.filter((lang) => - appLanguages.includes(lang.lang) +export const languages = AllLanguages.filter(lang => + appLanguages.includes(lang.lang) ); export const randomizeArray = (arr) => { From 614f37e4337628ad815c5f8dcab38e87fa81c503 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Mon, 12 Aug 2024 18:02:13 +0530 Subject: [PATCH 24/39] Revert "TaskID #223472 feat: Conversion CRA to Vite R&D" --- .github/workflows/all-dev-rig.yml | 64 +++++++++--------- .husky/pre-commit | 4 +- eslintrc.json | 3 +- package.json | 23 +++---- index.html => public/index.html | 5 +- src/{App.jsx => App.js} | 21 +++--- src/components/Assesment/Assesment.jsx | 14 ++-- src/components/AssesmentEnd/AssesmentEnd.jsx | 4 +- src/components/DiscoverEnd/DiscoverEnd.jsx | 4 +- .../DiscoverSentance/DiscoverSentance.jsx | 34 +++++----- src/components/Practice/Mechanics3.jsx | 2 +- src/config/awsS3.js | 6 +- src/index.js | 15 +++++ src/index.jsx | 13 ---- src/routes/index.js | 2 +- src/services/telementryService.js | 18 ++--- src/services/telemetryService.js | 18 ++--- .../{AudioCompare.jsx => AudioCompare.js} | 66 +++---------------- .../{VoiceAnalyser.jsx => VoiceAnalyser.js} | 22 +++---- src/utils/{constants.jsx => constants.js} | 10 +-- src/views/LoginPage/LoginPage.jsx | 2 +- src/views/Practice/Practice.jsx | 41 ++++++------ vite.config.js | 15 ----- 23 files changed, 172 insertions(+), 234 deletions(-) rename index.html => public/index.html (89%) rename src/{App.jsx => App.js} (72%) create mode 100644 src/index.js delete mode 100644 src/index.jsx rename src/utils/{AudioCompare.jsx => AudioCompare.js} (65%) rename src/utils/{VoiceAnalyser.jsx => VoiceAnalyser.js} (95%) rename src/utils/{constants.jsx => constants.js} (99%) delete mode 100644 vite.config.js diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 6415e224..40069fd6 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -3,7 +3,7 @@ name: ALL rig dev Deployment on: push: branches: - - all-1.2 + - all-1.2.1 jobs: deploy: @@ -44,37 +44,37 @@ jobs: - name: Build and Package Application env: SKIP_PREFLIGHT_CHECK: ${{ vars.SKIP_PREFLIGHT_CHECK }} - VITE_APP_MODE: ${{ vars.REACT_APP_MODE }} - VITE_APP_authToken: ${{ vars.REACT_APP_authToken }} - VITE_APP_PID: ${{ vars.REACT_APP_PID }} - VITE_APP_UID: ${{ vars.REACT_APP_UID }} - VITE_APP_ID: ${{ vars.REACT_APP_ID }} - VITE_APP_VER: ${{ vars.REACT_APP_VER }} - VITE_APP_TIMEDIFF: ${{ vars.REACT_APP_TIMEDIFF }} - VITE_APP_HOST: ${{ vars.REACT_APP_HOST }} - VITE_APP_ENDPOINT: ${{ vars.REACT_APP_ENDPOINT }} - VITE_APP_APISLUG: ${{ vars.REACT_APP_APISLUG }} - VITE_APP_CHANNEL: ${{ vars.REACT_APP_CHANNEL }} - VITE_APP_ENV: ${{ vars.REACT_APP_ENV }} - VITE_APP_BATCHSIZE: ${{ vars.REACT_APP_BATCHSIZE }} - VITE_APP_CONTENT_SIZE: ${{ vars.REACT_APP_CONTENT_SIZE }} - VITE_APP_LANGUAGE: ${{ vars.REACT_APP_LANGUAGE }} - VITE_APP_TELEMETRY_MODE: ${{ vars.REACT_APP_TELEMETRY_MODE }} - VITE_APP_VIRTUAL_ID_HOST: ${{ vars.REACT_APP_VIRTUAL_ID_HOST }} - VITE_APP_LEARNER_AI_ORCHESTRATION_HOST: ${{ vars.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST }} - VITE_APP_LEARNER_AI_APP_HOST: ${{ vars.REACT_APP_LEARNER_AI_APP_HOST }} - VITE_APP_CONTENT_SERVICE_APP_HOST: ${{ vars.REACT_APP_CONTENT_SERVICE_APP_HOST }} - VITE_APP_CAPTURE_AUDIO: ${{ vars.REACT_APP_CAPTURE_AUDIO }} - VITE_APP_AWS_S3_BUCKET_NAME: ${{ vars.REACT_APP_AWS_S3_BUCKET_NAME }} - VITE_APP_AWS_S3_BUCKET_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_URL }} - VITE_APP_AWS_S3_REGION: ${{ vars.REACT_APP_AWS_S3_REGION }} - VITE_APP_AWS_S3_BUCKET_CONTENT_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_CONTENT_URL }} - VITE_APP_MIN_DECIBELS: ${{ vars.REACT_APP_MIN_DECIBELS }} - VITE_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} - VITE_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} - VITE_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} - VITE_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} - VITE_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} + REACT_APP_MODE: ${{ vars.REACT_APP_MODE }} + REACT_APP_authToken: ${{ vars.REACT_APP_authToken }} + REACT_APP_PID: ${{ vars.REACT_APP_PID }} + REACT_APP_UID: ${{ vars.REACT_APP_UID }} + REACT_APP_ID: ${{ vars.REACT_APP_ID }} + REACT_APP_VER: ${{ vars.REACT_APP_VER }} + REACT_APP_TIMEDIFF: ${{ vars.REACT_APP_TIMEDIFF }} + REACT_APP_HOST: ${{ vars.REACT_APP_HOST }} + REACT_APP_ENDPOINT: ${{ vars.REACT_APP_ENDPOINT }} + REACT_APP_APISLUG: ${{ vars.REACT_APP_APISLUG }} + REACT_APP_CHANNEL: ${{ vars.REACT_APP_CHANNEL }} + REACT_APP_ENV: ${{ vars.REACT_APP_ENV }} + REACT_APP_BATCHSIZE: ${{ vars.REACT_APP_BATCHSIZE }} + REACT_APP_CONTENT_SIZE: ${{ vars.REACT_APP_CONTENT_SIZE }} + REACT_APP_LANGUAGE: ${{ vars.REACT_APP_LANGUAGE }} + REACT_APP_TELEMETRY_MODE: ${{ vars.REACT_APP_TELEMETRY_MODE }} + REACT_APP_VIRTUAL_ID_HOST: ${{ vars.REACT_APP_VIRTUAL_ID_HOST }} + REACT_APP_LEARNER_AI_ORCHESTRATION_HOST: ${{ vars.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST }} + REACT_APP_LEARNER_AI_APP_HOST: ${{ vars.REACT_APP_LEARNER_AI_APP_HOST }} + REACT_APP_CONTENT_SERVICE_APP_HOST: ${{ vars.REACT_APP_CONTENT_SERVICE_APP_HOST }} + REACT_APP_CAPTURE_AUDIO: ${{ vars.REACT_APP_CAPTURE_AUDIO }} + REACT_APP_AWS_S3_BUCKET_NAME: ${{ vars.REACT_APP_AWS_S3_BUCKET_NAME }} + REACT_APP_AWS_S3_BUCKET_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_URL }} + REACT_APP_AWS_S3_REGION: ${{ vars.REACT_APP_AWS_S3_REGION }} + REACT_APP_AWS_S3_BUCKET_CONTENT_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_CONTENT_URL }} + REACT_APP_MIN_DECIBELS: ${{ vars.REACT_APP_MIN_DECIBELS }} + REACT_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} + REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} + REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} + REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} + REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build diff --git a/.husky/pre-commit b/.husky/pre-commit index 5342649f..36af2198 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1,4 @@ -# .husky/pre-commit +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + npx lint-staged diff --git a/eslintrc.json b/eslintrc.json index d0df545a..5b25cb05 100644 --- a/eslintrc.json +++ b/eslintrc.json @@ -4,8 +4,7 @@ "plugin:import/errors", "plugin:react/recommended", "plugin:jsx-a11y/recommended", - "prettier", - "react-app" + "prettier" ], "plugins": ["react", "import", "jsx-a11y", "prettier"], "rules": { diff --git a/package.json b/package.json index 7a794da4..7948ced6 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "react-infinite-scroll-component": "^6.1.0", "react-redux": "^9.1.0", "react-router-dom": "^6.0.2", + "react-scripts": "5.0.1", "react-virtualized": "^9.22.3", "react-virtualized-auto-sizer": "^1.0.6", "react-window": "^1.8.6", @@ -42,12 +43,14 @@ "sass": "^1.44.0", "split-graphemes": "^0.5.0", "use-sound": "^4.0.1", - "web-vitals": "^2.1.4" + "web-vitals": "^2.1.4", + "eslint-plugin-import": "^2.28.0", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.1" }, "scripts": { - "start": "vite", - "build": "vite build", - "serve": "vite preview", + "start": "react-scripts start", + "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "prettier:cli": "prettier \"src/**/*.js\" \"**/*.json\"", @@ -84,22 +87,16 @@ ] }, "devDependencies": { - "@mui/styles": "^5.15.10", - "@vitejs/plugin-react": "^4.3.1", "eslint": "^7.32.0", + "prettier": "^2.3.2", "eslint-config-prettier": "^8.3.0", - "eslint-config-react-app": "^7.0.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsx-a11y": "^6.9.0", "eslint-plugin-prettier": "^3.4.0", - "eslint-plugin-react": "^7.35.0", "husky": "^9.0.11", "lint-staged": "^11.0.0", - "prettier": "^2.3.2", "react": "^18.2.0", - "vite": "^5.3.4" + "@mui/styles": "^5.15.10" }, - "lint-staged": { + "lint-staged": { "src/**/*.{js,jsx}": [ "npx eslint --fix", "npx prettier --write" diff --git a/index.html b/public/index.html similarity index 89% rename from index.html rename to public/index.html index 558ecdc0..6f15aaa8 100644 --- a/index.html +++ b/public/index.html @@ -13,7 +13,7 @@ content="Base React App structure for Devigital Systems Projects" /> - + EkStep -
- +
diff --git a/src/App.jsx b/src/App.js similarity index 72% rename from src/App.jsx rename to src/App.js index eea78816..a2c813c9 100644 --- a/src/App.jsx +++ b/src/App.js @@ -8,8 +8,7 @@ import { AppContent } from './views'; import theme from './assets/styles/theme'; import { initialize } from './services/telementryService'; import { startEvent } from './services/callTelemetryIntract'; -import '../src/index.css'; -// import '@project-sunbird/telemetry-sdk/index.js'; +import '@project-sunbird/telemetry-sdk/index.js'; const App = () => { const ranonce = useRef(false); @@ -25,27 +24,27 @@ const App = () => { await initialize({ context: { - mode: import.meta.env.VITE_APP_MODE, // To identify preview used by the user to play/edit/preview + mode: process.env.REACT_APP_MODE, // To identify preview used by the user to play/edit/preview authToken: '', // Auth key to make api calls did: did, // Unique id to identify the device or browser uid: 'anonymous', - channel: import.meta.env.VITE_APP_CHANNEL, // Unique id of the channel(Channel ID) - env: import.meta.env.VITE_APP_ENV, + channel: process.env.REACT_APP_CHANNEL, // Unique id of the channel(Channel ID) + env: process.env.REACT_APP_ENV, pdata: { // optional - id: import.meta.env.VITE_APP_ID, // Producer ID. For ex: For sunbird it would be "portal" or "genie" - ver: import.meta.env.VITE_APP_VER, // Version of the App - pid: import.meta.env.VITE_APP_PID, // Optional. In case the component is distributed, then which instance of that component + 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 }, tags: [ // Defines the tags data '', ], timeDiff: 0, // Defines the time difference// Defines the object roll up data - host: import.meta.env.VITE_APP_HOST, // Defines the from which domain content should be load - endpoint: import.meta.env.VITE_APP_ENDPOINT, - apislug: import.meta.env.VITE_APP_APISLUG, + host: process.env.REACT_APP_HOST, // Defines the from which domain content should be load + endpoint: process.env.REACT_APP_ENDPOINT, + apislug: process.env.REACT_APP_APISLUG, }, config: {}, // tslint:disable-next-line:max-line-length diff --git a/src/components/Assesment/Assesment.jsx b/src/components/Assesment/Assesment.jsx index d38d858a..3a6385bb 100644 --- a/src/components/Assesment/Assesment.jsx +++ b/src/components/Assesment/Assesment.jsx @@ -343,7 +343,7 @@ export const ProfileHeader = ({ const handleProfileBack = () => { try { - if (import.meta.env.VITE_APP_IS_APP_IFRAME === "true") { + if (process.env.REACT_APP_IS_APP_IFRAME === "true") { window.parent.postMessage({ type: "restore-iframe-content" }); navigate("/"); } else { @@ -519,7 +519,7 @@ export const ProfileHeader = ({ - {import.meta.env.VITE_APP_IS_IN_APP_AUTHORISATION === "true" && ( + {process.env.REACT_APP_IS_IN_APP_AUTHORISATION === "true" && ( @@ -568,10 +568,10 @@ const Assesment = ({ discoverStart }) => { (async () => { setLocalData("profileName", username); const usernameDetails = await axios.post( - `${import.meta.env.VITE_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}` ); const getMilestoneDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${usernameDetails?.data?.result?.virtualID}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${usernameDetails?.data?.result?.virtualID}?language=${lang}` ); localStorage.setItem( @@ -594,7 +594,7 @@ const Assesment = ({ discoverStart }) => { localStorage.setItem("lang", lang || "ta"); const getPointersDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${usernameDetails?.data?.result?.virtualID}/${session_id}?language=${lang}` + `${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); @@ -605,7 +605,7 @@ const Assesment = ({ discoverStart }) => { const virtualId = getLocalData("virtualId"); const language = lang; const getMilestoneDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${language}` + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${language}` ); localStorage.setItem( "getMilestone", @@ -625,7 +625,7 @@ const Assesment = ({ discoverStart }) => { if (virtualId) { const getPointersDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); } diff --git a/src/components/AssesmentEnd/AssesmentEnd.jsx b/src/components/AssesmentEnd/AssesmentEnd.jsx index f30f61ed..e3b1001a 100644 --- a/src/components/AssesmentEnd/AssesmentEnd.jsx +++ b/src/components/AssesmentEnd/AssesmentEnd.jsx @@ -34,7 +34,7 @@ const AssesmentEnd = () => { const previous_level = getLocalData("previous_level"); setPreviousLevel(previous_level?.replace("m", "")); const getMilestoneDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` ); const { data } = getMilestoneDetails; setLevel(data.data.milestone_level); @@ -45,7 +45,7 @@ const AssesmentEnd = () => { localStorage.setItem("sessionId", sessionId) } const getPointersDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); })(); diff --git a/src/components/DiscoverEnd/DiscoverEnd.jsx b/src/components/DiscoverEnd/DiscoverEnd.jsx index b36ec6db..37e39011 100644 --- a/src/components/DiscoverEnd/DiscoverEnd.jsx +++ b/src/components/DiscoverEnd/DiscoverEnd.jsx @@ -41,7 +41,7 @@ const SpeakSentenceComponent = () => { const virtualId = getLocalData("virtualId"); const lang = getLocalData("lang"); const getMilestoneDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` ); const { data } = getMilestoneDetails; setLevel(data.data.milestone_level); @@ -54,7 +54,7 @@ const SpeakSentenceComponent = () => { const handleProfileBack = () => { try { - if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { + if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { navigate("/") } else { navigate("/discover-start") diff --git a/src/components/DiscoverSentance/DiscoverSentance.jsx b/src/components/DiscoverSentance/DiscoverSentance.jsx index 7cac38e0..c64ebe3f 100644 --- a/src/components/DiscoverSentance/DiscoverSentance.jsx +++ b/src/components/DiscoverSentance/DiscoverSentance.jsx @@ -69,7 +69,7 @@ const SpeakSentenceComponent = () => { const virtualId = getLocalData("virtualId"); const lang = getLocalData("lang"); const getPointersDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); })(); @@ -100,7 +100,7 @@ const SpeakSentenceComponent = () => { }, [voiceText]); const send = (score) => { - if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { + if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { window.parent.postMessage({ score: score, message: "all-test-rig-score", @@ -117,7 +117,7 @@ const SpeakSentenceComponent = () => { if (!(localStorage.getItem("contentSessionId") !== null)) { const pointsRes = await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_POINTER}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_POINTER}`, { userId: localStorage.getItem("virtualId"), sessionId: localStorage.getItem("sessionId"), @@ -133,7 +133,7 @@ const SpeakSentenceComponent = () => { } await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: localStorage.getItem("virtualId"), sessionId: localStorage.getItem("sessionId"), @@ -150,7 +150,7 @@ const SpeakSentenceComponent = () => { } else if (currentQuestion === questions.length - 1) { const sub_session_id = getLocalData("sub_session_id"); const getSetResultRes = await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_SET_RESULT}`, + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_SET_RESULT}`, { sub_session_id: sub_session_id, contentType: currentContentType, @@ -165,9 +165,9 @@ const SpeakSentenceComponent = () => { const { data: getSetData } = getSetResultRes; const data = JSON.stringify(getSetData?.data); Log(data, "discovery", "ET"); - if(import.meta.env.VITE_APP_POST_LEARNER_PROGRESS === "true"){ + if(process.env.REACT_APP_POST_LEARNER_PROGRESS === "true"){ await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, { userId: localStorage.getItem("virtualId"), sessionId: localStorage.getItem("sessionId"), @@ -190,7 +190,7 @@ const SpeakSentenceComponent = () => { (elem) => elem.category === "Sentence" ); const resSentencesPagination = await axios.get( - `${import.meta.env.VITE_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.[newSentencePassedCounter]?.collectionId}` + `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.[newSentencePassedCounter]?.collectionId}` ); setCurrentContentType("Sentence"); setTotalSyllableCount(resSentencesPagination?.data?.totalSyllableCount); @@ -214,7 +214,7 @@ const SpeakSentenceComponent = () => { (elem) => elem.category === "Word" ); const resWordsPagination = await axios.get( - `${import.meta.env.VITE_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${words?.collectionId}` + `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${words?.collectionId}` ); setCurrentContentType("Word"); setTotalSyllableCount(resWordsPagination?.data?.totalSyllableCount); @@ -232,7 +232,7 @@ const SpeakSentenceComponent = () => { // (elem) => elem.category === "Char" // ); // const resCharPagination = await axios.get( - // `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/content-service/v1/content/pagination?page=1&limit=5&collectionId=${char?.content?.[0]?.collectionId}` + // `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/content-service/v1/content/pagination?page=1&limit=5&collectionId=${char?.content?.[0]?.collectionId}` // ); // setCurrentContentType("Char"); // setCurrentCollectionId(char?.content?.[0]?.collectionId); @@ -252,15 +252,15 @@ const SpeakSentenceComponent = () => { (async () => { let quesArr = []; try { - // const resSentence = await axios.get(`${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/scores/GetContent/sentence/${UserID}`); + // 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(`${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/scores/GetContent/word/${UserID}`); + // 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(`${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/scores/GetContent/paragraph/${UserID}`); + // 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( - `${import.meta.env.VITE_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_ASSESSMENT}`, + `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_ASSESSMENT}`, { ...{ tags: ["ASER"], language: lang }, } @@ -271,7 +271,7 @@ const SpeakSentenceComponent = () => { ); const resPagination = await axios.get( - `${import.meta.env.VITE_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.collectionId}` + `${process.env.REACT_APP_CONTENT_SERVICE_APP_HOST}/${config.URLS.GET_PAGINATION}?page=1&limit=5&collectionId=${sentences?.collectionId}` ); setCurrentContentType("Sentence"); setTotalSyllableCount(resPagination?.data?.totalSyllableCount) @@ -289,9 +289,9 @@ const SpeakSentenceComponent = () => { })(); }, []); const handleBack = () => { - const destination = import.meta.env.VITE_APP_IS_APP_IFRAME === 'true' ? "/" : "/discover-start"; + const destination = process.env.REACT_APP_IS_APP_IFRAME === 'true' ? "/" : "/discover-start"; navigate(destination); - // if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { + // if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { // navigate("/"); // } else { // navigate("/discover-start") diff --git a/src/components/Practice/Mechanics3.jsx b/src/components/Practice/Mechanics3.jsx index 7f6efce8..3c493976 100644 --- a/src/components/Practice/Mechanics3.jsx +++ b/src/components/Practice/Mechanics3.jsx @@ -246,7 +246,7 @@ const Mechanics2 = ({ type="audio/mp3" src={ contentId - ? `${import.meta.env.VITE_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` + ? `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` : "" } /> diff --git a/src/config/awsS3.js b/src/config/awsS3.js index b4200643..34d950f4 100644 --- a/src/config/awsS3.js +++ b/src/config/awsS3.js @@ -1,9 +1,9 @@ // import { S3Client } from '@aws-sdk/client-s3'; // export default new S3Client({ -// region: import.meta.env.VITE_APP_AWS_S3_REGION, +// region: process.env.REACT_APP_AWS_S3_REGION, // credentials: { -// accessKeyId: import.meta.env.REACT_APP_AWS_ACCESS_KEY_ID, -// secretAccessKey: import.meta.env.REACT_APP_AWS_SECRET_ACCESS_KEY, +// accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY_ID, +// secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY, // }, // }); diff --git a/src/index.js b/src/index.js new file mode 100644 index 00000000..3bf82148 --- /dev/null +++ b/src/index.js @@ -0,0 +1,15 @@ +import React from 'react'; +import { render } from 'react-dom'; +import { Provider } from 'react-redux'; +import App from './App'; +import './assets/styles/index.scss'; +import store from './store/configureStore'; +import './index.css'; +render( + + + + + , + document.getElementById('root'), +); diff --git a/src/index.jsx b/src/index.jsx deleted file mode 100644 index 75bd9704..00000000 --- a/src/index.jsx +++ /dev/null @@ -1,13 +0,0 @@ -import ReactDOM from 'react-dom/client'; -import { Provider } from 'react-redux'; -import store from './store/configureStore'; // Import the store correctly -import App from './App'; // Import your App component - -const rootElement = document.getElementById('root'); -const root = ReactDOM.createRoot(rootElement); - -root.render( - - - -); diff --git a/src/routes/index.js b/src/routes/index.js index ac4898ac..db7142a2 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -69,7 +69,7 @@ const routData = [ // add login route for test rig const virtualId = localStorage.getItem('virtualId'); -const isLogin = import.meta.env.VITE_APP_IS_IN_APP_AUTHORISATION === 'true'; +const isLogin = process.env.REACT_APP_IS_IN_APP_AUTHORISATION === 'true'; if (isLogin && !virtualId) { routData.push( diff --git a/src/services/telementryService.js b/src/services/telementryService.js index 9e33eadc..cd51adbe 100644 --- a/src/services/telementryService.js +++ b/src/services/telementryService.js @@ -1,7 +1,7 @@ import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry'; import { uniqueId } from './utilService'; -import { jwtDecode } from "jwt-decode"; +import { jwtDecode } from '../../node_modules/jwt-decode/build/cjs/index'; let contentSessionId; let playSessionId; @@ -41,7 +41,7 @@ export const initialize = async ({ context, config, metadata }) => { authtoken: context.authToken || '', uid: 'anonymous', sid: context.sid, - batchsize: import.meta.env.VITE_APP_BATCHSIZE, + batchsize: process.env.REACT_APP_BATCHSIZE, mode: context.mode, host: context.host, apislug: context.apislug, @@ -188,9 +188,9 @@ export const feedback = (data, contentId, telemetryMode) => { function checkTelemetryMode(currentMode) { return ( - (import.meta.env.VITE_APP_TELEMETRY_MODE === 'ET' && currentMode === 'ET') || - (import.meta.env.VITE_APP_TELEMETRY_MODE === 'NT' && (currentMode === 'ET' || currentMode === 'NT')) || - (import.meta.env.VITE_APP_TELEMETRY_MODE === 'DT' && + (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')) ); } @@ -219,11 +219,11 @@ export const getEventOptions = () => { context: { pdata: { // optional - id: import.meta.env.VITE_APP_ID, // Producer ID. For ex: For sunbird it would be "portal" or "genie" - ver: import.meta.env.VITE_APP_VER, // Version of the App - pid: import.meta.env.VITE_APP_PID, // Optional. In case the component is distributed, then which instance of that component + 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: import.meta.env.VITE_APP_ENV, + env: process.env.REACT_APP_ENV, uid: `${isBuddyLogin ? emis_username + '/' + buddyUserId : emis_username || 'anonymous'}`, cdata: [ { id: localStorage.getItem('virtualStorySessionID') || contentSessionId, type: 'ContentSession' }, diff --git a/src/services/telemetryService.js b/src/services/telemetryService.js index d66a7ec3..9dae9426 100644 --- a/src/services/telemetryService.js +++ b/src/services/telemetryService.js @@ -7,21 +7,21 @@ export const initialize = ({ did }) => { const telemetryConfig = { config: { pdata: { - id: import.meta.env.VITE_APP_ID, - ver: import.meta.env.VITE_APP_VER, - pid: import.meta.env.VITE_APP_PID, + id: process.env.REACT_APP_ID, + ver: process.env.REACT_APP_VER, + pid: process.env.REACT_APP_PID, }, - env: import.meta.env.VITE_APP_ENV, - channel: import.meta.env.VITE_APP_CHANNEL, + env: process.env.REACT_APP_ENV, + channel: process.env.REACT_APP_CHANNEL, did: did, authtoken: '', uid: 'anonymous', sid: '', batchsize: 1, mode: '', - host: import.meta.env.REACT_APP_BASE_URL, - apislug: import.meta.env.REACT_APP_API_SLUG, - endpoint: import.meta.env.VITE_APP_ENDPOINT, + host: process.env.REACT_APP_BASE_URL, + apislug: process.env.REACT_APP_API_SLUG, + endpoint: process.env.REACT_APP_ENDPOINT, tags: [], cdata: [ { id: '', type: 'ContentSession' }, @@ -62,7 +62,7 @@ export const getEventOptions = () => { ver: '', pid: '', }, - env: import.meta.env.ENV, + env: process.env.ENV, uid: 'anonymous', cdata: [], rollup: {}, diff --git a/src/utils/AudioCompare.jsx b/src/utils/AudioCompare.js similarity index 65% rename from src/utils/AudioCompare.jsx rename to src/utils/AudioCompare.js index 7b8f7596..90f38655 100644 --- a/src/utils/AudioCompare.jsx +++ b/src/utils/AudioCompare.js @@ -6,8 +6,7 @@ import RecordVoiceVisualizer from "./RecordVoiceVisualizer"; import useAudioDetection from "./useAudioDetection"; const AudioRecorderCompair = (props) => { - const { startDetection, stopDetection, isSilent, isRunning, audioDetected } = - useAudioDetection(); + const { startDetection, stopDetection, isSilent, isRunning, audioDetected } = useAudioDetection(); const [status, setStatus] = useState(""); const [audioSrc, setAudioSrc] = useState(""); const [recordingInitialized, setRecordingInitialized] = useState(false); @@ -81,19 +80,8 @@ const AudioRecorderCompair = (props) => { {(() => { if (status === "recording" && recordingInitialized) { return ( -
- +
+ @@ -103,35 +91,17 @@ const AudioRecorderCompair = (props) => { ); } else { return ( -
+
{(!props.dontShowListen || props.recordedAudio) && ( <> {!props.pauseAudio ? ( - +
) : ( - { - props.playAudio(false); - }} - > + { props.playAudio(false); }}> )} @@ -140,15 +110,7 @@ const AudioRecorderCompair = (props) => {
{!props.showOnlyListen && ( - + {!props.recordedAudio ? : } )} @@ -160,18 +122,10 @@ const AudioRecorderCompair = (props) => {

- -
diff --git a/src/utils/VoiceAnalyser.jsx b/src/utils/VoiceAnalyser.js similarity index 95% rename from src/utils/VoiceAnalyser.jsx rename to src/utils/VoiceAnalyser.js index 181f8780..93e43bcc 100644 --- a/src/utils/VoiceAnalyser.jsx +++ b/src/utils/VoiceAnalyser.js @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; -import { Box, CircularProgress } from "@mui/material"; -import axios from "axios"; -import calcCER from "character-error-rate"; +import { Box, CircularProgress } from "../../node_modules/@mui/material/index"; +import axios from "../../node_modules/axios/index"; +import calcCER from "../../node_modules/character-error-rate/index"; import s1 from "../assets/audio/S1.m4a"; import s2 from "../assets/audio/S2.m4a"; import s3 from "../assets/audio/S3.m4a"; @@ -69,7 +69,7 @@ function VoiceAnalyser(props) { const lang = getLocalData("lang"); const { livesData, setLivesData } = props; const [isAudioPreprocessing, setIsAudioPreprocessing] = useState( - import.meta.env.VITE_APP_IS_AUDIOPREPROCESSING === "true" + process.env.REACT_APP_IS_AUDIOPREPROCESSING === "true" ); const initiateValues = async () => { @@ -87,7 +87,7 @@ function VoiceAnalyser(props) { recordedAudio ? recordedAudio : props.contentId - ? `${import.meta.env.VITE_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${props.contentId}.wav` + ? `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${props.contentId}.wav` : AudioPath[1][10] ); set_temp_audio(audio); @@ -264,7 +264,7 @@ function VoiceAnalyser(props) { if (callUpdateLearner) { const { data: updateLearnerData } = await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.UPDATE_LEARNER_PROFILE}/${lang}`, + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.UPDATE_LEARNER_PROFILE}/${lang}`, { original_text: originalText, audio: base64Data, @@ -356,15 +356,15 @@ function VoiceAnalyser(props) { let word_result = finalScore === 100 ? "correct" : "incorrect"; - // TODO: Remove false when VITE_APP_AWS_S3_BUCKET_NAME and keys added + // TODO: Remove false when REACT_APP_AWS_S3_BUCKET_NAME and keys added var audioFileName = ""; - if (import.meta.env.VITE_APP_CAPTURE_AUDIO === "true" && false) { + if (process.env.REACT_APP_CAPTURE_AUDIO === "true" && false) { let getContentId = currentLine; - audioFileName = `${import.meta.env.VITE_APP_CHANNEL + audioFileName = `${process.env.REACT_APP_CHANNEL }/${sessionId}-${Date.now()}-${getContentId}.wav`; const command = new PutObjectCommand({ - Bucket: import.meta.env.VITE_APP_AWS_S3_BUCKET_NAME, + Bucket: process.env.REACT_APP_AWS_S3_BUCKET_NAME, Key: audioFileName, Body: Uint8Array.from(window.atob(base64Data), (c) => c.charCodeAt(0) @@ -380,7 +380,7 @@ function VoiceAnalyser(props) { { // Required target: - import.meta.env.VITE_APP_CAPTURE_AUDIO === "true" + process.env.REACT_APP_CAPTURE_AUDIO === "true" ? `${audioFileName}` : "", // Required. Target of the response //"qid": "", // Required. Unique assessment/question id diff --git a/src/utils/constants.jsx b/src/utils/constants.js similarity index 99% rename from src/utils/constants.jsx rename to src/utils/constants.js index e74bcd6a..21fd00f8 100644 --- a/src/utils/constants.jsx +++ b/src/utils/constants.js @@ -132,7 +132,7 @@ export const ListenButton = (props) => { rx="35" fill="url(#paint0_linear_400_1331)" /> - + { y2="56.914" gradientUnits="userSpaceOnUse" > - - + + diff --git a/src/views/LoginPage/LoginPage.jsx b/src/views/LoginPage/LoginPage.jsx index d50ebe27..ba6cc425 100644 --- a/src/views/LoginPage/LoginPage.jsx +++ b/src/views/LoginPage/LoginPage.jsx @@ -20,7 +20,7 @@ const LoginPage = () => { try { const usernameDetails = await axios.post( - `${import.meta.env.VITE_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) { diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx index e893b3e7..ddb5ac52 100644 --- a/src/views/Practice/Practice.jsx +++ b/src/views/Practice/Practice.jsx @@ -128,7 +128,7 @@ const Practice = () => { }, [voiceText]); const send = (score) => { - if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { + if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { window.parent.postMessage({ score: score, message: "all-test-rig-score", @@ -165,7 +165,7 @@ const Practice = () => { } } else { const pointsRes = await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_POINTER}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_POINTER}`, { userId: localStorage.getItem("virtualId"), sessionId: localStorage.getItem("sessionId"), @@ -199,7 +199,7 @@ const Practice = () => { let showcasePercentage = ((currentQuestion + 1) * 100) / questions.length; await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -215,6 +215,7 @@ const Practice = () => { currentQuestion === questions.length - 1 || isGameOver ? currentPracticeStep + 1 : currentPracticeStep; + newPracticeStep = Number(newPracticeStep); let newQuestionIndex = currentQuestion === questions.length - 1 ? 0 : currentQuestion + 1; @@ -228,7 +229,7 @@ const Practice = () => { const sub_session_id = getLocalData("sub_session_id"); const getSetResultRes = await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_SET_RESULT}`, + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_SET_RESULT}`, { sub_session_id: sub_session_id, contentType: currentContentType, @@ -243,9 +244,9 @@ const Practice = () => { Log(data, "practice", "ET"); setPercentage(getSetData?.data?.percentage); checkFluency(currentContentType, getSetData?.data?.fluency); - if(import.meta.env.VITE_APP_POST_LEARNER_PROGRESS === "true"){ + if(process.env.REACT_APP_POST_LEARNER_PROGRESS === "true"){ await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, { userId: virtualId, sessionId: sessionId, @@ -260,7 +261,7 @@ const Practice = () => { if (getSetData.data.sessionResult === "pass") { try{ await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -294,7 +295,7 @@ const Practice = () => { ); await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -312,7 +313,7 @@ const Practice = () => { // navigate("/assesment-end"); } const resGetContent = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); setTotalSyllableCount(resGetContent?.data?.totalSyllableCount) @@ -385,12 +386,12 @@ const Practice = () => { const playTeacherAudio = () => { const contentId = questions[currentQuestion]?.contentId; var audio = new Audio( - `${import.meta.env.VITE_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` + `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` ); audio.addEventListener("canplaythrough", () => { set_temp_audio( new Audio( - `${import.meta.env.VITE_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` + `${process.env.REACT_APP_AWS_S3_BUCKET_CONTENT_URL}/all-audio-files/${lang}/${contentId}.wav` ) ); }); @@ -410,7 +411,7 @@ const Practice = () => { } const getMilestoneDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_MILESTONE}/${virtualId}?language=${lang}` ); setLocalData( "getMilestone", @@ -425,10 +426,10 @@ const Practice = () => { setLevel(level); const resLessons = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_LESSON_PROGRESS_BY_ID}/${virtualId}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_LESSON_PROGRESS_BY_ID}/${virtualId}?language=${lang}` ); const getPointersDetails = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.GET_POINTER}/${virtualId}/${sessionId}?language=${lang}` ); setPoints(getPointersDetails?.data?.result?.totalLanguagePoints || 0); @@ -452,7 +453,7 @@ const Practice = () => { ); const resWord = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); setTotalSyllableCount(resWord?.data?.totalSyllableCount) setLivesData({ @@ -476,7 +477,7 @@ const Practice = () => { setIsShowCase(showcaseLevel); if (showcaseLevel) { await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -522,7 +523,7 @@ const Practice = () => { }; await axios.post( - `${import.meta.env.VITE_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { userId: virtualId, sessionId: sessionId, @@ -541,7 +542,7 @@ const Practice = () => { ); let quesArr = []; const resWord = await axios.get( - `${import.meta.env.VITE_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` + `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); setTotalSyllableCount(resWord?.data?.totalSyllableCount) setLivesData({ @@ -564,7 +565,7 @@ const Practice = () => { setCurrentQuestion(practiceProgress[virtualId]?.currentQuestion || 0); setLocalData("practiceProgress", JSON.stringify(practiceProgress)); } else { - if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { + if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { navigate("/"); }else { navigate("/discover-start") @@ -697,7 +698,7 @@ const Practice = () => { useEffect(() => { if (questions[currentQuestion]?.contentSourceData) { - if (import.meta.env.VITE_APP_IS_APP_IFRAME === 'true') { + if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { const contentSourceData = questions[currentQuestion]?.contentSourceData || []; const stringLengths = contentSourceData.map(item => item.text.length); const length = stringLengths[0]; diff --git a/vite.config.js b/vite.config.js deleted file mode 100644 index 75e628ee..00000000 --- a/vite.config.js +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from 'vite'; -import react from '@vitejs/plugin-react'; - -export default defineConfig(() => { - return { - build: { - outDir: 'build', - }, - plugins: [react()], - server: { - open: true, - port: 3000, - }, - }; -}); \ No newline at end of file From 5091e781a789c977a80486f2e77335cbb08e97d8 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Mon, 12 Aug 2024 18:19:55 +0530 Subject: [PATCH 25/39] issueid #224377 feat: Enable Gujrati language in ALL --- src/utils/constants.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/utils/constants.js b/src/utils/constants.js index 21fd00f8..e4cb80a3 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -3336,12 +3336,12 @@ export const levelGetContent = { { title: "P1", criteria: "word", - template: "simple" + template: "simple", }, { title: "P2", criteria: "word", - template: "simple" + template: "simple", }, { title: "P3", criteria: "sentence", template: "simple" }, { title: "P4", criteria: "sentence", template: "simple" }, @@ -3453,10 +3453,10 @@ export function callConfettiSnow() { } // since particles fall down, start a bit higher than random - timeLeft = animationEnd - Date.now(); + timeLeft = animationEnd - Date.now(); var ticks = Math.max(200, 500 * (timeLeft / duration)); var skew; - skew = Math.max(0.8, skew - 0.001); + skew = Math.max(0.8, skew - 0.001); confetti({ particleCount: 1, @@ -3516,20 +3516,21 @@ export const levelConfig = { 9: { color: "#00C7E2" }, }; - const AllLanguages = [ - { name: "தமிழ்", lang: "ta", symbol: "இ" }, +const AllLanguages = [ { name: "English", lang: "en", symbol: "A" }, + { name: "தமிழ்", lang: "ta", symbol: "இ" }, { name: "हिंदी", lang: "hi", symbol: "क" }, - { name: "ಕನ್ನಡ", lang: "kn", symbol: "ಕ" } , - { name: "తెలుగు", lang: "te", symbol: "ఈ" } , + { name: "ಕನ್ನಡ", lang: "kn", symbol: "ಕ" }, + { name: "తెలుగు", lang: "te", symbol: "ఈ" }, + { name: "ગુજરાતી", lang: "gu", 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 => - appLanguages.includes(lang.lang) +export const languages = AllLanguages.filter((lang) => + appLanguages.includes(lang.lang) ); export const randomizeArray = (arr) => { From 55cdbeb13ffcb8daeeb03ba11597f6e8e3f075fe Mon Sep 17 00:00:00 2001 From: Gourav More Date: Mon, 12 Aug 2024 18:25:43 +0530 Subject: [PATCH 26/39] Update all-dev-rig.yml --- .github/workflows/all-dev-rig.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 40069fd6..7bac2619 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -3,7 +3,7 @@ name: ALL rig dev Deployment on: push: branches: - - all-1.2.1 + - all-1.2 jobs: deploy: From dd185684edb7ec61cb58cb21f38bc21a45ed8c18 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Mon, 12 Aug 2024 19:22:21 +0530 Subject: [PATCH 27/39] Update all-dev-rig.yml --- .github/workflows/all-dev-rig.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-dev-rig.yml b/.github/workflows/all-dev-rig.yml index 7bac2619..fff0cb2f 100644 --- a/.github/workflows/all-dev-rig.yml +++ b/.github/workflows/all-dev-rig.yml @@ -74,7 +74,7 @@ jobs: REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} - REACT_APP_IS_APP_LANGUAGES: ${{ vars.REACT_APP_IS_APP_LANGUAGES }} + REACT_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} CI: false # Disabling CI to not treat warnings as errors run: npm run build From b2749b4f1f15c17a720f3c77af3762d1f898b150 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Tue, 13 Aug 2024 14:05:38 +0530 Subject: [PATCH 28/39] Update all-dev-tn.yml update yml for tn staging --- .github/workflows/all-dev-tn.yml | 98 +++++++++++++++++++------------- 1 file changed, 57 insertions(+), 41 deletions(-) diff --git a/.github/workflows/all-dev-tn.yml b/.github/workflows/all-dev-tn.yml index c72ff627..a95a3299 100644 --- a/.github/workflows/all-dev-tn.yml +++ b/.github/workflows/all-dev-tn.yml @@ -1,14 +1,14 @@ -name: ALL tn dev Deployment +name: ALL tn staging Deployment on: push: branches: - - test + - all-1.2-tn-staging jobs: deploy: runs-on: ubuntu-latest - environment: all-dev-rig + environment: all-staging-tn steps: - name: Checkout code @@ -17,60 +17,76 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '18' - name: Install AWS CLI run: | sudo DEBIAN_FRONTEND=noninteractive apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get install -y awscli + - name: Configure AWS credentials run: | aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }} aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws configure set default.region ${{ secrets.AWS_REGION }} - - name: Build and Package Application - run: | - npm install - - - name: Build Production + + - name: Clean up node_modules and package-lock.json run: | - REACT_APP_API_KEY=${{ secrets.REACT_APP_API_KEY }} \ - REACT_APP_MODE=play \ - REACT_APP_authToken="" \ - REACT_APP_PID=learner-ai-story-demo \ - REACT_APP_UID=anonymous \ - REACT_APP_ID=all.ll.app \ - REACT_APP_VER="0.3.0" \ - REACT_APP_TIMEDIFF="0" \ - REACT_APP_HOST=https://telemetry-dev.theall.ai \ - REACT_APP_ENDPOINT=telemetry \ - REACT_APP_APISLUG="/v1/" \ - REACT_APP_CHANNEL="learner-ai-demo" \ - REACT_APP_ENV="all-player" \ - REACT_APP_BATCHSIZE=1 \ - REACT_APP_CONTENT_SIZE=5 \ - REACT_APP_LANGUAGE=ta \ - REACT_APP_TELEMETRY_MODE=DT \ - REACT_APP_LEARNER_AI_APP_HOST="https://www.learnerai-dev.theall.ai" \ - REACT_APP_CAPTURE_AUDIO=true \ - REACT_APP_AWS_S3_BUCKET_NAME=all-dev-storage \ - REACT_APP_AWS_S3_BUCKET_URL=https://all-dev-storage.s3.ap-south-1.amazonaws.com \ - REACT_APP_AWS_S3_REGION=ap-south-1 \ - REACT_APP_AWS_ACCESS_KEY_ID=${{ secrets.REACT_APP_AWS_ACCESS_KEY_ID }} \ - REACT_APP_AWS_SECRET_ACCESS_KEY=${{ secrets.REACT_APP_AWS_SECRET_ACCESS_KEY }} \ - REACT_APP_AWS_S3_BUCKET_CONTENT_URL=https://all-dev-content-service.s3.ap-south-1.amazonaws.com \ - REACT_APP_MIN_DECIBELS=-75 \ - REACT_APP_IS_AUDIOPREPROCESSING=false \ - npm run build + rm -rf node_modules + rm -f package-lock.json + + - name: Install Dependencies + run: npm install --legacy-peer-deps + + - name: Run Husky Install + run: npm run prepare + + - name: Build and Package Application + env: + SKIP_PREFLIGHT_CHECK: ${{ vars.SKIP_PREFLIGHT_CHECK }} + REACT_APP_MODE: ${{ vars.REACT_APP_MODE }} + REACT_APP_authToken: ${{ vars.REACT_APP_authToken }} + REACT_APP_PID: ${{ vars.REACT_APP_PID }} + REACT_APP_UID: ${{ vars.REACT_APP_UID }} + REACT_APP_ID: ${{ vars.REACT_APP_ID }} + REACT_APP_VER: ${{ vars.REACT_APP_VER }} + REACT_APP_TIMEDIFF: ${{ vars.REACT_APP_TIMEDIFF }} + REACT_APP_HOST: ${{ vars.REACT_APP_HOST }} + REACT_APP_ENDPOINT: ${{ vars.REACT_APP_ENDPOINT }} + REACT_APP_APISLUG: ${{ vars.REACT_APP_APISLUG }} + REACT_APP_CHANNEL: ${{ vars.REACT_APP_CHANNEL }} + REACT_APP_ENV: ${{ vars.REACT_APP_ENV }} + REACT_APP_BATCHSIZE: ${{ vars.REACT_APP_BATCHSIZE }} + REACT_APP_CONTENT_SIZE: ${{ vars.REACT_APP_CONTENT_SIZE }} + REACT_APP_LANGUAGE: ${{ vars.REACT_APP_LANGUAGE }} + REACT_APP_TELEMETRY_MODE: ${{ vars.REACT_APP_TELEMETRY_MODE }} + REACT_APP_VIRTUAL_ID_HOST: ${{ vars.REACT_APP_VIRTUAL_ID_HOST }} + REACT_APP_LEARNER_AI_ORCHESTRATION_HOST: ${{ vars.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST }} + REACT_APP_LEARNER_AI_APP_HOST: ${{ vars.REACT_APP_LEARNER_AI_APP_HOST }} + REACT_APP_CONTENT_SERVICE_APP_HOST: ${{ vars.REACT_APP_CONTENT_SERVICE_APP_HOST }} + REACT_APP_CAPTURE_AUDIO: ${{ vars.REACT_APP_CAPTURE_AUDIO }} + REACT_APP_AWS_S3_BUCKET_NAME: ${{ vars.REACT_APP_AWS_S3_BUCKET_NAME }} + REACT_APP_AWS_S3_BUCKET_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_URL }} + REACT_APP_AWS_S3_REGION: ${{ vars.REACT_APP_AWS_S3_REGION }} + REACT_APP_AWS_S3_BUCKET_CONTENT_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_CONTENT_URL }} + REACT_APP_MIN_DECIBELS: ${{ vars.REACT_APP_MIN_DECIBELS }} + REACT_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} + REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} + REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} + REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} + REACT_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} + CI: false # Disabling CI to not treat warnings as errors + run: npm run build + - name: Deploy to S3 Bucket - run: | - aws s3 sync ./build s3://sballappliance/assets/sb-ai/ + run: aws s3 sync ./build s3://sballappliance/assets/test-rig/ + - name: Debug Environment Variables run: | echo "REACT_APP_AWS_S3_BUCKET_NAME: $REACT_APP_AWS_S3_BUCKET_NAME" echo "AWS_REGION: $AWS_REGION" - echo "secrate": ${{secrets.REACT_APP_AWS_S3_BUCKET_NAME}} - ### Invalidate Cloudfront + echo "secrate": ${{ vars.REACT_APP_AWS_S3_BUCKET_NAME }} + - name: Cloudfront Invalidation uses: chetan/invalidate-cloudfront-action@master env: From 95c3ea33adb531592289ee6024264d5e1c016d8d Mon Sep 17 00:00:00 2001 From: Gourav More Date: Tue, 13 Aug 2024 14:26:06 +0530 Subject: [PATCH 29/39] Update all-dev-tn.yml --- .github/workflows/all-dev-tn.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-dev-tn.yml b/.github/workflows/all-dev-tn.yml index a95a3299..5abd8faf 100644 --- a/.github/workflows/all-dev-tn.yml +++ b/.github/workflows/all-dev-tn.yml @@ -79,7 +79,7 @@ jobs: run: npm run build - name: Deploy to S3 Bucket - run: aws s3 sync ./build s3://sballappliance/assets/test-rig/ + run: aws s3 sync ./build s3://sballtnlanglab/assets/test-rig/ - name: Debug Environment Variables run: | From f985b0dc34559ee729bbcf4d9e96bb7e9142fa67 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Tue, 13 Aug 2024 14:44:45 +0530 Subject: [PATCH 30/39] Update all-dev-tn.yml From 79d5bc4b0ec0c2fa50308d94e25b2dffc4f7ccf9 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Wed, 14 Aug 2024 08:33:35 +0530 Subject: [PATCH 31/39] Issue #workflow updates for tn dev env --- .github/workflows/all-dev-tn.yml | 6 +- .github/workflows/all-staging-tn.yml | 97 ++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/all-staging-tn.yml diff --git a/.github/workflows/all-dev-tn.yml b/.github/workflows/all-dev-tn.yml index 5abd8faf..94aeb475 100644 --- a/.github/workflows/all-dev-tn.yml +++ b/.github/workflows/all-dev-tn.yml @@ -1,9 +1,9 @@ -name: ALL tn staging Deployment +name: ALL tn dev Deployment on: push: branches: - - all-1.2-tn-staging + - all-1.2-tn-dev jobs: deploy: @@ -79,7 +79,7 @@ jobs: run: npm run build - name: Deploy to S3 Bucket - run: aws s3 sync ./build s3://sballtnlanglab/assets/test-rig/ + run: aws s3 sync ./build s3://sb-all/assets/test-rig/ - name: Debug Environment Variables run: | diff --git a/.github/workflows/all-staging-tn.yml b/.github/workflows/all-staging-tn.yml new file mode 100644 index 00000000..5abd8faf --- /dev/null +++ b/.github/workflows/all-staging-tn.yml @@ -0,0 +1,97 @@ +name: ALL tn staging Deployment + +on: + push: + branches: + - all-1.2-tn-staging + +jobs: + deploy: + runs-on: ubuntu-latest + environment: all-staging-tn + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Install AWS CLI + run: | + sudo DEBIAN_FRONTEND=noninteractive apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y awscli + + - name: Configure AWS credentials + run: | + aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }} + aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws configure set default.region ${{ secrets.AWS_REGION }} + + - name: Clean up node_modules and package-lock.json + run: | + rm -rf node_modules + rm -f package-lock.json + + - name: Install Dependencies + run: npm install --legacy-peer-deps + + - name: Run Husky Install + run: npm run prepare + + - name: Build and Package Application + env: + SKIP_PREFLIGHT_CHECK: ${{ vars.SKIP_PREFLIGHT_CHECK }} + REACT_APP_MODE: ${{ vars.REACT_APP_MODE }} + REACT_APP_authToken: ${{ vars.REACT_APP_authToken }} + REACT_APP_PID: ${{ vars.REACT_APP_PID }} + REACT_APP_UID: ${{ vars.REACT_APP_UID }} + REACT_APP_ID: ${{ vars.REACT_APP_ID }} + REACT_APP_VER: ${{ vars.REACT_APP_VER }} + REACT_APP_TIMEDIFF: ${{ vars.REACT_APP_TIMEDIFF }} + REACT_APP_HOST: ${{ vars.REACT_APP_HOST }} + REACT_APP_ENDPOINT: ${{ vars.REACT_APP_ENDPOINT }} + REACT_APP_APISLUG: ${{ vars.REACT_APP_APISLUG }} + REACT_APP_CHANNEL: ${{ vars.REACT_APP_CHANNEL }} + REACT_APP_ENV: ${{ vars.REACT_APP_ENV }} + REACT_APP_BATCHSIZE: ${{ vars.REACT_APP_BATCHSIZE }} + REACT_APP_CONTENT_SIZE: ${{ vars.REACT_APP_CONTENT_SIZE }} + REACT_APP_LANGUAGE: ${{ vars.REACT_APP_LANGUAGE }} + REACT_APP_TELEMETRY_MODE: ${{ vars.REACT_APP_TELEMETRY_MODE }} + REACT_APP_VIRTUAL_ID_HOST: ${{ vars.REACT_APP_VIRTUAL_ID_HOST }} + REACT_APP_LEARNER_AI_ORCHESTRATION_HOST: ${{ vars.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST }} + REACT_APP_LEARNER_AI_APP_HOST: ${{ vars.REACT_APP_LEARNER_AI_APP_HOST }} + REACT_APP_CONTENT_SERVICE_APP_HOST: ${{ vars.REACT_APP_CONTENT_SERVICE_APP_HOST }} + REACT_APP_CAPTURE_AUDIO: ${{ vars.REACT_APP_CAPTURE_AUDIO }} + REACT_APP_AWS_S3_BUCKET_NAME: ${{ vars.REACT_APP_AWS_S3_BUCKET_NAME }} + REACT_APP_AWS_S3_BUCKET_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_URL }} + REACT_APP_AWS_S3_REGION: ${{ vars.REACT_APP_AWS_S3_REGION }} + REACT_APP_AWS_S3_BUCKET_CONTENT_URL: ${{ vars.REACT_APP_AWS_S3_BUCKET_CONTENT_URL }} + REACT_APP_MIN_DECIBELS: ${{ vars.REACT_APP_MIN_DECIBELS }} + REACT_APP_IS_AUDIOPREPROCESSING: ${{ vars.REACT_APP_IS_AUDIOPREPROCESSING }} + REACT_APP_POST_LEARNER_PROGRESS: ${{ vars.REACT_APP_POST_LEARNER_PROGRESS }} + REACT_APP_IS_APP_IFRAME: ${{ vars.REACT_APP_IS_APP_IFRAME }} + REACT_APP_IS_IN_APP_AUTHORISATION: ${{ vars.REACT_APP_IS_IN_APP_AUTHORISATION }} + REACT_APP_LANGUAGES: ${{ vars.REACT_APP_LANGUAGES }} + CI: false # Disabling CI to not treat warnings as errors + run: npm run build + + - name: Deploy to S3 Bucket + run: aws s3 sync ./build s3://sballtnlanglab/assets/test-rig/ + + - name: Debug Environment Variables + run: | + echo "REACT_APP_AWS_S3_BUCKET_NAME: $REACT_APP_AWS_S3_BUCKET_NAME" + echo "AWS_REGION: $AWS_REGION" + echo "secrate": ${{ vars.REACT_APP_AWS_S3_BUCKET_NAME }} + + - name: Cloudfront Invalidation + uses: chetan/invalidate-cloudfront-action@master + env: + DISTRIBUTION: ${{ secrets.AWS_DISTRIBUTION }} + PATHS: '/*' + AWS_REGION: ${{ secrets.AWS_REGION }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} From 214e1c8641991f3fbafb07eed431e6e44abc3961 Mon Sep 17 00:00:00 2001 From: Gourav More Date: Wed, 14 Aug 2024 08:50:06 +0530 Subject: [PATCH 32/39] Issue #0000 all-dev tn yml file changes --- .github/workflows/all-dev-tn.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/all-dev-tn.yml b/.github/workflows/all-dev-tn.yml index 94aeb475..eba10455 100644 --- a/.github/workflows/all-dev-tn.yml +++ b/.github/workflows/all-dev-tn.yml @@ -8,7 +8,7 @@ on: jobs: deploy: runs-on: ubuntu-latest - environment: all-staging-tn + environment: all-dev-tn steps: - name: Checkout code From 72ee71dbe888d94f645ad551d56cf9e5b64ebf13 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Thu, 22 Aug 2024 16:02:37 +0530 Subject: [PATCH 33/39] Issueid #225129 fix: Blob Destroy from Memory in Firefox --- package.json | 17 ++-- src/utils/AudioCompare.js | 189 +++++++++++++++++++++++--------------- 2 files changed, 123 insertions(+), 83 deletions(-) diff --git a/package.json b/package.json index 7948ced6..95b5bdbf 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,9 @@ "canvas-confetti": "^1.9.2", "character-error-rate": "^1.1.4", "classnames": "^2.3.1", + "eslint-plugin-import": "^2.28.0", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.1", "faker": "^5.5.3", "homophones": "^1.0.1", "jwt-decode": "^4.0.0", @@ -38,15 +41,13 @@ "react-virtualized": "^9.22.3", "react-virtualized-auto-sizer": "^1.0.6", "react-window": "^1.8.6", + "recordrtc": "^5.6.2", "redux": "^4.1.2", "redux-saga": "^1.1.3", "sass": "^1.44.0", "split-graphemes": "^0.5.0", "use-sound": "^4.0.1", - "web-vitals": "^2.1.4", - "eslint-plugin-import": "^2.28.0", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.1" + "web-vitals": "^2.1.4" }, "scripts": { "start": "react-scripts start", @@ -87,16 +88,16 @@ ] }, "devDependencies": { + "@mui/styles": "^5.15.10", "eslint": "^7.32.0", - "prettier": "^2.3.2", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^3.4.0", "husky": "^9.0.11", "lint-staged": "^11.0.0", - "react": "^18.2.0", - "@mui/styles": "^5.15.10" + "prettier": "^2.3.2", + "react": "^18.2.0" }, - "lint-staged": { + "lint-staged": { "src/**/*.{js,jsx}": [ "npx eslint --fix", "npx prettier --write" diff --git a/src/utils/AudioCompare.js b/src/utils/AudioCompare.js index 90f38655..164f0b29 100644 --- a/src/utils/AudioCompare.js +++ b/src/utils/AudioCompare.js @@ -1,87 +1,113 @@ -import React, { useState } from "react"; -import AudioAnalyser from "react-audio-analyser"; +import React, { useState, useEffect, useRef } from "react"; +import RecordRTC from "recordrtc"; import { Box } from "@mui/material"; import { ListenButton, RetryIcon, SpeakButton, StopButton } from "./constants"; import RecordVoiceVisualizer from "./RecordVoiceVisualizer"; -import useAudioDetection from "./useAudioDetection"; -const AudioRecorderCompair = (props) => { - const { startDetection, stopDetection, isSilent, isRunning, audioDetected } = useAudioDetection(); +const AudioRecorder = (props) => { + const [isRecording, setIsRecording] = useState(false); const [status, setStatus] = useState(""); - const [audioSrc, setAudioSrc] = useState(""); - const [recordingInitialized, setRecordingInitialized] = useState(false); - const audioType = "audio/wav"; + const [audioBlob, setAudioBlob] = useState(null); + const recorderRef = useRef(null); + const mediaStreamRef = useRef(null); - const controlAudio = async (status) => { - if (status === "recording") { - await startDetection(); - } else { - stopDetection(); - } - setStatus(status); - }; - - const resetRecording = () => { - setAudioSrc(""); - setRecordingInitialized(false); - }; + useEffect(() => { + // Cleanup when component unmounts + return () => { + if (recorderRef.current) { + recorderRef.current.destroy(); + } + if (mediaStreamRef.current) { + mediaStreamRef.current.getTracks().forEach((track) => track.stop()); + } + }; + }, []); - const handleMic = async () => { + const startRecording = async () => { + setStatus("recording"); if (props.setEnableNext) { props.setEnableNext(false); } - document.getElementById("startaudio_compair").click(); - resetRecording(); + try { + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); + mediaStreamRef.current = stream; + + recorderRef.current = new RecordRTC(stream, { type: "audio" }); + recorderRef.current.startRecording(); + + setIsRecording(true); + } catch (err) { + console.error("Failed to start recording:", err); + } }; - const handleStop = () => { + const stopRecording = () => { + setStatus("inactive"); + if (recorderRef.current) { + recorderRef.current.stopRecording(() => { + const blob = recorderRef.current.getBlob(); + + if (blob) { + setAudioBlob(blob); + saveBlob(blob); // Persist the blob + } else { + console.error("Failed to retrieve audio blob."); + } + + // Stop the media stream + if (mediaStreamRef.current) { + mediaStreamRef.current.getTracks().forEach((track) => track.stop()); + } + + setIsRecording(false); + }); + } if (props.setEnableNext) { props.setEnableNext(true); } - document.getElementById("stopaudio_compair").click(); }; - const audioProps = { - audioType, - status, - audioSrc, - timeslice: 1000, - startCallback: (e) => { - setAudioSrc(""); - setRecordingInitialized(true); - props.setRecordedAudio(""); - }, - pauseCallback: (e) => {}, - stopCallback: (e) => { - const temp_audioSrc = window.URL.createObjectURL(e); - setAudioSrc(temp_audioSrc); - if (!audioDetected) { - props?.setOpenMessageDialog({ - message: "Please Speak Louder and Clear", - isError: true, + const saveBlob = (blob) => { + const reader = new FileReader(); + reader.onloadend = () => { + const base64Data = reader.result; + playRecording(base64Data); + }; + reader.readAsDataURL(blob); + }; + + const playRecording = (base64Data) => { + if (base64Data) { + fetch(base64Data) + .then((res) => res.blob()) + .then((blob) => { + const url = URL.createObjectURL(blob); + props?.setRecordedAudio(url); }); - if (props.setEnableNext) { - props.setEnableNext(false); - } - } else { - props.setRecordedAudio(temp_audioSrc); - } - setRecordingInitialized(false); - }, - onRecordCallback: (e) => {}, - errorCallback: (err) => {}, - backgroundColor: "hsla(0, 100%, 0%, 0)", - strokeColor: "#73DD24", + } else { + console.error("No saved audio found."); + } }; return (
{(() => { - if (status === "recording" && recordingInitialized) { + if (status === "recording") { return ( -
- +
+ @@ -91,17 +117,33 @@ const AudioRecorderCompair = (props) => { ); } else { return ( -
+
{(!props.dontShowListen || props.recordedAudio) && ( <> {!props.pauseAudio ? ( -
{ props.playAudio(true); }} aria-label="Play audio"> +
{ + props.playAudio(true); + }} + >
) : ( - { props.playAudio(false); }}> + { + props.playAudio(false); + }} + > )} @@ -110,7 +152,15 @@ const AudioRecorderCompair = (props) => {
{!props.showOnlyListen && ( - + {!props.recordedAudio ? : } )} @@ -119,20 +169,9 @@ const AudioRecorderCompair = (props) => { ); } })()} - -
-
- - -
-
); }; -export default AudioRecorderCompair; +export default AudioRecorder; From d409cee836f5da45b7d03068c032a59be536cd25 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Thu, 22 Aug 2024 17:17:33 +0530 Subject: [PATCH 34/39] Issueid #225129 fix: Blob Destroy from Memory in Firefox --- src/utils/AudioCompare.js | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/utils/AudioCompare.js b/src/utils/AudioCompare.js index 164f0b29..8caacbca 100644 --- a/src/utils/AudioCompare.js +++ b/src/utils/AudioCompare.js @@ -32,7 +32,15 @@ const AudioRecorder = (props) => { const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); mediaStreamRef.current = stream; - recorderRef.current = new RecordRTC(stream, { type: "audio" }); + // Use RecordRTC with specific configurations to match the blob structure + recorderRef.current = new RecordRTC(stream, { + type: "audio", + mimeType: "audio/wav", // Ensuring the same MIME type as AudioRecorderCompair + recorderType: RecordRTC.StereoAudioRecorder, // Use StereoAudioRecorder for better compatibility + numberOfAudioChannels: 1, // Match the same number of audio channels + desiredSampRate: 16000, // Adjust the sample rate if necessary to match + }); + recorderRef.current.startRecording(); setIsRecording(true); @@ -68,25 +76,8 @@ const AudioRecorder = (props) => { }; const saveBlob = (blob) => { - const reader = new FileReader(); - reader.onloadend = () => { - const base64Data = reader.result; - playRecording(base64Data); - }; - reader.readAsDataURL(blob); - }; - - const playRecording = (base64Data) => { - if (base64Data) { - fetch(base64Data) - .then((res) => res.blob()) - .then((blob) => { - const url = URL.createObjectURL(blob); - props?.setRecordedAudio(url); - }); - } else { - console.error("No saved audio found."); - } + const url = window.URL.createObjectURL(blob); + props?.setRecordedAudio(url); }; return ( From 6f708cab166d78d2a4c18f4f3c0add7e184992cb Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Mon, 26 Aug 2024 14:59:47 +0530 Subject: [PATCH 35/39] Issueid #219476 fix: Next button is not visible in level 9 below screen resolution 1300 --- src/components/Mechanism/WordsOrImage.jsx | 26 ++--- src/views/Practice/Practice.jsx | 120 +++++++++++----------- 2 files changed, 75 insertions(+), 71 deletions(-) diff --git a/src/components/Mechanism/WordsOrImage.jsx b/src/components/Mechanism/WordsOrImage.jsx index f8f4018f..c6ea0bc1 100644 --- a/src/components/Mechanism/WordsOrImage.jsx +++ b/src/components/Mechanism/WordsOrImage.jsx @@ -46,7 +46,7 @@ const WordsOrImage = ({ loading, setOpenMessageDialog, isNextButtonCalled, - setIsNextButtonCalled + setIsNextButtonCalled, }) => { const audioRef = createRef(null); const [duration, setDuration] = useState(0); @@ -90,7 +90,7 @@ const WordsOrImage = ({ livesData, gameOverData, loading, - setIsNextButtonCalled + setIsNextButtonCalled, }} > + display={"flex"} + mb={4} + sx={{ + width: "100%", + justifyContent: "center", + flexWrap: "wrap", + }} + > {highlightWords(words, matchedChar)} )} - + )} diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx index ddb5ac52..aa4e7838 100644 --- a/src/views/Practice/Practice.jsx +++ b/src/views/Practice/Practice.jsx @@ -3,9 +3,7 @@ import Mechanics2 from "../../components/Practice/Mechanics2"; import Mechanics3 from "../../components/Practice/Mechanics3"; import Mechanics4 from "../../components/Practice/Mechanics4"; import Mechanics5 from "../../components/Practice/Mechanics5"; -import { - useNavigate, -} from "../../../node_modules/react-router-dom/dist/index"; +import { useNavigate } from "../../../node_modules/react-router-dom/dist/index"; import { callConfetti, getLocalData, @@ -53,19 +51,22 @@ const Practice = () => { const TARGETS_PERCENTAGE = 0.3; const [openMessageDialog, setOpenMessageDialog] = useState(""); const lang = getLocalData("lang"); - const [totalSyllableCount, setTotalSyllableCount] = useState(''); - const [percentage, setPercentage] = useState(''); + const [totalSyllableCount, setTotalSyllableCount] = useState(""); + const [percentage, setPercentage] = useState(""); const [fluency, setFluency] = useState(false); const [isNextButtonCalled, setIsNextButtonCalled] = useState(false); const gameOver = (data, isUserPass) => { let userWon = isUserPass ? true : false; const meetsFluencyCriteria = livesData.meetsFluencyCriteria ? true : false; - setGameOverData({ gameOver: true, userWon, ...data, meetsFluencyCriteria}); + setGameOverData({ gameOver: true, userWon, ...data, meetsFluencyCriteria }); }; const isFirefox = () => { - return typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().includes('firefox'); + return ( + typeof navigator !== "undefined" && + navigator.userAgent.toLowerCase().includes("firefox") + ); }; useEffect(() => { @@ -128,7 +129,7 @@ const Practice = () => { }, [voiceText]); const send = (score) => { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { + if (process.env.REACT_APP_IS_APP_IFRAME === "true") { window.parent.postMessage({ score: score, message: "all-test-rig-score", @@ -137,23 +138,23 @@ const Practice = () => { }; const checkFluency = (contentType, fluencyScore) => { - switch (contentType.toLowerCase()) { - case 'word': - setFluency(fluencyScore < 2); - break; - case 'sentence': - setFluency(fluencyScore < 6); - break; - case 'paragraph': - setFluency(fluencyScore < 10); - break; - default: - setFluency(true); - } - } + switch (contentType.toLowerCase()) { + case "word": + setFluency(fluencyScore < 2); + break; + case "sentence": + setFluency(fluencyScore < 6); + break; + case "paragraph": + setFluency(fluencyScore < 10); + break; + default: + setFluency(true); + } + }; const handleNext = async (isGameOver) => { - setIsNextButtonCalled(true) + setIsNextButtonCalled(true); setEnableNext(false); try { @@ -192,7 +193,7 @@ const Practice = () => { currentPracticeProgress = Math.round( ((currentQuestion + 1 + currentPracticeStep * limit) / (practiceSteps.length * limit)) * - 100 + 100 ); } @@ -244,22 +245,22 @@ const Practice = () => { Log(data, "practice", "ET"); setPercentage(getSetData?.data?.percentage); checkFluency(currentContentType, getSetData?.data?.fluency); - if(process.env.REACT_APP_POST_LEARNER_PROGRESS === "true"){ - await axios.post( - `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, - { - userId: virtualId, - sessionId: sessionId, - subSessionId: sub_session_id, - milestoneLevel: getSetData?.data?.currentLevel, - totalSyllableCount: totalSyllableCount, - language: localStorage.getItem("lang"), - } - ); - } + if (process.env.REACT_APP_POST_LEARNER_PROGRESS === "true") { + await axios.post( + `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.CREATE_LEARNER_PROGRESS}`, + { + userId: virtualId, + sessionId: sessionId, + subSessionId: sub_session_id, + milestoneLevel: getSetData?.data?.currentLevel, + totalSyllableCount: totalSyllableCount, + language: localStorage.getItem("lang"), + } + ); + } setLocalData("previous_level", getSetData.data.previous_level); if (getSetData.data.sessionResult === "pass") { - try{ + try { await axios.post( `${process.env.REACT_APP_LEARNER_AI_ORCHESTRATION_HOST}/${config.URLS.ADD_LESSON}`, { @@ -274,8 +275,7 @@ const Practice = () => { ); gameOver({ link: "/assesment-end" }, true); return; - } - catch(e){ + } catch (e) { // catch error } } @@ -316,14 +316,15 @@ const Practice = () => { `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); - setTotalSyllableCount(resGetContent?.data?.totalSyllableCount) + setTotalSyllableCount(resGetContent?.data?.totalSyllableCount); setLivesData({ ...livesData, totalTargets: resGetContent?.data?.totalSyllableCount, targetsForLives: resGetContent?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE, targetPerLive: - (resGetContent?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE) / LIVES, + (resGetContent?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE) / + LIVES, }); let showcaseLevel = @@ -405,9 +406,9 @@ const Practice = () => { const virtualId = getLocalData("virtualId"); let sessionId = getLocalData("sessionId"); - if (!sessionId){ + if (!sessionId) { sessionId = uniqueId(); - localStorage.setItem("sessionId", sessionId) + localStorage.setItem("sessionId", sessionId); } const getMilestoneDetails = await axios.get( @@ -455,11 +456,12 @@ const Practice = () => { const resWord = await axios.get( `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); - setTotalSyllableCount(resWord?.data?.totalSyllableCount) + setTotalSyllableCount(resWord?.data?.totalSyllableCount); setLivesData({ ...livesData, totalTargets: resWord?.data?.totalSyllableCount, - targetsForLives: resWord?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE, + targetsForLives: + resWord?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE, targetPerLive: (resWord?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE) / LIVES, }); @@ -544,11 +546,12 @@ const Practice = () => { const resWord = await axios.get( `${process.env.REACT_APP_LEARNER_AI_APP_HOST}/${config.URLS.GET_CONTENT}/${currentGetContent.criteria}/${virtualId}?language=${lang}&contentlimit=${limit}&gettargetlimit=${limit}` ); - setTotalSyllableCount(resWord?.data?.totalSyllableCount) + setTotalSyllableCount(resWord?.data?.totalSyllableCount); setLivesData({ ...livesData, totalTargets: resWord?.data?.totalSyllableCount, - targetsForLives: resWord?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE, + targetsForLives: + resWord?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE, targetPerLive: (resWord?.data?.subsessionTargetsCount * TARGETS_PERCENTAGE) / LIVES, }); @@ -565,10 +568,10 @@ const Practice = () => { setCurrentQuestion(practiceProgress[virtualId]?.currentQuestion || 0); setLocalData("practiceProgress", JSON.stringify(practiceProgress)); } else { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { + if (process.env.REACT_APP_IS_APP_IFRAME === "true") { navigate("/"); - }else { - navigate("/discover-start") + } else { + navigate("/discover-start"); } } }; @@ -611,7 +614,7 @@ const Practice = () => { variant="h5" component="h4" sx={{ - fontSize: `${fontSize}px`, + fontSize: "clamp(1.6rem, 2.5vw, 3.8rem)", fontWeight: 700, fontFamily: "Quicksand", lineHeight: "50px", @@ -635,7 +638,7 @@ const Practice = () => { component="h4" sx={{ color: "#333F61", - fontSize: `${fontSize}px`, + fontSize: "clamp(1.6rem, 2.5vw, 3.8rem)", fontWeight: 700, fontFamily: "Quicksand", lineHeight: "50px", @@ -698,11 +701,12 @@ const Practice = () => { useEffect(() => { if (questions[currentQuestion]?.contentSourceData) { - if (process.env.REACT_APP_IS_APP_IFRAME === 'true') { - const contentSourceData = questions[currentQuestion]?.contentSourceData || []; - const stringLengths = contentSourceData.map(item => item.text.length); + if (process.env.REACT_APP_IS_APP_IFRAME === "true") { + const contentSourceData = + questions[currentQuestion]?.contentSourceData || []; + const stringLengths = contentSourceData.map((item) => item.text.length); const length = stringLengths[0]; - window.parent.postMessage({ type: 'stringLengths', length }); + window.parent.postMessage({ type: "stringLengths", length }); } } }, [questions[currentQuestion]]); @@ -755,7 +759,7 @@ const Practice = () => { setOpenMessageDialog, setEnableNext, isNextButtonCalled, - setIsNextButtonCalled + setIsNextButtonCalled, }} /> ); From f3ac787e5bfd1bc6b17514739c541a664f7f4fd7 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Mon, 26 Aug 2024 17:17:41 +0530 Subject: [PATCH 36/39] Issue id #225754 fix: When the sound icon is clicked, the Tamil sentence is being played. --- src/utils/AudioCompare.js | 50 ++++----- src/utils/VoiceAnalyser.js | 205 +++++++++++++++++++------------------ 2 files changed, 134 insertions(+), 121 deletions(-) diff --git a/src/utils/AudioCompare.js b/src/utils/AudioCompare.js index 8caacbca..c4545242 100644 --- a/src/utils/AudioCompare.js +++ b/src/utils/AudioCompare.js @@ -39,6 +39,7 @@ const AudioRecorder = (props) => { recorderType: RecordRTC.StereoAudioRecorder, // Use StereoAudioRecorder for better compatibility numberOfAudioChannels: 1, // Match the same number of audio channels desiredSampRate: 16000, // Adjust the sample rate if necessary to match + disableLogs: true, }); recorderRef.current.startRecording(); @@ -116,33 +117,34 @@ const AudioRecorder = (props) => { }} className="game-action-button" > - {(!props.dontShowListen || props.recordedAudio) && ( - <> - {!props.pauseAudio ? ( -
{ - props.playAudio(true); - }} - > - - + {props?.originalText && + (!props.dontShowListen || props.recordedAudio) && ( + <> + {!props.pauseAudio ? ( +
{ + props.playAudio(true); + }} + > + + + +
+ ) : ( + { + props.playAudio(false); + }} + > + -
- ) : ( - { - props.playAudio(false); - }} - > - - - )} - - )} + )} + + )}
- {!props.showOnlyListen && ( + {props?.originalText && !props.showOnlyListen && ( { - if(props.isNextButtonCalled){ + useEffect(() => { + if (props.isNextButtonCalled) { if (recordedAudioBase64 !== "") { const lang = getLocalData("lang") || "ta"; fetchASROutput(lang, recordedAudioBase64); - setLoader(true) + setLoader(true); } } - },[props.isNextButtonCalled]) + }, [props.isNextButtonCalled]); useEffect(() => { if (recordedAudioBase64 !== "") { - if( props.setIsNextButtonCalled){ + if (props.setIsNextButtonCalled) { props.setIsNextButtonCalled(false); } } @@ -258,7 +258,7 @@ function VoiceAnalyser(props) { const { originalText, contentType, contentId, currentLine } = props; const responseStartTime = new Date().getTime(); let responseText = ""; - let profanityWord = "" + let profanityWord = ""; let newThresholdPercentage = 0; let data = {}; @@ -279,16 +279,21 @@ function VoiceAnalyser(props) { ); data = updateLearnerData; responseText = data.responseText; - profanityWord = await filterBadWords(data.responseText); + profanityWord = await filterBadWords(data.responseText); if (profanityWord !== data.responseText) { props?.setOpenMessageDialog({ message: "Please avoid using inappropriate language.", isError: true, }); - } + } newThresholdPercentage = data?.subsessionTargetsCount || 0; - if (contentType.toLowerCase() !== 'word') { - handlePercentageForLife(newThresholdPercentage, contentType, data?.subsessionFluency, lang); + if (contentType.toLowerCase() !== "word") { + handlePercentageForLife( + newThresholdPercentage, + contentType, + data?.subsessionFluency, + lang + ); } } @@ -360,8 +365,9 @@ function VoiceAnalyser(props) { var audioFileName = ""; if (process.env.REACT_APP_CAPTURE_AUDIO === "true" && false) { let getContentId = currentLine; - audioFileName = `${process.env.REACT_APP_CHANNEL - }/${sessionId}-${Date.now()}-${getContentId}.wav`; + audioFileName = `${ + process.env.REACT_APP_CHANNEL + }/${sessionId}-${Date.now()}-${getContentId}.wav`; const command = new PutObjectCommand({ Bucket: process.env.REACT_APP_AWS_S3_BUCKET_NAME, @@ -373,7 +379,7 @@ function VoiceAnalyser(props) { }); try { const response = await S3Client.send(command); - } catch (err) { } + } catch (err) {} } response( @@ -400,23 +406,23 @@ function VoiceAnalyser(props) { ); setApiResponse(callUpdateLearner ? data.status : "success"); - if(props.handleNext){ + if (props.handleNext) { props.handleNext(); - if(temp_audio !== null){ + if (temp_audio !== null) { temp_audio.pause(); setPauseAudio(false); } } setLoader(false); - if( props.setIsNextButtonCalled){ + if (props.setIsNextButtonCalled) { props.setIsNextButtonCalled(false); } } catch (error) { setLoader(false); - if(props.handleNext){ + if (props.handleNext) { props.handleNext(); } - if( props.setIsNextButtonCalled){ + if (props.setIsNextButtonCalled) { props.setIsNextButtonCalled(false); } setRecordedAudioBase64(""); @@ -425,92 +431,95 @@ function VoiceAnalyser(props) { } }; - const handlePercentageForLife = (percentage, contentType, fluencyScore, language) => { + const handlePercentageForLife = ( + percentage, + contentType, + fluencyScore, + language + ) => { try { - if (livesData) { - let totalSyllables = livesData.totalTargets; - if (language === "en") { - if (totalSyllables > 50) { - totalSyllables = 50; - } + if (livesData) { + let totalSyllables = livesData.totalTargets; + if (language === "en") { + if (totalSyllables > 50) { + totalSyllables = 50; } - // Calculate the current percentage based on total targets. - percentage = Math.round((percentage / totalSyllables) * 100); - - // Define the total number of lives and adjust the threshold based on syllables. - const totalLives = 5; - let threshold = 30; // Default threshold - - // Adjust the threshold based on total syllables. - if (totalSyllables <= 100) threshold = 30; - else if (totalSyllables > 100 && totalSyllables <= 150) threshold = 25; - else if (totalSyllables > 150 && totalSyllables <= 175) threshold = 20; - else if (totalSyllables > 175 && totalSyllables <= 250) threshold = 15; - else if (totalSyllables > 250 && totalSyllables <= 500) threshold = 10; - else if (totalSyllables > 500) threshold = 5; - - // Calculate lives lost based on percentage. - let livesLost = Math.floor(percentage / (threshold / totalLives)); - - // Check fluency criteria and adjust lives lost accordingly. - let meetsFluencyCriteria; - switch (contentType.toLowerCase()) { - case 'word': - meetsFluencyCriteria = fluencyScore < 2; - break; - case 'sentence': - meetsFluencyCriteria = fluencyScore < 6; - break; - case 'paragraph': - meetsFluencyCriteria = fluencyScore < 10; - break; - default: - meetsFluencyCriteria = true; // Assume criteria met if not specified. - } + } + // Calculate the current percentage based on total targets. + percentage = Math.round((percentage / totalSyllables) * 100); + + // Define the total number of lives and adjust the threshold based on syllables. + const totalLives = 5; + let threshold = 30; // Default threshold + + // Adjust the threshold based on total syllables. + if (totalSyllables <= 100) threshold = 30; + else if (totalSyllables > 100 && totalSyllables <= 150) threshold = 25; + else if (totalSyllables > 150 && totalSyllables <= 175) threshold = 20; + else if (totalSyllables > 175 && totalSyllables <= 250) threshold = 15; + else if (totalSyllables > 250 && totalSyllables <= 500) threshold = 10; + else if (totalSyllables > 500) threshold = 5; + + // Calculate lives lost based on percentage. + let livesLost = Math.floor(percentage / (threshold / totalLives)); + + // Check fluency criteria and adjust lives lost accordingly. + let meetsFluencyCriteria; + switch (contentType.toLowerCase()) { + case "word": + meetsFluencyCriteria = fluencyScore < 2; + break; + case "sentence": + meetsFluencyCriteria = fluencyScore < 6; + break; + case "paragraph": + meetsFluencyCriteria = fluencyScore < 10; + break; + default: + meetsFluencyCriteria = true; // Assume criteria met if not specified. + } - // If fluency criteria are not met, reduce an additional life, but ensure it doesn't exceed the total lives. - if (!meetsFluencyCriteria && livesLost < totalLives) { - livesLost = Math.min(livesLost + 1, totalLives); - } + // If fluency criteria are not met, reduce an additional life, but ensure it doesn't exceed the total lives. + if (!meetsFluencyCriteria && livesLost < totalLives) { + livesLost = Math.min(livesLost + 1, totalLives); + } - // Determine the number of red and black lives to show. - const redLivesToShow = totalLives - livesLost; - let blackLivesToShow = 5; - if(livesLost <= 5){ - blackLivesToShow = livesLost; - } + // Determine the number of red and black lives to show. + const redLivesToShow = totalLives - livesLost; + let blackLivesToShow = 5; + if (livesLost <= 5) { + blackLivesToShow = livesLost; + } - // Prepare the new lives data. - let newLivesData = { - ...livesData, - blackLivesToShow, - redLivesToShow, - meetsFluencyCriteria: meetsFluencyCriteria, - }; - - // Play audio based on the change in lives. - const HeartGaain = - livesData.redLivesToShow === undefined - ? 5 - newLivesData.redLivesToShow - : livesData.redLivesToShow - newLivesData.redLivesToShow; - let isLiveLost; - if (HeartGaain > 0) { - isLiveLost = true; - } else { - isLiveLost = false; - } - const audio = new Audio(isLiveLost ? livesCut : livesAdd); - audio.play(); + // Prepare the new lives data. + let newLivesData = { + ...livesData, + blackLivesToShow, + redLivesToShow, + meetsFluencyCriteria: meetsFluencyCriteria, + }; - // Update the state or data structure with the new lives data. - setLivesData(newLivesData); + // Play audio based on the change in lives. + const HeartGaain = + livesData.redLivesToShow === undefined + ? 5 - newLivesData.redLivesToShow + : livesData.redLivesToShow - newLivesData.redLivesToShow; + let isLiveLost; + if (HeartGaain > 0) { + isLiveLost = true; + } else { + isLiveLost = false; } + const audio = new Audio(isLiveLost ? livesCut : livesAdd); + audio.play(); + + // Update the state or data structure with the new lives data. + setLivesData(newLivesData); + } } catch (e) { - console.log("error", e); + console.log("error", e); } -}; - - + }; // const getpermision = () => { // navigator.getUserMedia = @@ -543,6 +552,7 @@ function VoiceAnalyser(props) { //alert("Microphone Permission Denied"); }); }; + return (
{loader ? ( @@ -557,6 +567,7 @@ function VoiceAnalyser(props) { <> Date: Tue, 27 Aug 2024 14:48:11 +0530 Subject: [PATCH 37/39] Issueid #225829 fix: Spaces got hide between Sentence and Paragraph --- src/views/Practice/Practice.jsx | 119 ++++++++++++++++++++++---------- 1 file changed, 82 insertions(+), 37 deletions(-) diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx index 63c0ad99..f7486cbd 100644 --- a/src/views/Practice/Practice.jsx +++ b/src/views/Practice/Practice.jsx @@ -567,40 +567,15 @@ const Practice = () => { function highlightWords(sentence, matchedChar) { const words = sentence.split(" "); - matchedChar.sort((str1, str2) => str2.length - str1.length); + matchedChar.sort(function (str1, str2) { + return str2.length - str1.length; + }); - const fontSize = + let fontSize = questions[currentQuestion]?.contentType?.toLowerCase() === "paragraph" ? 30 : 40; - const type = currentContentType?.toLowerCase(); - const commonTypographyProps = { - variant: "h5", - component: "h4", - sx: { - fontSize: "clamp(1.6rem, 2.5vw, 3.8rem)", - fontWeight: 700, - fontFamily: "Quicksand", - lineHeight: "50px", - }, - }; - - const renderTypography = (key, content, background = null) => ( - - - {content} - - - ); - + let type = currentContentType?.toLowerCase(); if (type === "char" || type === "word") { const word = splitGraphemes(words[0].toLowerCase()).filter( (item) => item !== "‌" && item !== "" && item !== " " @@ -608,30 +583,100 @@ const Practice = () => { let highlightedString = []; for (let i = 0; i < word.length; i++) { let matchFound = false; - for (const match of matchedChar) { - const length = splitGraphemes(match).filter( + for (let j = 0; j < matchedChar.length; j++) { + let length = splitGraphemes(matchedChar[j]).filter( (item) => item !== "‌" && item !== "" && item !== " " ).length; const substr = word.slice(i, i + length).join(""); - if (substr.includes(match)) { - highlightedString.push(renderTypography(i, substr, true)); + if (substr.includes(matchedChar[j])) { + highlightedString.push( + + + {substr} + + + ); i += length - 1; matchFound = true; break; } } if (!matchFound) { - highlightedString.push(renderTypography(i, word[i])); + highlightedString.push( + + + {word[i]} + + + ); } } return highlightedString; } else { - return words.map((word, index) => { + const highlightedSentence = words.map((word, index) => { const isMatched = matchedChar.some((char) => word.toLowerCase().includes(char) ); - return renderTypography(index, word + " ", isMatched); + if (isMatched) { + return ( + + + {word} + {" "} + + ); + } else { + return ( + + {word + " "} + + ); + } }); + return highlightedSentence; } } From 455ca24cdf0619a424ab4f73b6464417eeab77b0 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Tue, 27 Aug 2024 16:23:46 +0530 Subject: [PATCH 38/39] comment resolved --- src/views/Practice/Practice.jsx | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/views/Practice/Practice.jsx b/src/views/Practice/Practice.jsx index f7486cbd..3fe6ac43 100644 --- a/src/views/Practice/Practice.jsx +++ b/src/views/Practice/Practice.jsx @@ -571,10 +571,6 @@ const Practice = () => { return str2.length - str1.length; }); - let fontSize = - questions[currentQuestion]?.contentType?.toLowerCase() === "paragraph" - ? 30 - : 40; let type = currentContentType?.toLowerCase(); if (type === "char" || type === "word") { const word = splitGraphemes(words[0].toLowerCase()).filter( @@ -595,7 +591,7 @@ const Practice = () => { variant="h5" component="h4" sx={{ - fontSize: `${fontSize}px`, + fontSize: "clamp(1.6rem, 2.5vw, 3.8rem)", fontWeight: 700, fontFamily: "Quicksand", lineHeight: "50px", @@ -619,7 +615,7 @@ const Practice = () => { component="h4" sx={{ color: "#333F61", - fontSize: `${fontSize}px`, + fontSize: "clamp(1.6rem, 2.5vw, 3.8rem)", fontWeight: 700, fontFamily: "Quicksand", lineHeight: "50px", @@ -645,7 +641,7 @@ const Practice = () => { component="h4" ml={1} sx={{ - fontSize: `${fontSize}px`, + fontSize: "clamp(1.6rem, 2.5vw, 3.8rem)", fontWeight: 700, fontFamily: "Quicksand", lineHeight: "50px", @@ -664,7 +660,7 @@ const Practice = () => { ml={1} sx={{ color: "#333F61", - fontSize: `${fontSize}px`, + fontSize: "clamp(1.6rem, 2.5vw, 3.8rem)", fontWeight: 700, fontFamily: "Quicksand", lineHeight: "50px", From d2c5152ede80e073b702266ed62dfd4ad393da99 Mon Sep 17 00:00:00 2001 From: Ajinkya Pande Date: Wed, 28 Aug 2024 17:55:47 +0530 Subject: [PATCH 39/39] Issueid #225896 feat: Enable Audio Upload on Test-Rig --- src/config/awsS3.js | 16 ++++++++-------- src/utils/VoiceAnalyser.js | 5 +++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/config/awsS3.js b/src/config/awsS3.js index 34d950f4..6fa0f244 100644 --- a/src/config/awsS3.js +++ b/src/config/awsS3.js @@ -1,9 +1,9 @@ -// import { S3Client } from '@aws-sdk/client-s3'; +import { S3Client } from "@aws-sdk/client-s3"; -// export default new S3Client({ -// region: process.env.REACT_APP_AWS_S3_REGION, -// credentials: { -// accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY_ID, -// secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY, -// }, -// }); +export default new S3Client({ + region: process.env.REACT_APP_AWS_S3_REGION, + credentials: { + accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY_ID, + secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY, + }, +}); diff --git a/src/utils/VoiceAnalyser.js b/src/utils/VoiceAnalyser.js index a0883824..2e8e2694 100644 --- a/src/utils/VoiceAnalyser.js +++ b/src/utils/VoiceAnalyser.js @@ -30,7 +30,8 @@ import { } from "./constants"; import config from "./urlConstants.json"; import { filterBadWords } from "./Badwords"; -// import S3Client from '../config/awsS3'; +import S3Client from "../config/awsS3"; +import { PutObjectCommand } from "@aws-sdk/client-s3"; /* eslint-disable */ const AudioPath = { @@ -363,7 +364,7 @@ function VoiceAnalyser(props) { // TODO: Remove false when REACT_APP_AWS_S3_BUCKET_NAME and keys added var audioFileName = ""; - if (process.env.REACT_APP_CAPTURE_AUDIO === "true" && false) { + if (process.env.REACT_APP_CAPTURE_AUDIO === "true") { let getContentId = currentLine; audioFileName = `${ process.env.REACT_APP_CHANNEL