refactor(PJAX): change the usage of PJAX

This commit is contained in:
EnixCoda 2018-06-06 00:16:03 +08:00
parent 0411102af3
commit 1014eaff1c
3 changed files with 25 additions and 23 deletions

View file

@ -59,7 +59,6 @@ export default class List extends preact.Component {
updateVisibleNodes() {
const { visibleNodes } = this.visibleNodesGenerator
this.setState({ visibleNodes })
this.tasksAfterRender.push(() => DOMHelper.attachPJAX('gitako'))
}
handleKeyDown = event => {

View file

@ -47,10 +47,17 @@ export default class SideBar extends preact.Component {
const branchName = metaDataFromUrl.branchName || metaDataFromAPI['default_branch']
const metaData = { ...metaDataFromUrl, branchName, api: metaDataFromAPI }
this.setState({ metaData })
this.setShouldShow(URLHelper.isInCodePage(metaData))
const shouldShow = URLHelper.isInCodePage(metaData)
this.setShouldShow(shouldShow)
if (shouldShow) {
NProgress.start()
}
const treeData = await GitHubHelper.getTreeData({ ...metaData, accessToken })
this.setState({ treeData })
this.logoContainerElement = DOMHelper.insertLogo()
if (shouldShow) {
NProgress.done()
}
window.addEventListener('pjax:send', this.onPJAXStart)
window.addEventListener('pjax:complete', this.onPJAXEnd)
@ -73,27 +80,20 @@ export default class SideBar extends preact.Component {
}
onPJAXStart = () => {
NProgress.start()
}
onPJAXEnd = (() => {
let lastLocation
return () => {
if (location.href !== lastLocation) {
lastLocation = location.href
const { metaData } = this.state
const mergedMetaData = { ...metaData, ...URLHelper.parse() }
this.setState({
metaData: mergedMetaData,
})
NProgress.done()
this.setShouldShow(URLHelper.isInCodePage(mergedMetaData))
DOMHelper.decorateGitHubPageContent()
DOMHelper.scrollToRepoContent()
DOMHelper.focusSearchInput()
}
}
})()
onPJAXEnd = () => {
NProgress.done()
const { metaData } = this.state
const mergedMetaData = { ...metaData, ...URLHelper.parse() }
this.setState({
metaData: mergedMetaData,
})
this.setShouldShow(URLHelper.isInCodePage(mergedMetaData))
DOMHelper.decorateGitHubPageContent()
DOMHelper.scrollToRepoContent()
DOMHelper.focusSearchInput()
}
setShouldShow = shouldShow => {
this.setState({ shouldShow })

View file

@ -3,6 +3,9 @@
*/
import PJAX from 'pjax'
import NProgress from 'nprogress'
NProgress.configure({ showSpinner: false })
/**
* if should show gitako, then move body right to make space for showing gitako
@ -63,8 +66,8 @@ function scrollToNodeElement(index) {
const pjax = new PJAX({
elements: '.pjax-link',
selectors: ['.repository-content'],
scrollTo: false,
selectors: ['.repository-content'],
scrollTo: false,
analytics: false,
cacheBust: false,
forceCache: true,