diff --git a/package-lock.json b/package-lock.json index c2f5be0..475765d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1289,6 +1289,30 @@ } } }, + "@datadog/browser-logs": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-logs/-/browser-logs-2.15.0.tgz", + "integrity": "sha512-kZb0nKx1XoZibs3nkBwcP2iff23kX11yUcQj0aXHLL4yulO5I0AqEhoZXwVFfG8KP82sflX+uyssdNIUwMr1cg==", + "requires": { + "@datadog/browser-core": "2.15.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "@datadog/browser-core": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-2.15.0.tgz", + "integrity": "sha512-qWTAysGYQXVpM5FOdstaqIF6B99nyQ2N/rJsi1ruPgFmU9yMM9tRdvqiJ7NZcy+OOsZWiinvFRFUMv9SOsHeUA==", + "requires": { + "tslib": "^1.10.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "@datadog/browser-rum": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-2.8.1.tgz", @@ -5060,9 +5084,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -5155,11 +5179,18 @@ } }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", "requires": { - "domelementtype": "1" + "domelementtype": "^2.2.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + } } }, "domutils": { @@ -7323,22 +7354,40 @@ } }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" }, "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } } } }, @@ -10622,9 +10671,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -12472,15 +12521,15 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "renderkid": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "requires": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { @@ -12488,6 +12537,56 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "requires": { + "boolbase": "^1.0.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -12640,9 +12739,9 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "resolve-url-loader": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.3.tgz", - "integrity": "sha512-WbDSNFiKPPLem1ln+EVTE+bFUBdTTytfQZWbmghroaFNFaAVmGq0Saqw6F/306CwgPXsGwXVxbODE+3xAo/YbA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz", + "integrity": "sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg==", "requires": { "adjust-sourcemap-loader": "3.0.0", "camelcase": "5.3.1", @@ -12650,68 +12749,22 @@ "convert-source-map": "1.7.0", "es6-iterator": "2.0.3", "loader-utils": "1.2.3", - "postcss": "7.0.21", + "postcss": "7.0.36", "rework": "1.0.1", "rework-visit": "1.0.0", "source-map": "0.6.1" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -12729,24 +12782,6 @@ "emojis-list": "^2.0.0", "json5": "^1.0.1" } - }, - "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -16347,9 +16382,9 @@ } }, "ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==" + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.0.tgz", + "integrity": "sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw==" }, "xml-name-validator": { "version": "3.0.0", diff --git a/package.json b/package.json index 04a551d..b5ebb0e 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.1.1", "private": true, "dependencies": { + "@datadog/browser-logs": "^2.15.0", "@datadog/browser-rum": "^2.8.1", "@material-ui/core": "^4.11.4", "@material-ui/icons": "^4.11.2", diff --git a/src/components/CarUpdates/Deploy/index.jsx b/src/components/CarUpdates/Deploy/index.jsx index f9a7100..2ee06fd 100644 --- a/src/components/CarUpdates/Deploy/index.jsx +++ b/src/components/CarUpdates/Deploy/index.jsx @@ -12,6 +12,7 @@ import useStyles from "../../useStyles"; import { tsLocalDateTimeString } from "../../../utils/dates"; import SearchField from "../../Controls/SearchField"; import CarSelectionTable from "../../Cars/CarSelectionTable"; +import { logger } from "../../../services/monitoring"; const MainForm = () => { const { packageid } = useParams(); @@ -41,14 +42,18 @@ const MainForm = () => { }; const handleSelect = (event, key) => { - let newSelected; - if (event.target.checked) { - newSelected = [...selected]; - newSelected.push(key); - } else { - newSelected = selected.filter((vin) => vin !== key); + try { + let newSelected; + if (event.target.checked) { + newSelected = [...selected]; + newSelected.push(key); + } else { + newSelected = selected.filter((vin) => vin !== key); + } + setSelected(newSelected); + } catch (e) { + logger.warn(e.stack); } - setSelected(newSelected); }; const onSubmit = async (event) => { @@ -65,13 +70,16 @@ const MainForm = () => { setRedirect(`/carupdate-status/${packageid}`); } catch (e) { setMessage(e.message); + logger.warn(e.stack); } }; + const getData = async () => { try { getPackages({ id: parseInt(packageid) }, token); } catch (e) { setMessage(e.message); + logger.warn(e.stack); } }; @@ -82,7 +90,7 @@ const MainForm = () => { useEffect(() => { setTitle(`Deploy ${packageName} ${version}`); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, [packageName, version]); useEffect(() => { diff --git a/src/components/CarUpdates/Status/index.jsx b/src/components/CarUpdates/Status/index.jsx index 5ca0779..b38e816 100644 --- a/src/components/CarUpdates/Status/index.jsx +++ b/src/components/CarUpdates/Status/index.jsx @@ -20,6 +20,7 @@ import { useUserContext } from "../../Contexts/UserContext"; import { useStatusContext } from "../../Contexts/StatusContext"; import useStyles from "../../useStyles"; import { LocalDateTimeString } from "../../../utils/dates"; +import { logger } from "../../../services/monitoring"; const MainForm = () => { const { packageid } = useParams(); @@ -43,36 +44,41 @@ const MainForm = () => { } = useUserContext(); useEffect(() => { - try { - getPackages({ id: packageid }, token); - } catch (e) { - setMessage(e.message); - } - // eslint-disable-next-line + (async () => { + try { + await getPackages({ id: packageid }, token); + } catch (e) { + setMessage(e.message); + logger.warn(e.stack); + } + })(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [token]); useEffect(() => { if (!packages || packages.length === 0) return; setTitle(`Package ${packages[0].package_name} ${packages[0].version}`); - - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, [packages]); useEffect(() => { - try { - stopMonitor(); - getCarUpdates( - { - packageid, - limit: pageSize, - offset: pageSize * pageIndex, - }, - token - ); - } catch (e) { - setMessage(e.message); - } - // eslint-disable-next-line + (async () => { + try { + stopMonitor(); + await getCarUpdates( + { + packageid, + limit: pageSize, + offset: pageSize * pageIndex, + }, + token + ); + } catch (e) { + setMessage(e.message); + logger.warn(e.stack); + } + })(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [pageIndex, pageSize, token]); useEffect(() => { @@ -81,11 +87,12 @@ const MainForm = () => { startMonitor(token); } catch (e) { setMessage(e.message); + logger.warn(e.stack); } return () => { stopMonitor(); }; - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, [carUpdates]); const handleChangePageIndex = (event, newIndex) => { diff --git a/src/components/Cars/Add/index.jsx b/src/components/Cars/Add/index.jsx index 0b7c8b6..ddf8dbd 100644 --- a/src/components/Cars/Add/index.jsx +++ b/src/components/Cars/Add/index.jsx @@ -8,6 +8,7 @@ import { import { useStatusContext } from "../../Contexts/StatusContext"; import { useUserContext } from "../../Contexts/UserContext"; import { Button, TextField } from "@material-ui/core"; +import { logger } from "../../../services/monitoring"; const MainForm = () => { const { addVehicle, busy } = useVehicleContext(); @@ -25,7 +26,7 @@ const MainForm = () => { useEffect(() => { setTitle("Add Vehicle"); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const onSubmit = async (event) => { try { @@ -44,6 +45,7 @@ const MainForm = () => { vinEl.current.value = ""; } catch (e) { setMessage(e.message); + logger.warn(e.stack); } }; diff --git a/src/components/Cars/CarSelection/index.jsx b/src/components/Cars/CarSelection/index.jsx index 4fffdc7..baaa909 100644 --- a/src/components/Cars/CarSelection/index.jsx +++ b/src/components/Cars/CarSelection/index.jsx @@ -40,7 +40,7 @@ const Control = (props) => { await getYears(token); } catch (e) {} })(); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, [token]); useEffect(() => { @@ -56,14 +56,14 @@ const Control = (props) => { useEffect(() => { if (model === null || year === -1) return; getVehicles({ model, year, trim }, token); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, [model, year, trim]); useEffect(() => { if (!props.onSelection) return; const vins = vehicles.map((item) => item.vin); props.onSelection(vins); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, [vehicles]); return ( diff --git a/src/components/Cars/CarSelectionTable/index.jsx b/src/components/Cars/CarSelectionTable/index.jsx index 392d840..2550b8e 100644 --- a/src/components/Cars/CarSelectionTable/index.jsx +++ b/src/components/Cars/CarSelectionTable/index.jsx @@ -16,6 +16,7 @@ import { useVehicleContext } from "../../Contexts/VehicleContext"; import { useStatusContext } from "../../Contexts/StatusContext"; import { LocalDateTimeString } from "../../../utils/dates"; import TableHeaderSortable from "../../Table/HeaderSortable"; +import { logger } from "../../../services/monitoring"; const tableColumns = [ { @@ -100,12 +101,15 @@ const CarSelectionTable = (props) => { offset: pageSize * pageIndex, order: `${orderBy} ${order}`, }; - try { - getVehicles(Object.assign(options, search), token); - } catch (e) { - setMessage(e.message); - } - // eslint-disable-next-line + (async () => { + try { + await getVehicles(Object.assign(options, search), token); + } catch (e) { + setMessage(e.message); + logger.warn(e.stack); + } + })(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [pageIndex, pageSize, orderBy, order, search, token]); return ( diff --git a/src/components/Cars/List/index.jsx b/src/components/Cars/List/index.jsx index c2f00ae..0eaec4e 100644 --- a/src/components/Cars/List/index.jsx +++ b/src/components/Cars/List/index.jsx @@ -20,6 +20,7 @@ import useStyles from "../../useStyles"; import { LocalDateTimeString } from "../../../utils/dates"; import TableHeaderSortable from "../../Table/HeaderSortable"; import SearchField from "../../Controls/SearchField"; +import { logger } from "../../../services/monitoring"; const tableColumns = [ { @@ -78,24 +79,27 @@ const MainForm = () => { useEffect(() => { setTitle("Vehicles"); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { - try { - getVehicles( - { - limit: pageSize, - offset: pageSize * pageIndex, - order: `${orderBy} ${order}`, - search, - }, - token - ); - } catch (e) { - setMessage(e.message); - } - // eslint-disable-next-line + (async () => { + try { + await getVehicles( + { + limit: pageSize, + offset: pageSize * pageIndex, + order: `${orderBy} ${order}`, + search, + }, + token + ); + } catch (e) { + setMessage(e.message); + logger.warn(e.stack); + } + })(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [pageIndex, pageSize, token, orderBy, order, search]); const handleChangePageIndex = (event, newIndex) => { diff --git a/src/components/Cars/SendCommand/index.jsx b/src/components/Cars/SendCommand/index.jsx index eee3b42..a3d67f1 100644 --- a/src/components/Cars/SendCommand/index.jsx +++ b/src/components/Cars/SendCommand/index.jsx @@ -8,6 +8,7 @@ import commands from "../../../services/commands"; import useStyles from "../../useStyles"; import { useUserContext } from "../../Contexts/UserContext"; import { useStatusContext } from "../../Contexts/StatusContext"; +import { logger } from "../../../services/monitoring"; const SendCommand = ({ vins }) => { const classes = useStyles(); @@ -50,6 +51,7 @@ const SendCommand = ({ vins }) => { } } catch (e) { setMessage(e.message); + logger.error(e.stack); } }; @@ -69,7 +71,7 @@ const SendCommand = ({ vins }) => { useEffect(() => { if (!commands || commands.length === 0) return; selectCommand(commands[0].value); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return ( diff --git a/src/components/Cars/SendCommandBulk/index.jsx b/src/components/Cars/SendCommandBulk/index.jsx index 181b545..6206b9f 100644 --- a/src/components/Cars/SendCommandBulk/index.jsx +++ b/src/components/Cars/SendCommandBulk/index.jsx @@ -8,6 +8,7 @@ import useStyles from "../../useStyles"; import SendCommand from "../SendCommand"; import SearchField from "../../Controls/SearchField"; import CarSelectionTable from "../CarSelectionTable"; +import { logger } from "../../../services/monitoring"; const MainForm = () => { const classes = useStyles(); @@ -30,19 +31,23 @@ const MainForm = () => { }; const handleSelect = (event, key) => { - let newSelected; - if (event.target.checked) { - newSelected = [...selected]; - newSelected.push(key); - } else { - newSelected = selected.filter((vin) => vin !== key); + try { + let newSelected; + if (event.target.checked) { + newSelected = [...selected]; + newSelected.push(key); + } else { + newSelected = selected.filter((vin) => vin !== key); + } + setSelected(newSelected); + } catch (e) { + logger.warn(e.stack); } - setSelected(newSelected); }; useEffect(() => { setTitle("Send Command"); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return ( diff --git a/src/components/Cars/Status/index.jsx b/src/components/Cars/Status/index.jsx index 706d9b3..a4709c3 100644 --- a/src/components/Cars/Status/index.jsx +++ b/src/components/Cars/Status/index.jsx @@ -19,6 +19,7 @@ import { useStatusContext } from "../../Contexts/StatusContext"; import useStyles from "../../useStyles"; import { LocalDateTimeString } from "../../../utils/dates"; import TableHeaderSortable from "../../Table/HeaderSortable"; +import { logger } from "../../../services/monitoring"; const tableColumns = [ { @@ -60,23 +61,27 @@ const MainForm = () => { useEffect(() => { setTitle(`Vehicle ${vin} Details`); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, [vin]); + useEffect(() => { - try { - getCarUpdates( - { - vin, - limit: pageSize, - offset: pageSize * pageIndex, - order: `${orderBy} ${order}`, - }, - token - ); - } catch (e) { - setMessage(e.message); - } - // eslint-disable-next-line + (async () => { + try { + await getCarUpdates( + { + vin, + limit: pageSize, + offset: pageSize * pageIndex, + order: `${orderBy} ${order}`, + }, + token + ); + } catch (e) { + setMessage(e.message); + logger.warn(e.stack); + } + })(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [pageIndex, pageSize, token, orderBy, order]); const handleChangePageIndex = (event, newIndex) => { @@ -89,15 +94,19 @@ const MainForm = () => { }; const handleSort = (event, property) => { - if (property === orderBy) { - if (order === "asc") { - setOrder("desc"); + try { + if (property === orderBy) { + if (order === "asc") { + setOrder("desc"); + } else { + setOrder("asc"); + } } else { + setOrderBy(property); setOrder("asc"); } - } else { - setOrderBy(property); - setOrder("asc"); + } catch (e) { + logger.warn(e.stack); } }; diff --git a/src/components/Cars/StatusModal/index.jsx b/src/components/Cars/StatusModal/index.jsx index fc12d97..43b315f 100644 --- a/src/components/Cars/StatusModal/index.jsx +++ b/src/components/Cars/StatusModal/index.jsx @@ -41,7 +41,7 @@ export default function CarStatusModal(props) { setMessage(e.message); } })(); - // eslint-disable-next-line + // eslint-disable-next-line react-hooks/exhaustive-deps }, [props.vin]); return (