Finally fix Index from Thread navigation
This commit is contained in:
parent
3327c9cf36
commit
22c244ce69
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -66,13 +66,7 @@ Index =
|
||||
order: 98
|
||||
subEntries: [repliesEntry, anchorEntry, refNavEntry, modeEntry, sortEntry]
|
||||
|
||||
return if g.VIEW isnt 'index'
|
||||
|
||||
@connect.call @
|
||||
|
||||
connect: ->
|
||||
$.addClass doc, 'index-loading'
|
||||
@update()
|
||||
@root = $.el 'div', className: 'board'
|
||||
@pagelist = $.el 'div',
|
||||
className: 'pagelist'
|
||||
@ -83,31 +77,34 @@ Index =
|
||||
innerHTML: <%= importHTML('Features/Index-navlinks') %>
|
||||
@searchInput = $ '#index-search', @navLinks
|
||||
@currentPage = @getCurrentPage()
|
||||
$.on window, 'popstate', @cb.popstate
|
||||
|
||||
$.on @pagelist, 'click', @cb.pageNav
|
||||
$.on @searchInput, 'input', @onSearchInput
|
||||
$.on $('#index-search-clear', @navLinks), 'click', @clearSearch
|
||||
$.asap (-> $('.board', doc) or d.readyState isnt 'loading'), ->
|
||||
board = $ '.board'
|
||||
$.replace board, Index.root
|
||||
# Hacks:
|
||||
# - When removing an element from the document during page load,
|
||||
# its ancestors will still be correctly created inside of it.
|
||||
# - Creating loadable elements inside of an origin-less document
|
||||
# will not download them.
|
||||
# - Combine the two and you get a download canceller!
|
||||
# Does not work on Firefox unfortunately. bugzil.la/939713
|
||||
d.implementation.createDocument(null, null, null).appendChild board
|
||||
|
||||
for navLink in $$ '.navLinks'
|
||||
$.rm navLink
|
||||
@update() if g.VIEW is 'index'
|
||||
$.asap (-> $('.board', doc) or d.readyState isnt 'loading'), ->
|
||||
if g.VIEW is 'index'
|
||||
board = $ '.board'
|
||||
$.replace board, Index.root
|
||||
# Hacks:
|
||||
# - When removing an element from the document during page load,
|
||||
# its ancestors will still be correctly created inside of it.
|
||||
# - Creating loadable elements inside of an origin-less document
|
||||
# will not download them.
|
||||
# - Combine the two and you get a download canceller!
|
||||
# Does not work on Firefox unfortunately. bugzil.la/939713
|
||||
d.implementation.createDocument(null, null, null).appendChild board
|
||||
|
||||
$.rm navLink for navLink in $$ '.navLinks'
|
||||
$.after $.x('child::form/preceding-sibling::hr[1]'), Index.navLinks
|
||||
$.rmClass doc, 'index-loading'
|
||||
$.asap (-> $('.pagelist') or d.readyState isnt 'loading'), ->
|
||||
if pagelist = $('.pagelist')
|
||||
$.replace pagelist, Index.pagelist
|
||||
else
|
||||
$.after $.id('delform'), Index.pagelist
|
||||
|
||||
$.asap (-> $('.pagelist', doc) or d.readyState isnt 'loading'), ->
|
||||
if pagelist = $('.pagelist')
|
||||
$.replace pagelist, Index.pagelist
|
||||
else
|
||||
$.after $.id('delform'), Index.pagelist
|
||||
|
||||
cb:
|
||||
mode: ->
|
||||
@ -120,9 +117,6 @@ Index =
|
||||
Index.buildThreads()
|
||||
Index.sort()
|
||||
Index.buildIndex()
|
||||
popstate: (e) ->
|
||||
pageNum = Index.getCurrentPage()
|
||||
Index.pageLoad pageNum if Index.currentPage isnt pageNum
|
||||
pageNav: (e) ->
|
||||
return if e.shiftKey or e.altKey or e.ctrlKey or e.metaKey or e.button isnt 0
|
||||
switch e.target.nodeName
|
||||
@ -209,6 +203,9 @@ Index =
|
||||
|
||||
update: (pageNum) ->
|
||||
return unless navigator.onLine
|
||||
unless Index.root.parentElement
|
||||
board = $ '.board'
|
||||
$.replace board, Index.root
|
||||
Index.req?.abort()
|
||||
Index.notice?.close()
|
||||
|
||||
|
||||
@ -327,8 +327,10 @@ Main =
|
||||
{posts, threads} = g
|
||||
|
||||
# Garbage collection
|
||||
delete posts[id] for id of posts when posts.hasOwnProperty id
|
||||
delete threads[id] for id of threads when threads.hasOwnProperty id
|
||||
g.posts = {}
|
||||
g.threads = {}
|
||||
g.BOARD.posts = {}
|
||||
g.BOARD.threads = {}
|
||||
|
||||
# Delete nodes
|
||||
$.rmAll $ '.board'
|
||||
@ -351,10 +353,8 @@ Main =
|
||||
error: err
|
||||
|
||||
Main.handleErrors errors if errors
|
||||
|
||||
# Clean Post and Thread callbacks
|
||||
# Post.callbacks.clear()
|
||||
# Thread.callbacks.clear()
|
||||
|
||||
return
|
||||
|
||||
navigate: (e) ->
|
||||
return if @hostname isnt 'boards.4chan.org'
|
||||
@ -380,13 +380,9 @@ Main =
|
||||
|
||||
if view is 'index'
|
||||
Main.updateBoard boardID unless boardID is g.BOARD.ID
|
||||
Index.update()
|
||||
|
||||
if Index.root
|
||||
Index.connect()
|
||||
else
|
||||
Index.update()
|
||||
|
||||
# Moving from thread to thread or index to index.
|
||||
# Moving from index to thread or thread to thread
|
||||
else
|
||||
c.error 'How?'
|
||||
Main.refresh {boardID, view, threadID}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user