From 80a96278250fec104f938e49306073cd7249003c Mon Sep 17 00:00:00 2001 From: Karel Hala <khala@redhat.com> Date: Mon, 11 Sep 2023 13:31:38 +0200 Subject: [PATCH] Add energy resources --- package-lock.json | 14 +++++----- src/react-auth0-spa.js | 37 +++++++++++++++++++++---- src/utils/helpers.js | 62 ++++++++++++++++++++++++++++++++---------- src/views/HomePage.js | 6 ++-- 4 files changed, 89 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f13647..bef36b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4183,9 +4183,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/react": { - "version": "18.2.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", - "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "version": "17.0.65", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.65.tgz", + "integrity": "sha512-oxur785xZYHvnI7TRS61dXbkIhDPnGfsXKv0cNXR/0ml4SipRIFpSMzA7HMEfOywFwJ5AOnPrXYTEiTRUQeGlQ==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -16318,16 +16318,16 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=4.2.0" } }, "node_modules/unbox-primitive": { diff --git a/src/react-auth0-spa.js b/src/react-auth0-spa.js index 738db6d..1a68263 100644 --- a/src/react-auth0-spa.js +++ b/src/react-auth0-spa.js @@ -15,19 +15,36 @@ export const Auth0Provider = ({ children, onRedirectCallback = DEFAULT_REDIRECT_ const [auth0Client, setAuth0] = useState(); const [loading, setLoading] = useState(true); const [popupOpen, setPopupOpen] = useState(false); - const [{ apiSun, apiTemp, apiAir }, setAllApis] = useState({ - apiSun: {}, - apiTemp: {}, - apiAir: {}, - }); + const [{ apiSun, apiTemp, apiAir, apiGermany, apiAustria, apiCroatia, apiCzechia, apiSlovakia, apiPoland, apiFrance, apiSweden }, setAllApis] = + useState({ + apiSun: {}, + apiTemp: {}, + apiAir: {}, + apiGermany: {}, + apiAustria: {}, + apiCroatia: {}, + apiCzechia: {}, + apiSlovakia: {}, + apiPoland: {}, + apiFrance: {}, + apiSweden: {}, + }); useEffect(() => { if (user) { - const { sun, air, temp } = user; + const { sun, air, temp, germany, austria, croatia, czechia, slovakia, poland, france, sweden } = user; setAllApis({ apiSun: createInstance(sun), apiTemp: createInstance(temp), apiAir: createInstance(air), + apiGermany: createInstance(germany), + apiAustria: createInstance(austria), + apiCroatia: createInstance(croatia), + apiCzechia: createInstance(czechia), + apiSlovakia: createInstance(slovakia), + apiPoland: createInstance(poland), + apiFrance: createInstance(france), + apiSweden: createInstance(sweden), }); } }, [user]); @@ -116,6 +133,14 @@ export const Auth0Provider = ({ children, onRedirectCallback = DEFAULT_REDIRECT_ apiSun, apiAir, apiTemp, + apiGermany, + apiAustria, + apiCroatia, + apiCzechia, + apiSlovakia, + apiPoland, + apiFrance, + apiSweden, loading, popupOpen, loginWithPopup, diff --git a/src/utils/helpers.js b/src/utils/helpers.js index d4f23a8..7e8ba7c 100644 --- a/src/utils/helpers.js +++ b/src/utils/helpers.js @@ -1,4 +1,4 @@ -import { useMemo, useEffect, useState } from 'react'; +import { useMemo, useEffect, useState, useCallback } from 'react'; import { useLocation } from 'react-router-dom'; import { useAuth0 } from '../react-auth0-spa'; @@ -11,26 +11,60 @@ export const useType = () => { }; export const useRest = (type) => { - const { apiSun, apiTemp, apiAir } = useAuth0(); + const { apiSun, apiTemp, apiAir, apiGermany, apiAustria, apiCroatia, apiCzechia, apiSlovakia, apiPoland, apiFrance, apiSweden } = useAuth0(); const [{ resource, rest }, setRestApi] = useState({}); - - useEffect(() => { - if (!type) { - setRestApi({ + const typeMapper = useCallback((resourceType) => { + const apiTypes = { + sunshine: { resource: apiSun, rest: 'sunshine', - }); - } else if (type === 'air') { - setRestApi({ + }, + air: { resource: apiAir, rest: 'wind-speed', - }); - } else if (type === 'temp') { - setRestApi({ + }, + temp: { resource: apiTemp, rest: 'temp-avg', - }); - } + }, + germany: { + resource: apiGermany, + rest: 'germany', + }, + austria: { + resource: apiAustria, + rest: 'austria', + }, + france: { + resource: apiFrance, + rest: 'france', + }, + poland: { + resource: apiPoland, + rest: 'poland', + }, + sweden: { + resource: apiSweden, + rest: 'sweden', + }, + croatia: { + resource: apiCroatia, + rest: 'croatia', + }, + czechia: { + resource: apiCzechia, + rest: 'czechia', + }, + slovakia: { + resource: apiSlovakia, + rest: 'slovakia', + }, + }; + return apiTypes[resourceType] || apiTypes.sunshine; + }, []); + + useEffect(() => { + setRestApi(typeMapper(type)); }, [type]); return [{ resource, rest }, setRestApi]; diff --git a/src/views/HomePage.js b/src/views/HomePage.js index 9c6a6a6..89ea83d 100644 --- a/src/views/HomePage.js +++ b/src/views/HomePage.js @@ -22,10 +22,10 @@ const dataFetched = (data) => { }; }; -const fetchData = (api, max = 10, skip = 0) => { +const fetchData = (api, rest, max = 10, skip = 0) => { return (dispatch) => { if (api) { - api.get(`/rest/sunshine?${queryBuilder({ max, skip })}`).then((data) => { + api.get(`/rest/${rest}?${queryBuilder({ max, skip })}`).then((data) => { dispatch(dataFetched(data)); }); } @@ -336,7 +336,7 @@ const HomePage = () => { // resource.get(`/rest/sunshine?${queryBuilder({ max: 10, filter: 2000 })}`).then((data) => { // setMyData(data); // }); - dispatch(fetchData(resource, max, skip)); + dispatch(fetchData(resource, rest, max, skip)); } }, [resource, max, skip]); -- GitLab