From bea2391141996b9c4b782de04a7d9abdfc5c8577 Mon Sep 17 00:00:00 2001 From: Vijay <94220135+vijay151096@users.noreply.github.com> Date: Tue, 16 Apr 2024 08:43:36 +0530 Subject: [PATCH] [INJIWEB-212]: introduce help screen and handle the error for fetching issuers in homepage with toaster Signed-off-by: Vijay <94220135+vijay151096@users.noreply.github.com> --- inji-web/.env | 2 +- inji-web/package-lock.json | 210 ++++++++++++++++++ inji-web/package.json | 2 + inji-web/public/favicon.ico | Bin 3870 -> 0 bytes inji-web/public/inji-logo.png | Bin 4567 -> 0 bytes inji-web/public/logo192.png | Bin 5347 -> 0 bytes inji-web/public/logo512.png | Bin 9664 -> 0 bytes inji-web/public/manifest.json | 25 --- inji-web/public/robots.txt | 3 - inji-web/src/Router.js | 13 +- .../Certificate/DisplayComponent.jsx | 0 .../Certificate/DisplayComponent.test.js | 0 .../Certificate/Header.js | 6 +- .../Certificate/Header.test.js | 0 .../Certificate/ResultBackButton.jsx | 0 .../Certificate/ResultBackButton.test.js | 0 .../Common}/LoadingScreen.css | 0 .../Common}/LoadingScreen.js | 0 inji-web/src/components/Help/HelpContent.jsx | 59 +++++ .../src/components/Help/HelpContentItem.jsx | 25 +++ .../{pages => components}/Home/IssuerList.js | 20 +- .../Home/IssuerList.test.js | 0 .../Home/SearchIssuers.js | 0 .../{pages => components}/Home/testData.js | 0 .../Issuers}/CertificateList.js | 4 +- .../Issuers}/CertificateList.test.js | 2 +- .../Issuers}/Header.js | 0 .../PageTemplate/Footer.jsx | 0 .../PageTemplate/Navbar.jsx | 5 +- .../PageTemplate/styles.jsx | 0 .../src/components/atoms/HorizontalLine.js | 10 + inji-web/src/index.css | 19 -- inji-web/src/index.js | 2 +- .../{index.js => CertificatePage.js} | 6 +- ...{index.test.js => CertificatePage.test.js} | 2 +- inji-web/src/pages/Help/HelpPage.js | 20 ++ .../src/pages/Home/{index.js => HomePage.js} | 28 ++- .../Home/{index.test.js => HomePage.test.js} | 4 +- .../IssuerPage/{index.js => IssuersPage.js} | 10 +- .../{index.jsx => PageTemplate.jsx} | 6 +- .../{index.test.js => PageTemplate.test.js} | 6 +- inji-web/src/utils/http-utils.js | 0 42 files changed, 399 insertions(+), 90 deletions(-) delete mode 100644 inji-web/public/favicon.ico delete mode 100644 inji-web/public/inji-logo.png delete mode 100644 inji-web/public/logo192.png delete mode 100644 inji-web/public/logo512.png delete mode 100644 inji-web/public/manifest.json delete mode 100644 inji-web/public/robots.txt rename inji-web/src/{pages => components}/Certificate/DisplayComponent.jsx (100%) rename inji-web/src/{pages => components}/Certificate/DisplayComponent.test.js (100%) rename inji-web/src/{pages => components}/Certificate/Header.js (93%) rename inji-web/src/{pages => components}/Certificate/Header.test.js (100%) rename inji-web/src/{pages => components}/Certificate/ResultBackButton.jsx (100%) rename inji-web/src/{pages => components}/Certificate/ResultBackButton.test.js (100%) rename inji-web/src/{utils => components/Common}/LoadingScreen.css (100%) rename inji-web/src/{utils => components/Common}/LoadingScreen.js (100%) create mode 100644 inji-web/src/components/Help/HelpContent.jsx create mode 100644 inji-web/src/components/Help/HelpContentItem.jsx rename inji-web/src/{pages => components}/Home/IssuerList.js (70%) rename inji-web/src/{pages => components}/Home/IssuerList.test.js (100%) rename inji-web/src/{pages => components}/Home/SearchIssuers.js (100%) rename inji-web/src/{pages => components}/Home/testData.js (100%) rename inji-web/src/{pages/IssuerPage => components/Issuers}/CertificateList.js (92%) rename inji-web/src/{pages/IssuerPage => components/Issuers}/CertificateList.test.js (92%) rename inji-web/src/{pages/IssuerPage => components/Issuers}/Header.js (100%) rename inji-web/src/{pages => components}/PageTemplate/Footer.jsx (100%) rename inji-web/src/{pages => components}/PageTemplate/Navbar.jsx (83%) rename inji-web/src/{pages => components}/PageTemplate/styles.jsx (100%) create mode 100644 inji-web/src/components/atoms/HorizontalLine.js delete mode 100644 inji-web/src/index.css rename inji-web/src/pages/Certificate/{index.js => CertificatePage.js} (94%) rename inji-web/src/pages/Certificate/{index.test.js => CertificatePage.test.js} (97%) create mode 100644 inji-web/src/pages/Help/HelpPage.js rename inji-web/src/pages/Home/{index.js => HomePage.js} (57%) rename inji-web/src/pages/Home/{index.test.js => HomePage.test.js} (93%) rename inji-web/src/pages/IssuerPage/{index.js => IssuersPage.js} (91%) rename inji-web/src/pages/PageTemplate/{index.jsx => PageTemplate.jsx} (91%) rename inji-web/src/pages/PageTemplate/{index.test.js => PageTemplate.test.js} (90%) delete mode 100644 inji-web/src/utils/http-utils.js diff --git a/inji-web/.env b/inji-web/.env index 114aaaa..75ff978 100644 --- a/inji-web/.env +++ b/inji-web/.env @@ -1 +1 @@ -REACT_APP_MIMOTO_URL=http://localhost:3010 +#REACT_APP_MIMOTO_URL=http://localhost:3010 diff --git a/inji-web/package-lock.json b/inji-web/package-lock.json index d3df0b4..c96aca3 100644 --- a/inji-web/package-lock.json +++ b/inji-web/package-lock.json @@ -21,6 +21,8 @@ "react-dom": "^18.2.0", "react-router-dom": "^6.22.0", "react-scripts": "5.0.1", + "react-toastify": "^10.0.5", + "styled-components": "^6.1.8", "web-vitals": "^2.1.4" }, "devDependencies": { @@ -5830,6 +5832,11 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" }, + "node_modules/@types/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==" + }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -7434,6 +7441,14 @@ "node": ">= 6" } }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -8017,6 +8032,14 @@ "postcss": "^8.4" } }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, "node_modules/css-declaration-sorter": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", @@ -8207,6 +8230,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "node_modules/css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -20186,6 +20219,18 @@ "node": ">=10" } }, + "node_modules/react-toastify": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz", + "integrity": "sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==", + "dependencies": { + "clsx": "^2.1.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -20984,6 +21029,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -21516,6 +21566,80 @@ "webpack": "^5.0.0" } }, + "node_modules/styled-components": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz", + "integrity": "sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==", + "dependencies": { + "@emotion/is-prop-valid": "1.2.1", + "@emotion/unitless": "0.8.0", + "@types/stylis": "4.2.0", + "css-to-react-native": "3.2.0", + "csstype": "3.1.2", + "postcss": "8.4.31", + "shallowequal": "1.1.0", + "stylis": "4.3.1", + "tslib": "2.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "node_modules/styled-components/node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/styled-components/node_modules/stylis": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", + "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" + }, + "node_modules/styled-components/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, "node_modules/stylehacks": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", @@ -27456,6 +27580,11 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" }, + "@types/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==" + }, "@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -28646,6 +28775,11 @@ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, + "camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -29080,6 +29214,11 @@ "postcss-selector-parser": "^6.0.9" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" + }, "css-declaration-sorter": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", @@ -29187,6 +29326,16 @@ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" }, + "css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -37881,6 +38030,14 @@ } } }, + "react-toastify": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz", + "integrity": "sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw==", + "requires": { + "clsx": "^2.1.0" + } + }, "react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -38458,6 +38615,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -38857,6 +39019,54 @@ "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "requires": {} }, + "styled-components": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz", + "integrity": "sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==", + "requires": { + "@emotion/is-prop-valid": "1.2.1", + "@emotion/unitless": "0.8.0", + "@types/stylis": "4.2.0", + "css-to-react-native": "3.2.0", + "csstype": "3.1.2", + "postcss": "8.4.31", + "shallowequal": "1.1.0", + "stylis": "4.3.1", + "tslib": "2.5.0" + }, + "dependencies": { + "@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "stylis": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", + "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" + }, + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + } + } + }, "stylehacks": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", diff --git a/inji-web/package.json b/inji-web/package.json index 68fd6a5..0966a88 100644 --- a/inji-web/package.json +++ b/inji-web/package.json @@ -16,6 +16,8 @@ "react-dom": "^18.2.0", "react-router-dom": "^6.22.0", "react-scripts": "5.0.1", + "react-toastify": "^10.0.5", + "styled-components": "^6.1.8", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/inji-web/public/favicon.ico b/inji-web/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/inji-web/public/inji-logo.png b/inji-web/public/inji-logo.png deleted file mode 100644 index e9dacc690626a8c1edaae2b0085e732360619fba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4567 zcmeI0X;f238^>>u?Xb2iB1fJ2mBTb$bPV0AtX-ciTdcR1nnbkhe&Cwt|cz4mB38}&{N`z5uVLSQ*Gb3>Lm zn=YFggDp9~N%5uDIt-PZDmJqKKt_xtnv}1bs|B7K0SyYK9w$Iq5s{+V0)Q2Y6&ZvN zBQU_n385qk5;EV^3IUUXkq{q*8{93@jzAuXh3I>y8wLTtmoUPR5MMVBupN~~0GmKfpm0Nb7U_gB#99VyMGFqG z@I*U&un@J75F&#SX#s;VnM^420F+7#g&CQfo5SG7Fk@pwk;0H3O<@GF3@LP-9gF{X zpb2z5jTFfsQ7PaZ&!FSfCDk z@=?As*usOvB82;*Nf87JT{HzG1Y!K%>tpc9zkB*vd{ea7`k1U^ap z`E-58^+^OiN&NYA{eR(-`Iy)dD57kRDN5VY8*^`pQa*9ItuszqRAQxr&jNs?&>8(b z&bO`I_gI+LlxqCb!6>1}{UJA9bFxgnt!zY5Fb;k@sbf4~rKA(~db))F1s__+9e+YR z>E(EHm}pOyxict$WiY(hUUiM!yB@s0fRou{hMa)!taYaQ~sqdSA()0%4rkS*2<@Z)L ztEPJzmygy$CV)iju|gRqiG2%;PF60@7JmtO5S)Z0NX<*4z2zE8At{C7*Jk3P-9w$u zp=s8o@+sOiuLIY+1En1duGKZ4*-!OWIC-==wlgZx|69IIB2~5P@#Q-c%-3t#N#8C{ z>kh-+&Ai|F6K?zF(df@C0-sJVF-LEXPYP=f&O5`-9L@jz;#R^XXf}1ZD>`N!M@&3b zXC-B}L|bRa>D#80`HGgR1Ho5AIi8~WInhfCR(h8TU>t6yIq!+QFjuDq`PU?MzMfzw{M>Y%B5 zbD9w=CAMApX%{Ldx`^S?6YUOj*#`A^xGFC6A!miAuRj&ZZ^e5^{h0ApKP3vZ#q^2X))5L`D*S!2Q zmoN~6%}m5_PGGD{;oPtVRo)_H;W5@8F<1?e$ah&HUch}9hsG#6I*Av`1)h%%w|Moo zHHW1lLVjA~o_74`>48`ktom}$ez8)O493B6e(i8u0JKo|)w^w+%);b+x1828kL{;z z_hYTGR`unKxUPz!T!vy8OzHyFZ+Rw2!Y7?3=*{hLB(cup0pDp6-68`};i zC*2sV0L6E-d576hcwH|%vQFE@&J4$a+EcC!lqIW-q_xdAW{Ww6*hH-M)D8!hFHl?X zcC%X;a$)7r;=TUAbSxEdv!uAv6ByU)j%rwENg6+-L+8Zg0~1ttl&ybnf@7ih&r4!l z75zr_GnHWr0c$=s56FH6MZpG~Tj6mRAA-hg(8%s0_BRU^MvWW9-8LhO_9J2jDA^hAH-;cXqN=l*kHfiz`hdc@SP;b?s0o`V%5p;Lbd5%@=gAnl;Uq4J!$ zNAb_o5o0JwUO{uL-fZ77pJMucw}dx+*F%VA`!cH^4>Sr~H}hq^I7vS9=!^i)EJp5B zaV<)`Y(a5O{1B;l5{q~ey)6`kYS8BpK1w657~vt(aw-UT^^#XSQyiX_cT3ND?S{L+ zP!2=?#Zgqkap;fB z-{52q=K0nLlX?j6TH~Mnq;}?%ZOxSwo6I?crm~BrH>QC}`8C9*Jo1YhZqSi>aMb+f z$?#ct(G>Z#v~ zl`5o7Wx5Q5^yQnDjh_@Gv~#^PbLw>tjrlK1ZbA>odTc$4f5U+F3F?f13^2)0;C=G~ zqQh7k_@?R>B*S{&5k%+WJr2*YQhGh^E&mbC;mGaPa@!1!o&u5^9>g-&dPC79MAK%L ziuO^-Wdhvna3KYIL9nS@p*4&6bEFSznuAh0uXUg#CIz3G1md}FQkeQR!>v{?c9j%Q z@cK3})C7uV%9w_jYgN$B{A)ksrK R*PW{mXM1;arETC(e*-q~fY1N{ diff --git a/inji-web/public/logo192.png b/inji-web/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/inji-web/public/manifest.json b/inji-web/public/manifest.json deleted file mode 100644 index 080d6c7..0000000 --- a/inji-web/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/inji-web/public/robots.txt b/inji-web/public/robots.txt deleted file mode 100644 index e9e57dc..0000000 --- a/inji-web/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/inji-web/src/Router.js b/inji-web/src/Router.js index 92dcf01..35fea1a 100644 --- a/inji-web/src/Router.js +++ b/inji-web/src/Router.js @@ -1,7 +1,8 @@ import { createBrowserRouter } from "react-router-dom"; -import Issuer from "./pages/IssuerPage"; -import Home from "./pages/Home"; -import Certificate from "./pages/Certificate"; +import Issuer from "./pages/IssuerPage/IssuersPage"; +import Home from "./pages/Home/HomePage"; +import Certificate from "./pages/Certificate/CertificatePage"; +import {HelpPage} from "./pages/Help/HelpPage"; export const router = createBrowserRouter([ { @@ -18,6 +19,10 @@ export const router = createBrowserRouter([ }, { path: "/issuers/:issuerId/certificate/:certificateId", - element: , + element: , + }, + { + path: "/help", + element: , }, ]); diff --git a/inji-web/src/pages/Certificate/DisplayComponent.jsx b/inji-web/src/components/Certificate/DisplayComponent.jsx similarity index 100% rename from inji-web/src/pages/Certificate/DisplayComponent.jsx rename to inji-web/src/components/Certificate/DisplayComponent.jsx diff --git a/inji-web/src/pages/Certificate/DisplayComponent.test.js b/inji-web/src/components/Certificate/DisplayComponent.test.js similarity index 100% rename from inji-web/src/pages/Certificate/DisplayComponent.test.js rename to inji-web/src/components/Certificate/DisplayComponent.test.js diff --git a/inji-web/src/pages/Certificate/Header.js b/inji-web/src/components/Certificate/Header.js similarity index 93% rename from inji-web/src/pages/Certificate/Header.js rename to inji-web/src/components/Certificate/Header.js index 068db61..f7cdbc4 100644 --- a/inji-web/src/pages/Certificate/Header.js +++ b/inji-web/src/components/Certificate/Header.js @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from 'react'; +import React from 'react'; import {Grid, IconButton, Typography, Autocomplete, TextField} from "@mui/material"; import styled from "@emotion/styled"; import Box from "@mui/material/Box"; @@ -30,7 +30,7 @@ const CertificateTitle = styled(Typography)` font-family: Inter; `; -function Header() { +function Header({title}) { const navigate = useNavigate(); const { issuerId, certificateId } = useParams(); @@ -43,7 +43,7 @@ function Header() { - {issuerId} + {title ? title : issuerId} diff --git a/inji-web/src/pages/Certificate/Header.test.js b/inji-web/src/components/Certificate/Header.test.js similarity index 100% rename from inji-web/src/pages/Certificate/Header.test.js rename to inji-web/src/components/Certificate/Header.test.js diff --git a/inji-web/src/pages/Certificate/ResultBackButton.jsx b/inji-web/src/components/Certificate/ResultBackButton.jsx similarity index 100% rename from inji-web/src/pages/Certificate/ResultBackButton.jsx rename to inji-web/src/components/Certificate/ResultBackButton.jsx diff --git a/inji-web/src/pages/Certificate/ResultBackButton.test.js b/inji-web/src/components/Certificate/ResultBackButton.test.js similarity index 100% rename from inji-web/src/pages/Certificate/ResultBackButton.test.js rename to inji-web/src/components/Certificate/ResultBackButton.test.js diff --git a/inji-web/src/utils/LoadingScreen.css b/inji-web/src/components/Common/LoadingScreen.css similarity index 100% rename from inji-web/src/utils/LoadingScreen.css rename to inji-web/src/components/Common/LoadingScreen.css diff --git a/inji-web/src/utils/LoadingScreen.js b/inji-web/src/components/Common/LoadingScreen.js similarity index 100% rename from inji-web/src/utils/LoadingScreen.js rename to inji-web/src/components/Common/LoadingScreen.js diff --git a/inji-web/src/components/Help/HelpContent.jsx b/inji-web/src/components/Help/HelpContent.jsx new file mode 100644 index 0000000..a56fed9 --- /dev/null +++ b/inji-web/src/components/Help/HelpContent.jsx @@ -0,0 +1,59 @@ +import {useState} from "react"; +import {HelpContentItem} from "./HelpContentItem"; + +const data = [ + { + panelId: "panel1", + panelHeading: "What is credential?", + panelContent: "Verifiable credentials are digital documents that help users to share information like identity or qualifications to the service provider which can be instantly verified. They're issued by trusted entities and can be cryptographically verified for authenticity. These credentials streamline identity verification processes." + }, + { + panelId: "panel2", + panelHeading: "Who are issuers?", + panelContent: "Issuers are either governmental bodies or entities trusted by the government, responsible for providing verifiable credentials in PDF format to residents upon request." + }, + { + panelId: "panel3", + panelHeading: "How can I download a credential in Inji Web?", + panelContent: "Step1: Search & choose an Issuer from the landing page and select a credential type.\n" + + "\n" + + "Step2: In the authentication page, provide required details\n" + + "\n" + + "Step3: PDF format of the verifiable credential will be downloaded into the system." + }, + { + panelId: "panel4", + panelHeading: "What details I need to provide to download my credential?", + panelContent: "The credential issuer would have provided details like UIN/VID in case of MOSIP National ID or Policy number, Name and DoB for an Insurance card. This information has to be fed to the authentication system to enable download." + }, + { + panelId: "panel5", + panelHeading: "Where can I find my credential?", + panelContent: "The verifiable credential will be downloaded into the Downloads folder of your system." + }, + { + panelId: "panel6", + panelHeading: "What details are present in the PDF credential?", + panelContent: "Details collected as part of the registration process will be presented in the PDF. At present, for Insurance use case, one can find Policy details like Name, DoB, " + }, + { + panelId: "panel7", + panelHeading: "Why I am not finding the list of issuers?", + panelContent: "We’re sorry you stumbled upon an error. However, please check if the issuers' end point is available. If the end point health check is good, please check if the issuers list is configured in the mimoto-issuers config.json." + } +] + +export const HelpContent = () => { + + const [expanded, setExpanded] = useState('panel1'); + const handleChange = (panel) => (event, isExpanded) => { + setExpanded(isExpanded ? panel : false); + }; + + return data.map(entry => + ) +} diff --git a/inji-web/src/components/Help/HelpContentItem.jsx b/inji-web/src/components/Help/HelpContentItem.jsx new file mode 100644 index 0000000..dc7029b --- /dev/null +++ b/inji-web/src/components/Help/HelpContentItem.jsx @@ -0,0 +1,25 @@ +import Accordion from "@mui/material/Accordion"; +import AccordionSummary from "@mui/material/AccordionSummary"; +import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; +import Typography from "@mui/material/Typography"; +import AccordionDetails from "@mui/material/AccordionDetails"; +import {HorizontalLine} from "../atoms/HorizontalLine"; + +export const HelpContentItem = ({panelId, expanded, handleChange, panelHeading, panelContent}) => { + return + } + aria-controls={`${panelId}-content`} + id={`${panelId}-header`}> + + {panelHeading} + {expanded === panelId && } + + + + + {panelContent} + + + +} diff --git a/inji-web/src/pages/Home/IssuerList.js b/inji-web/src/components/Home/IssuerList.js similarity index 70% rename from inji-web/src/pages/Home/IssuerList.js rename to inji-web/src/components/Home/IssuerList.js index 4e8c690..fff3612 100644 --- a/inji-web/src/pages/Home/IssuerList.js +++ b/inji-web/src/components/Home/IssuerList.js @@ -1,11 +1,11 @@ import React from 'react'; -import GridComponent from "../../components/molecules/GridComponent"; +import GridComponent from "../molecules/GridComponent"; import {Typography} from "@mui/material"; import Box from "@mui/material/Box"; import styled from "@emotion/styled"; import { useNavigate } from 'react-router-dom'; -import CustonDownloadButton from "../../components/atoms/CustomDownloadButton.js"; +import Paper from "@mui/material/Paper"; const IssuersBox = styled(Box)` @@ -20,6 +20,10 @@ const Title = styled(Typography)` margin-bottom: 10px; `; +const CenteredTypography = styled(Typography)` + text-align-last: center; +` + const getCardsData = (issuersList, navigate) => { return issuersList.map(issuer => { return { @@ -35,6 +39,13 @@ const getCardsData = (issuersList, navigate) => { }); } +const PaperStyled = styled(Paper)` + margin: 30px auto; + padding: 40px; + max-width: 1140px; + +`; + function IssuersList({issuersList}) { const navigate = useNavigate(); const cards = getCardsData(issuersList, navigate); @@ -43,7 +54,10 @@ function IssuersList({issuersList}) { List of Issuers - + {(issuersList.length === 0) ? + {"No issuers found. Please refresh your browser window or try again later"} + : } + ); } diff --git a/inji-web/src/pages/Home/IssuerList.test.js b/inji-web/src/components/Home/IssuerList.test.js similarity index 100% rename from inji-web/src/pages/Home/IssuerList.test.js rename to inji-web/src/components/Home/IssuerList.test.js diff --git a/inji-web/src/pages/Home/SearchIssuers.js b/inji-web/src/components/Home/SearchIssuers.js similarity index 100% rename from inji-web/src/pages/Home/SearchIssuers.js rename to inji-web/src/components/Home/SearchIssuers.js diff --git a/inji-web/src/pages/Home/testData.js b/inji-web/src/components/Home/testData.js similarity index 100% rename from inji-web/src/pages/Home/testData.js rename to inji-web/src/components/Home/testData.js diff --git a/inji-web/src/pages/IssuerPage/CertificateList.js b/inji-web/src/components/Issuers/CertificateList.js similarity index 92% rename from inji-web/src/pages/IssuerPage/CertificateList.js rename to inji-web/src/components/Issuers/CertificateList.js index f663e9b..c3b99fe 100644 --- a/inji-web/src/pages/IssuerPage/CertificateList.js +++ b/inji-web/src/components/Issuers/CertificateList.js @@ -1,11 +1,11 @@ import React from 'react'; -import GridComponent from "../../components/molecules/GridComponent"; +import GridComponent from "../molecules/GridComponent"; import {Typography} from "@mui/material"; import Box from "@mui/material/Box"; import styled from "@emotion/styled"; import {getESignetRedirectURL} from "../../utils/config"; import {generateCodeChallenge, generateRandomString} from "../../utils/oauth-utils"; -import CustonDownloadButton from "../../components/atoms/CustomDownloadButton.js"; +import CustonDownloadButton from "../atoms/CustomDownloadButton.js"; import {addNewSession, } from "../../utils/sessionUtils"; diff --git a/inji-web/src/pages/IssuerPage/CertificateList.test.js b/inji-web/src/components/Issuers/CertificateList.test.js similarity index 92% rename from inji-web/src/pages/IssuerPage/CertificateList.test.js rename to inji-web/src/components/Issuers/CertificateList.test.js index c9a8192..b3a6b59 100644 --- a/inji-web/src/pages/IssuerPage/CertificateList.test.js +++ b/inji-web/src/components/Issuers/CertificateList.test.js @@ -1,6 +1,6 @@ import React from 'react'; import { render, screen, fireEvent } from '@testing-library/react'; -import Certificate from "../Certificate"; +import Certificate from "../../pages/Certificate/CertificatePage"; import CertificateList from "./CertificateList"; import {SampleCredentialsSupportedData, SampleIssuersData} from "../Home/testData"; diff --git a/inji-web/src/pages/IssuerPage/Header.js b/inji-web/src/components/Issuers/Header.js similarity index 100% rename from inji-web/src/pages/IssuerPage/Header.js rename to inji-web/src/components/Issuers/Header.js diff --git a/inji-web/src/pages/PageTemplate/Footer.jsx b/inji-web/src/components/PageTemplate/Footer.jsx similarity index 100% rename from inji-web/src/pages/PageTemplate/Footer.jsx rename to inji-web/src/components/PageTemplate/Footer.jsx diff --git a/inji-web/src/pages/PageTemplate/Navbar.jsx b/inji-web/src/components/PageTemplate/Navbar.jsx similarity index 83% rename from inji-web/src/pages/PageTemplate/Navbar.jsx rename to inji-web/src/components/PageTemplate/Navbar.jsx index 413939a..1e43534 100644 --- a/inji-web/src/pages/PageTemplate/Navbar.jsx +++ b/inji-web/src/components/PageTemplate/Navbar.jsx @@ -21,7 +21,10 @@ function Navbar(props) { - {"About Inji"} + {"Help"} + + + {"About Inji"} diff --git a/inji-web/src/pages/PageTemplate/styles.jsx b/inji-web/src/components/PageTemplate/styles.jsx similarity index 100% rename from inji-web/src/pages/PageTemplate/styles.jsx rename to inji-web/src/components/PageTemplate/styles.jsx diff --git a/inji-web/src/components/atoms/HorizontalLine.js b/inji-web/src/components/atoms/HorizontalLine.js new file mode 100644 index 0000000..571f07b --- /dev/null +++ b/inji-web/src/components/atoms/HorizontalLine.js @@ -0,0 +1,10 @@ +import styled from 'styled-components' +export const HorizontalLine = styled.div` + content: ''; + position: absolute; + width: 100%; + height: 1px; + left: 0; + bottom: 0; + background-color: lightgray; +`; diff --git a/inji-web/src/index.css b/inji-web/src/index.css deleted file mode 100644 index a08fb0a..0000000 --- a/inji-web/src/index.css +++ /dev/null @@ -1,19 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} - -/*The following changes are to remove default 'x' button that appears in a input field of type search in chrome browser*/ -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-results-button, -input[type="search"]::-webkit-search-results-decoration { display: none; } \ No newline at end of file diff --git a/inji-web/src/index.js b/inji-web/src/index.js index 45cfea0..d404ea2 100644 --- a/inji-web/src/index.js +++ b/inji-web/src/index.js @@ -1,8 +1,8 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import './index.css'; import {RouterProvider} from "react-router-dom"; import {router} from "./Router"; +import 'react-toastify/dist/ReactToastify.css' const root = ReactDOM.createRoot(document.getElementById('root')); root.render( diff --git a/inji-web/src/pages/Certificate/index.js b/inji-web/src/pages/Certificate/CertificatePage.js similarity index 94% rename from inji-web/src/pages/Certificate/index.js rename to inji-web/src/pages/Certificate/CertificatePage.js index 1d3236f..4366526 100644 --- a/inji-web/src/pages/Certificate/index.js +++ b/inji-web/src/pages/Certificate/CertificatePage.js @@ -1,13 +1,13 @@ import React, {useEffect, useState} from 'react'; -import PageTemplate from "../PageTemplate"; +import PageTemplate from "../PageTemplate/PageTemplate"; import Box from "@mui/material/Box"; import {Grid} from "@mui/material"; import {useLocation, useParams} from "react-router-dom"; -import Header from "./Header"; +import Header from "../../components/Certificate/Header"; import {fetchAccessToken} from "../../utils/oauth-utils"; import {downloadCredentials, getUrlParamsMap} from "../../utils/misc"; import {CustomError} from "../../errors/CustomError"; -import {DisplayComponent} from "./DisplayComponent"; +import {DisplayComponent} from "../../components/Certificate/DisplayComponent"; import {getActiveSession, removeActiveSession} from "../../utils/sessionUtils"; const useCodeVerifierAndClientId = (location) => { diff --git a/inji-web/src/pages/Certificate/index.test.js b/inji-web/src/pages/Certificate/CertificatePage.test.js similarity index 97% rename from inji-web/src/pages/Certificate/index.test.js rename to inji-web/src/pages/Certificate/CertificatePage.test.js index cbf8b0e..3f3db60 100644 --- a/inji-web/src/pages/Certificate/index.test.js +++ b/inji-web/src/pages/Certificate/CertificatePage.test.js @@ -1,7 +1,7 @@ import React from 'react'; import axios from 'axios'; import {render, screen} from "@testing-library/react"; -import Certificate from "./index"; +import Certificate from "./CertificatePage"; jest.mock('../../assets/inji-logo.png', () => ({ ...jest.requireActual('../../assets/inji-logo.png'), diff --git a/inji-web/src/pages/Help/HelpPage.js b/inji-web/src/pages/Help/HelpPage.js new file mode 100644 index 0000000..c56c6e6 --- /dev/null +++ b/inji-web/src/pages/Help/HelpPage.js @@ -0,0 +1,20 @@ +import Header from "../../components/Certificate/Header"; +import Box from "@mui/material/Box"; +import {Grid} from "@mui/material"; +import PageTemplate from "../PageTemplate/PageTemplate"; +import React from "react"; +import {HelpContent} from "../../components/Help/HelpContent"; + +export const HelpPage = () => { + return ( + +
+ + + + + + + ); + +} diff --git a/inji-web/src/pages/Home/index.js b/inji-web/src/pages/Home/HomePage.js similarity index 57% rename from inji-web/src/pages/Home/index.js rename to inji-web/src/pages/Home/HomePage.js index 01d2445..ed60a3f 100644 --- a/inji-web/src/pages/Home/index.js +++ b/inji-web/src/pages/Home/HomePage.js @@ -1,21 +1,19 @@ import React from "react"; -import { Box, Grid } from "@mui/material"; -import PageTemplate from "../PageTemplate"; -import Image from '../../assets/Background.svg'; -import IssuersList from "../Home/IssuerList"; -import SearchIssuers from "../Home/SearchIssuers"; +import PageTemplate from "../PageTemplate/PageTemplate"; +import IssuersList from "../../components/Home/IssuerList"; +import SearchIssuers from "../../components/Home/SearchIssuers"; import { useEffect, useState } from "react"; import _axios from 'axios'; -import { SampleIssuersData } from "./testData"; -import {FETCH_ISSUERS_URL, MIMOTO_URL} from "../../utils/config"; -import LoadingScreen from "../../utils/LoadingScreen"; +import {FETCH_ISSUERS_URL} from "../../utils/config"; +import LoadingScreen from "../../components/Common/LoadingScreen"; import {removeUinAndESignetIssuers} from "../../utils/misc"; +import {toast} from "react-toastify"; export default function Home(props) { const [issuersList, setIssuersList] = useState([]); const [loading, setLoading] = useState(true); - const [errorMessage, setErrorMessage] = useState(); + const [errorMessage, setErrorMessage] = useState(""); // logic to fetch the list of IssuerPage on page load useEffect(() => { @@ -27,9 +25,17 @@ export default function Home(props) { setLoading(false); }) .catch(error => { - console.error('Error fetching issuers:', error); + toast.error(error.message, { + position: "top-right", + autoClose: 5000, + hideProgressBar: true, + closeOnClick: true, + progress: undefined, + theme: "colored" + }); + console.error('Error fetching issuers:', error.message); setLoading(false); - setErrorMessage(error); + setErrorMessage(error.message); }); }, []); diff --git a/inji-web/src/pages/Home/index.test.js b/inji-web/src/pages/Home/HomePage.test.js similarity index 93% rename from inji-web/src/pages/Home/index.test.js rename to inji-web/src/pages/Home/HomePage.test.js index 60b7b0f..b9dfa48 100644 --- a/inji-web/src/pages/Home/index.test.js +++ b/inji-web/src/pages/Home/HomePage.test.js @@ -1,9 +1,9 @@ import React from "react"; import {render, screen} from "@testing-library/react"; import { act } from "react-dom/test-utils"; -import {SampleIssuersData} from "./testData"; +import {SampleIssuersData} from "../../components/Home/testData"; import * as axios from "axios"; -import Home from "./index"; +import Home from "./HomePage"; // Mock out all top level functions, such as get, put, delete and post: jest.mock("axios"); diff --git a/inji-web/src/pages/IssuerPage/index.js b/inji-web/src/pages/IssuerPage/IssuersPage.js similarity index 91% rename from inji-web/src/pages/IssuerPage/index.js rename to inji-web/src/pages/IssuerPage/IssuersPage.js index 39e043b..947b67d 100644 --- a/inji-web/src/pages/IssuerPage/index.js +++ b/inji-web/src/pages/IssuerPage/IssuersPage.js @@ -1,11 +1,11 @@ import React, { useEffect, useState } from 'react'; -import PageTemplate from "../PageTemplate"; -import Header from "./Header"; -import CertificateList from "./CertificateList"; +import PageTemplate from "../PageTemplate/PageTemplate"; +import Header from "../../components/Issuers/Header"; +import CertificateList from "../../components/Issuers/CertificateList"; import _axios from 'axios'; import {getCredentialsSupportedUrl, getSearchIssuersUrl} from "../../utils/config"; import {useParams, useLocation, useNavigate} from 'react-router-dom'; -import LoadingScreen from '../../utils/LoadingScreen'; +import LoadingScreen from '../../components/Common/LoadingScreen'; function Issuer() { const { issuerId, displayName } = useParams(); @@ -58,7 +58,7 @@ function Issuer() {
- {loading + {loading ? : {children}