mirror of
https://github.com/streamwall/streamwall.git
synced 2026-01-30 00:42:48 -05:00
Use cached stream data if API fails
This commit is contained in:
@@ -20,6 +20,7 @@ function compareStrings(a, b) {
|
|||||||
export async function* pollPublicData() {
|
export async function* pollPublicData() {
|
||||||
const publicDataURL = 'https://woke.net/api/streams.json'
|
const publicDataURL = 'https://woke.net/api/streams.json'
|
||||||
const refreshInterval = 5 * 1000
|
const refreshInterval = 5 * 1000
|
||||||
|
let lastData = []
|
||||||
while (true) {
|
while (true) {
|
||||||
let data = []
|
let data = []
|
||||||
try {
|
try {
|
||||||
@@ -28,7 +29,15 @@ export async function* pollPublicData() {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.warn('error loading stream data', err)
|
console.warn('error loading stream data', err)
|
||||||
}
|
}
|
||||||
yield filterLive(data)
|
|
||||||
|
// If the endpoint errors or returns an empty dataset, keep the cached data.
|
||||||
|
if (!data.length && lastData.length) {
|
||||||
|
console.warn('using cached stream data')
|
||||||
|
} else {
|
||||||
|
yield filterLive(data)
|
||||||
|
lastData = data
|
||||||
|
}
|
||||||
|
|
||||||
await sleep(refreshInterval)
|
await sleep(refreshInterval)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user