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