24 lines
734 B
JavaScript
24 lines
734 B
JavaScript
function imageItem(url, index) {
|
|
return {url, src: url, index, attempt: 0, failed: false, settled: false}
|
|
}
|
|
|
|
export function startImages(urls) {
|
|
return urls.length ? [imageItem(urls[0], 0)] : []
|
|
}
|
|
|
|
export function settleImage(items, urls, item, failed = false) {
|
|
// Ignore events from images removed by a page change or dialog close.
|
|
if (!items.includes(item)) return
|
|
item.failed = failed
|
|
if (item.settled) return
|
|
item.settled = true
|
|
if (items.length < urls.length)
|
|
items.push(imageItem(urls[items.length], items.length))
|
|
}
|
|
|
|
export function retryImage(item) {
|
|
item.failed = false
|
|
item.attempt++
|
|
item.src = item.url + (item.url.includes('?') ? '&' : '?') + 'retry=' + item.attempt
|
|
}
|