From 8141dfa3b4edc3cb001b8080f2f73fe0b067c139 Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Sun, 10 Nov 2019 17:37:51 +0800 Subject: [PATCH] feat: expose props when get --- src/driver/connect.ts | 6 +++--- src/driver/core/FileExplorer.ts | 5 ++--- src/driver/core/SideBar.ts | 13 ++++++------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/driver/connect.ts b/src/driver/connect.ts index b061f31..6f6165b 100644 --- a/src/driver/connect.ts +++ b/src/driver/connect.ts @@ -31,7 +31,7 @@ function run([method, args]: [M, Parameters]) { } export type DispatchState = React.Component['setState'] -export type GetState = () => State +export type GetState = () => [State, Props] export type TriggerOtherMethod = ( methodCreator: MethodCreator, ...args: Parameters>> @@ -39,7 +39,7 @@ export type TriggerOtherMethod = ( export type Dispatch = { set: DispatchState - get: GetState + get: GetState call: TriggerOtherMethod } @@ -75,7 +75,7 @@ function link(instance: React.Component, sources: Sources): Wr const dispatchState: DispatchState = (updater, callback) => { instance.setState(updater, callback) } - const prepareState: GetState = () => instance.state + const prepareState: GetState = () => [instance.state, instance.props] const dispatch: Dispatch = { call: dispatchCall, get: prepareState, diff --git a/src/driver/core/FileExplorer.ts b/src/driver/core/FileExplorer.ts index 307a494..4d5a4d4 100644 --- a/src/driver/core/FileExplorer.ts +++ b/src/driver/core/FileExplorer.ts @@ -182,7 +182,7 @@ export const setStateText: BoundMethodCreator<[ConnectorState['stateText']]> = d }) export const handleKeyDown: BoundMethodCreator<[React.KeyboardEvent]> = dispatch => event => { - const { searched, visibleNodes } = dispatch.get() + const [{ searched, visibleNodes }] = dispatch.get() if (!visibleNodes) return const { nodes, focusedNode, expandedNodes, depths } = visibleNodes function handleVerticalMove(index: number) { @@ -327,9 +327,8 @@ export const toggleNodeExpansion: BoundMethodCreator<[TreeNode, boolean]> = disp export const focusNode: BoundMethodCreator<[TreeNode | null, boolean]> = dispatch => ( node: TreeNode | null, - skipScroll = false, ) => { - const { visibleNodes } = dispatch.get() + const [{ visibleNodes }] = dispatch.get() if (!visibleNodes) return visibleNodesGenerator.focusNode(node) dispatch.call(updateVisibleNodes) diff --git a/src/driver/core/SideBar.ts b/src/driver/core/SideBar.ts index 410e86a..f3c797a 100644 --- a/src/driver/core/SideBar.ts +++ b/src/driver/core/SideBar.ts @@ -50,7 +50,7 @@ export type ConnectorState = { type BoundMethodCreator = MethodCreator export const init: BoundMethodCreator = dispatch => async () => { - const { initializingPromise } = dispatch.get() + const [{ initializingPromise }] = dispatch.get() if (initializingPromise) await initializingPromise let done: any = null // cannot use type `(() => void) | null` here @@ -175,7 +175,7 @@ export const handleError: BoundMethodCreator<[Error]> = dispatch => async err => } export const onPJAXEnd: BoundMethodCreator = dispatch => () => { - const { metaData, copyFileButton, copySnippetButton, intelligentToggle } = dispatch.get() + const [{ metaData, copyFileButton, copySnippetButton, intelligentToggle }] = dispatch.get() DOMHelper.unmountTopProgressBar() DOMHelper.decorateGitHubPageContent({ copyFileButton, copySnippetButton }) const mergedMetaData = { ...metaData, ...URLHelper.parse() } @@ -187,7 +187,7 @@ export const onPJAXEnd: BoundMethodCreator = dispatch => () => { } export const onKeyDown: BoundMethodCreator<[KeyboardEvent]> = dispatch => e => { - const { toggleShowSideBarShortcut } = dispatch.get() + const [{ toggleShowSideBarShortcut }] = dispatch.get() if (toggleShowSideBarShortcut) { const keys = keyHelper.parseEvent(e) if (keys === toggleShowSideBarShortcut) { @@ -197,9 +197,8 @@ export const onKeyDown: BoundMethodCreator<[KeyboardEvent]> = dispatch => e => { } export const toggleShowSideBar: BoundMethodCreator = dispatch => () => { - const { intelligentToggle } = dispatch.get() - const shouldShow = !dispatch.get().shouldShow - dispatch.call(setShouldShow, shouldShow) + const [{ intelligentToggle, shouldShow }] = dispatch.get() + dispatch.call(setShouldShow, !shouldShow) if (intelligentToggle !== null) { dispatch.call(setIntelligentToggle, shouldShow) @@ -267,7 +266,7 @@ export const useListeners: BoundMethodCreator<[boolean]> = dispatch => { const $onPJAXEnd = () => dispatch.call(onPJAXEnd) const $onKeyDown = (e: KeyboardEvent) => dispatch.call(onKeyDown, e) return on => { - const { disabled } = dispatch.get() + const [{ disabled }] = dispatch.get() if (on && !disabled) { window.addEventListener('pjax:complete', $onPJAXEnd) window.addEventListener('keydown', $onKeyDown)