From 09c1e34e74b3bd5a06f937adef826d145446e5c4 Mon Sep 17 00:00:00 2001 From: Cameron Welter Date: Wed, 19 May 2021 10:24:57 +0000 Subject: [PATCH 1/4] fix(rescue-hooks): ensure rescue quotes has length AND is accessible --- src/hooks/rescueHooks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/rescueHooks.js b/src/hooks/rescueHooks.js index 1cbd069e..75b61583 100644 --- a/src/hooks/rescueHooks.js +++ b/src/hooks/rescueHooks.js @@ -7,7 +7,7 @@ import { formatAsEliteDateTime } from '~/helpers/formatTime' export const useQuoteString = (rescue) => { return useMemo(() => { - if (!rescue.attributes.quotes.length) { + if (!rescue?.attributes?.quotes?.length) { return undefined } From a5aa23ddc8e5b1a0cf1e8afbb2fe3263ac95208f Mon Sep 17 00:00:00 2001 From: Cameron Welter Date: Wed, 19 May 2021 10:25:28 +0000 Subject: [PATCH 2/4] refactor(rescue-hooks): improve robustness of queue data polling --- src/hooks/rescueHooks.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/hooks/rescueHooks.js b/src/hooks/rescueHooks.js index 75b61583..0a20890e 100644 --- a/src/hooks/rescueHooks.js +++ b/src/hooks/rescueHooks.js @@ -1,3 +1,4 @@ +import { HttpStatus } from '@fuelrats/web-util/http' import axios from 'axios' import { useMemo, useState, useEffect } from 'react' @@ -5,6 +6,9 @@ import { getLanguage } from '~/data/LanguageList' import { getPlatform } from '~/data/PlatformList' import { formatAsEliteDateTime } from '~/helpers/formatTime' + +const pollTimeoutTime = 10000 + export const useQuoteString = (rescue) => { return useMemo(() => { if (!rescue?.attributes?.quotes?.length) { @@ -38,11 +42,14 @@ export const useRescueQueueCount = () => { let timeout = null const fetchData = async () => { - const { data } = await axios.get('/api/qms/queue') + const { data, status } = await axios.get('/api/qms/queue') + + if (status === HttpStatus.OK) { + setCount(data.data.queueLength) + } - setCount(data.data.queueLength) - timeout = setTimeout(fetchData, data.meta.maxAge) + timeout = setTimeout(fetchData, pollTimeoutTime) } fetchData() From df8c7446d98cf378d69da0fa898dd3586c589dae Mon Sep 17 00:00:00 2001 From: Cameron Welter Date: Wed, 19 May 2021 10:31:11 +0000 Subject: [PATCH 3/4] refactor(queue-api): add some improved error handling to QMS errors --- src/pages/api/qms/queue.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pages/api/qms/queue.js b/src/pages/api/qms/queue.js index 1fbdfb6b..3d971367 100644 --- a/src/pages/api/qms/queue.js +++ b/src/pages/api/qms/queue.js @@ -19,7 +19,7 @@ async function Queue (req, res) { if (nowTime - cache.lastCheck >= cacheMaxAge) { cache.lastCheck = nowTime - const result = await axios.get( + const { data, status, statusText } = await axios.get( `${process.env.QMS_API_URL}/api/v1/queue`, { headers: { @@ -28,11 +28,16 @@ async function Queue (req, res) { }, ) - const rescueQueue = result.data.filter((rescue) => { - return !rescue.pending && !rescue.in_progress - }) + if (status === HttpStatus.OK) { + const rescueQueue = data.filter((rescue) => { + return !rescue.pending && !rescue.in_progress + }) - cache.count = rescueQueue.length + cache.count = rescueQueue.length + } else { + res.status(status).end(statusText) + console.error(status, statusText, data) + } } From a850c11a4e6ac1188213cf86306f38e71d4b4bda Mon Sep 17 00:00:00 2001 From: Cameron Welter Date: Wed, 19 May 2021 10:35:43 +0000 Subject: [PATCH 4/4] docs(CHANGELOG.md): add changes added in #324 --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index faed5c88..d15ddccd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,7 +43,7 @@ For detailed rules of this file, see [Changelog Rules](#changelog-rules) ### 🐛 Fixed -* +* Resolved crash which would occur if rescue quotes is null. - [#324][] ### ⚙ Tasks @@ -54,6 +54,7 @@ For detailed rules of this file, see [Changelog Rules](#changelog-rules) [#317]: https://github.com/fuelRats/fuelrats.com/pull/317 [#320]: https://github.com/fuelRats/fuelrats.com/pull/320 [#323]: https://github.com/fuelRats/fuelrats.com/pull/323 +[#324]: https://github.com/fuelRats/fuelrats.com/pull/324 [2.13.0]: https://github.com/FuelRats/fuelrats.com/compare/v2.12.10...v2.13.0