diff --git a/src/driver/connect.ts b/src/driver/connect.ts index 71416cc..f710bcc 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, Props] +export type GetState = () => { state: State; props: Props } export type TriggerOtherMethod = ( methodCreator: MethodCreator, ...args: Parameters>> @@ -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, instance.props] + const prepareState: GetState = () => ({ state: instance.state, props: instance.props }) const dispatch: Dispatch = { call: dispatchCall, get: prepareState, diff --git a/src/driver/core/FileExplorer.ts b/src/driver/core/FileExplorer.ts index e9d6d51..ad9e6ec 100644 --- a/src/driver/core/FileExplorer.ts +++ b/src/driver/core/FileExplorer.ts @@ -80,7 +80,10 @@ export const setUpTree: BoundMethodCreator<[ } export const handleKeyDown: BoundMethodCreator<[React.KeyboardEvent]> = dispatch => event => { - const [{ searched, visibleNodes }, { loadWithPJAX }] = dispatch.get() + const { + state: { searched, visibleNodes }, + props: { loadWithPJAX }, + } = dispatch.get() if (!visibleNodes) return const { nodes, focusedNode, expandedNodes } = visibleNodes function handleVerticalMove(index: number) { @@ -227,18 +230,19 @@ export const onNodeClick: BoundMethodCreator<[ if (preventDefault) event.preventDefault() if (node.type === 'tree') { - const [ - , - { + const { + props: { config: { recursiveToggleFolder }, }, - ] = dispatch.get() + } = dispatch.get() const recursive = (recursiveToggleFolder === 'shift' && event.shiftKey) || (recursiveToggleFolder === 'alt' && event.altKey) dispatch.call(toggleNodeExpansion, node, { recursive }) } else if (node.type === 'blob') { - const [, { loadWithPJAX }] = dispatch.get() + const { + props: { loadWithPJAX }, + } = dispatch.get() dispatch.call(focusNode, node) if (node.url && !node.url.includes('#')) { loadWithPJAX(node.url) diff --git a/src/driver/core/SideBar.ts b/src/driver/core/SideBar.ts index b3e18ae..ddc92f2 100644 --- a/src/driver/core/SideBar.ts +++ b/src/driver/core/SideBar.ts @@ -35,7 +35,9 @@ export type ConnectorState = { type BoundMethodCreator = MethodCreator export const init: BoundMethodCreator = dispatch => async () => { - const [{ initializingPromise }] = dispatch.get() + const { + state: { initializingPromise }, + } = dispatch.get() if (initializingPromise) await initializingPromise let done: any = null // cannot use type `(() => void) | null` here @@ -59,7 +61,9 @@ export const init: BoundMethodCreator = dispatch => async () => { }) dispatch.call(setMetaData, metaData) - const [, { configContext }] = dispatch.get() + const { + props: { configContext }, + } = dispatch.get() const { access_token: accessToken } = configContext.val if (!metaData.userName || !metaData.repoName) return @@ -146,7 +150,7 @@ export const handleError: BoundMethodCreator<[Error]> = dispatch => async err => ) { dispatch.set({ errorDueToAuth: true }) } else if (err.message === errors.CONNECTION_BLOCKED) { - const [, props] = dispatch.get() + const { props } = dispatch.get() if (props.configContext.val.access_token) { dispatch.call(setError, `Cannot connect to ${platformName}.`) } else { @@ -162,7 +166,10 @@ export const handleError: BoundMethodCreator<[Error]> = dispatch => async err => } export const toggleShowSideBar: BoundMethodCreator = dispatch => () => { - const [{ shouldShow }, { configContext }] = dispatch.get() + const { + state: { shouldShow }, + props: { configContext }, + } = dispatch.get() dispatch.call(setShouldShow, !shouldShow) const {