From 2c4af434851682a9cd9f464e63737c01263f3e59 Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Wed, 13 Nov 2019 15:05:14 +0800 Subject: [PATCH] refactor: extract onPJAXEnd --- src/components/SideBar.tsx | 19 +++++++++++++++---- src/driver/core/SideBar.ts | 22 ++-------------------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/src/components/SideBar.tsx b/src/components/SideBar.tsx index c2d40ca..f02d6c5 100644 --- a/src/components/SideBar.tsx +++ b/src/components/SideBar.tsx @@ -16,6 +16,7 @@ import * as DOMHelper from 'utils/DOMHelper' import { JSONRequest, parseURLSearch } from 'utils/general' import { useDidUpdate } from 'utils/hooks' import * as keyHelper from 'utils/keyHelper' +import * as URLHelper from 'utils/URLHelper' const RawGitako: React.FC = function RawGitako(props) { const configContext = useConfigs() @@ -50,16 +51,26 @@ const RawGitako: React.FC = function RawGitako(props) { return () => window.removeEventListener('keydown', onKeyDown) }, [props.disabled, onKeyDown]) + const onPJAXEnd = React.useCallback(() => { + DOMHelper.unmountTopProgressBar() + const mergedMetaData = { ...props.metaData, ...URLHelper.parse() } + props.setMetaData(mergedMetaData) + + if (configContext.val.intelligentToggle === null) { + props.setShouldShow(URLHelper.isInCodePage(mergedMetaData)) + } + }, [props.metaData, configContext.val.intelligentToggle]) + React.useEffect(() => { if (props.disabled) return - window.addEventListener('pjax:complete', props.onPJAXEnd) - return () => window.removeEventListener('pjax:complete', props.onPJAXEnd) - }, [props.disabled]) + window.addEventListener('pjax:complete', onPJAXEnd) + return () => window.removeEventListener('pjax:complete', onPJAXEnd) + }, [props.disabled, onPJAXEnd]) React.useEffect(() => { const { copyFileButton, copySnippetButton } = configContext.val DOMHelper.decorateGitHubPageContent({ copyFileButton, copySnippetButton }) - }, []) + }, [props.metaData]) // init again when setting new accessToken useDidUpdate(() => props.init(), [accessToken]) diff --git a/src/driver/core/SideBar.ts b/src/driver/core/SideBar.ts index 3fd03d8..f8f282d 100644 --- a/src/driver/core/SideBar.ts +++ b/src/driver/core/SideBar.ts @@ -27,7 +27,8 @@ export type ConnectorState = { initializingPromise: Promise | null } & { init: GetCreatedMethod - onPJAXEnd: GetCreatedMethod + setMetaData: GetCreatedMethod + setShouldShow: GetCreatedMethod toggleShowSideBar: GetCreatedMethod toggleShowSettings: GetCreatedMethod } & { @@ -146,25 +147,6 @@ export const handleError: BoundMethodCreator<[Error]> = dispatch => async err => } } -export const onPJAXEnd: BoundMethodCreator = dispatch => () => { - const [ - { metaData }, - { - configContext: { - val: { intelligentToggle, copyFileButton, copySnippetButton }, - }, - }, - ] = dispatch.get() - DOMHelper.unmountTopProgressBar() - DOMHelper.decorateGitHubPageContent({ copyFileButton, copySnippetButton }) - const mergedMetaData = { ...metaData, ...URLHelper.parse() } - dispatch.call(setMetaData, mergedMetaData) - - if (intelligentToggle === null) { - dispatch.call(setShouldShow, URLHelper.isInCodePage(mergedMetaData)) - } -} - export const toggleShowSideBar: BoundMethodCreator = dispatch => () => { const [{ shouldShow }, { configContext }] = dispatch.get() dispatch.call(setShouldShow, !shouldShow)