Skip to content
This repository has been archived by the owner on Jul 28, 2018. It is now read-only.

Commit

Permalink
Display a cached copy of a page if available before fetching its repl…
Browse files Browse the repository at this point in the history
…acement
  • Loading branch information
smidwap committed Jan 7, 2014
1 parent 53b7b6e commit 9304d24
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions lib/assets/javascripts/turbolinks.js.coffee
Expand Up @@ -10,11 +10,18 @@ createDocument = null
xhr = null


fetchReplacement = (url) ->
fetch = (url) ->
rememberReferer()
cacheCurrentPage()
reflectNewUrl url

if cachedPage = pageCache[url]
fetchHistory cachedPage
fetchReplacement url
else
fetchReplacement url, resetScrollPosition

fetchReplacement = (url, onLoadFunction = =>) ->
triggerEvent 'page:fetch', url: url

xhr?.abort()
Expand All @@ -29,7 +36,7 @@ fetchReplacement = (url) ->
if doc = processResponse()
changePage extractTitleAndBody(doc)...
reflectRedirectedUrl()
resetScrollPosition()
onLoadFunction()
triggerEvent 'page:load'
else
document.location.href = url
Expand All @@ -40,7 +47,6 @@ fetchReplacement = (url) ->
xhr.send()

fetchHistory = (cachedPage) ->
cacheCurrentPage()
xhr?.abort()
changePage cachedPage.title, cachedPage.body
recallScrollPosition cachedPage
Expand Down Expand Up @@ -282,6 +288,7 @@ installJqueryAjaxSuccessPageUpdateTrigger = ->
installHistoryChangeHandler = (event) ->
if event.state?.turbolinks
if cachedPage = pageCache[event.state.url]
cacheCurrentPage()
fetchHistory cachedPage
else
visit event.target.location.href
Expand Down Expand Up @@ -317,7 +324,7 @@ if browserSupportsCustomEvents
installJqueryAjaxSuccessPageUpdateTrigger()

if browserSupportsTurbolinks
visit = fetchReplacement
visit = fetch
initializeTurbolinks()
else
visit = (url) -> document.location.href = url
Expand Down

0 comments on commit 9304d24

Please sign in to comment.