fixes
This commit is contained in:
+17
-3
@@ -1013,17 +1013,31 @@ function AppContent() {
|
|||||||
if (songOfDay.status === 'ready' || songOfDay.status === 'loading') return
|
if (songOfDay.status === 'ready' || songOfDay.status === 'loading') return
|
||||||
|
|
||||||
const controller = new AbortController()
|
const controller = new AbortController()
|
||||||
|
let timedOut = false
|
||||||
|
const timeout = window.setTimeout(() => {
|
||||||
|
timedOut = true
|
||||||
|
controller.abort()
|
||||||
|
}, 12000)
|
||||||
|
|
||||||
setSongOfDay({ status: 'loading', data: null, error: null })
|
setSongOfDay({ status: 'loading', data: null, error: null })
|
||||||
|
|
||||||
fetchJson(apiEndpoints.songOfDay, controller.signal)
|
fetchJson(apiEndpoints.songOfDay, controller.signal)
|
||||||
.then((data) => setSongOfDay({ status: 'ready', data, error: null }))
|
.then((data) => setSongOfDay({ status: 'ready', data, error: null }))
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
if (!controller.signal.aborted) {
|
if (!controller.signal.aborted || timedOut) {
|
||||||
setSongOfDay({ status: 'error', data: null, error: error.message })
|
setSongOfDay({
|
||||||
|
status: 'error',
|
||||||
|
data: null,
|
||||||
|
error: timedOut ? 'Song lookup timed out' : error.message,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
.finally(() => window.clearTimeout(timeout))
|
||||||
|
|
||||||
return () => controller.abort()
|
return () => {
|
||||||
|
window.clearTimeout(timeout)
|
||||||
|
controller.abort()
|
||||||
|
}
|
||||||
}, [route.page, songOfDay.status])
|
}, [route.page, songOfDay.status])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user