refactor: extract onPJAXEnd

This commit is contained in:
EnixCoda 2019-11-13 15:05:14 +08:00
parent be6d95355c
commit 2c4af43485
No known key found for this signature in database
GPG key ID: FE06F5DFC1C9B8E4
2 changed files with 17 additions and 24 deletions

View file

@ -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<Props & ConnectorState> = function RawGitako(props) {
const configContext = useConfigs()
@ -50,16 +51,26 @@ const RawGitako: React.FC<Props & ConnectorState> = 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])

View file

@ -27,7 +27,8 @@ export type ConnectorState = {
initializingPromise: Promise<void> | null
} & {
init: GetCreatedMethod<typeof init>
onPJAXEnd: GetCreatedMethod<typeof onPJAXEnd>
setMetaData: GetCreatedMethod<typeof setMetaData>
setShouldShow: GetCreatedMethod<typeof setShouldShow>
toggleShowSideBar: GetCreatedMethod<typeof toggleShowSideBar>
toggleShowSettings: GetCreatedMethod<typeof toggleShowSettings>
} & {
@ -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)