From 1014eaff1c02d61e377ffbd0bba63090dce704be Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Wed, 6 Jun 2018 00:16:03 +0800 Subject: [PATCH] refactor(PJAX): change the usage of PJAX --- src/components/FileExplorer.js | 1 - src/components/SideBar.js | 40 +++++++++++++++++----------------- src/utils/DOMHelper.js | 7 ++++-- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/components/FileExplorer.js b/src/components/FileExplorer.js index 69f753b..dc1b32f 100644 --- a/src/components/FileExplorer.js +++ b/src/components/FileExplorer.js @@ -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 => { diff --git a/src/components/SideBar.js b/src/components/SideBar.js index b1aa15d..6b0321f 100644 --- a/src/components/SideBar.js +++ b/src/components/SideBar.js @@ -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 }) diff --git a/src/utils/DOMHelper.js b/src/utils/DOMHelper.js index 878172b..e768b30 100644 --- a/src/utils/DOMHelper.js +++ b/src/utils/DOMHelper.js @@ -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,