fix image error handling
This commit is contained in:
parent
9fe9b373a2
commit
a0e1268e60
@ -1,4 +1,17 @@
|
||||
ImageCommon =
|
||||
pushCache: (el) ->
|
||||
ImageCommon.cache = el
|
||||
$.on el, 'error', ImageCommon.cacheError
|
||||
|
||||
popCache: ->
|
||||
el = ImageCommon.cache
|
||||
$.off el, 'error', ImageCommon.cacheError
|
||||
delete ImageCommon.cache
|
||||
el
|
||||
|
||||
cacheError: ->
|
||||
delete ImageCommon.cache if ImageCommon.cache is @
|
||||
|
||||
decodeError: (file, post) ->
|
||||
return false unless file.error?.code is MediaError.MEDIA_ERR_DECODE
|
||||
unless message = $ '.warning', post.file.thumb.parentNode
|
||||
|
||||
@ -142,7 +142,7 @@ ImageExpand =
|
||||
$.off el, eventName, cb
|
||||
$.rm el
|
||||
$.rmClass el, 'full-image'
|
||||
ImageCommon.cache = el
|
||||
ImageCommon.pushCache el
|
||||
|
||||
expand: (post, src) ->
|
||||
# Do not expand images of hidden/filtered replies, or already expanded pictures.
|
||||
@ -156,8 +156,7 @@ ImageExpand =
|
||||
if file.fullImage
|
||||
el = file.fullImage
|
||||
else if ImageCommon.cache?.dataset.fullID is post.fullID
|
||||
el = file.fullImage = ImageCommon.cache
|
||||
delete ImageCommon.cache
|
||||
el = file.fullImage = ImageCommon.popCache()
|
||||
unless file.isHovered
|
||||
$.queueTask(-> el.src = el.src) if /\.gif$/.test el.src
|
||||
el.currentTime = 0 if isVideo and el.readyState >= el.HAVE_METADATA
|
||||
|
||||
@ -7,23 +7,23 @@ ImageHover =
|
||||
cb: @node
|
||||
node: ->
|
||||
return unless @file?.isImage or @file?.isVideo
|
||||
$.on @file.thumb, 'mouseover', ImageHover.mouseover
|
||||
mouseover: (e) ->
|
||||
$.on @file.thumb, 'mouseover', ImageHover.mouseover @
|
||||
mouseover: (post) -> (e) ->
|
||||
return unless doc.contains @
|
||||
post = Get.postFromNode @
|
||||
{file} = post
|
||||
{isVideo} = file
|
||||
return if file.isExpanding or file.isExpanded
|
||||
file.isHovered = true
|
||||
error = ImageHover.error post
|
||||
if ImageCommon.cache?.dataset.fullID is post.fullID
|
||||
el = ImageCommon.cache
|
||||
delete ImageCommon.cache
|
||||
el = ImageCommon.popCache()
|
||||
$.on el, 'error', error
|
||||
$.queueTask(-> el.src = el.src) if /\.gif$/.test el.src
|
||||
el.currentTime = 0 if isVideo and el.readyState >= el.HAVE_METADATA
|
||||
else
|
||||
el = $.el (if isVideo then 'video' else 'img')
|
||||
el.dataset.fullID = post.fullID
|
||||
$.on el, 'error', ImageHover.error
|
||||
$.on el, 'error', error
|
||||
el.src = file.URL
|
||||
el.id = 'ihover'
|
||||
$.after Header.hover, el
|
||||
@ -51,19 +51,15 @@ ImageHover =
|
||||
if isVideo
|
||||
el.pause()
|
||||
$.rm el
|
||||
$.off el, 'error', error
|
||||
el.removeAttribute 'id'
|
||||
el.removeAttribute 'style'
|
||||
ImageCommon.cache = el
|
||||
ImageCommon.pushCache el
|
||||
$.queueTask -> delete file.isHovered
|
||||
error: ->
|
||||
post = Get.postFromNode @
|
||||
return if post.file.isExpanding or post.file.isExpanded
|
||||
if @id is 'ihover' # still hovering
|
||||
return if ImageCommon.decodeError @, post
|
||||
ImageCommon.error @, post, 3 * $.SECOND, (URL) =>
|
||||
if URL
|
||||
@src = URL + if @src is URL then '?' + Date.now() else ''
|
||||
else
|
||||
$.rm @
|
||||
else
|
||||
$.rm @
|
||||
error: (post) -> ->
|
||||
return if ImageCommon.decodeError @, post
|
||||
ImageCommon.error @, post, 3 * $.SECOND, (URL) =>
|
||||
if URL
|
||||
@src = URL + if @src is URL then '?' + Date.now() else ''
|
||||
else
|
||||
$.rm @
|
||||
|
||||
@ -51,7 +51,7 @@ ImageLoader =
|
||||
video.dataset.md5 = thumb.dataset.md5
|
||||
video.style[attr] = thumb.style[attr] for attr in ['height', 'width', 'maxHeight', 'maxWidth']
|
||||
video.src = file.URL
|
||||
$.on video, 'mouseover', ImageHover.mouseover if Conf['Image Hover']
|
||||
$.on video, 'mouseover', ImageHover.mouseover post if Conf['Image Hover']
|
||||
$.replace thumb, video
|
||||
file.thumb = video
|
||||
file.videoThumb = true
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user