From 2a9ab02fda3a857ed2824ea4747736f160c3b390 Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Sun, 31 Jan 2021 23:57:43 +0800 Subject: [PATCH] chore: simplify logics about access token --- src/components/SideBar.tsx | 24 ++++++++++-------------- src/utils/general.ts | 4 ++++ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/SideBar.tsx b/src/components/SideBar.tsx index 89cb0c8..f039bca 100644 --- a/src/components/SideBar.tsx +++ b/src/components/SideBar.tsx @@ -16,9 +16,8 @@ import { useGitHubAttachCopySnippetButton, } from 'platforms/GitHub' import * as React from 'react' -import { useUpdateEffect } from 'react-use' import { cx } from 'utils/cx' -import { parseURLSearch } from 'utils/general' +import { parseURLSearch, run } from 'utils/general' import { loadWithPJAX, useOnPJAXDone, usePJAX } from 'utils/hooks/usePJAX' import { useProgressBar } from 'utils/hooks/useProgressBar' import * as keyHelper from 'utils/keyHelper' @@ -27,7 +26,7 @@ import { Theme } from './Theme' const RawGitako: React.FC = function RawGitako(props) { const configContext = useConfigs() - const accessToken = props.configContext.val.accessToken + const accessToken = props.configContext.val.accessToken || '' const [baseSize] = React.useState(() => configContext.val.sideBarWidth) useShrinkGitHubHeader(configContext.val.shrinkGitHubHeader) @@ -39,16 +38,18 @@ const RawGitako: React.FC = function RawGitako(props) { }, [intelligentToggle, props.metaData]) React.useEffect(() => { - const { init } = props - ;(async function () { + run(async function () { if (!accessToken) { - const accessToken = (await trySetUpAccessTokenWithCode()) || undefined - configContext.set({ accessToken }) + const accessToken = await trySetUpAccessTokenWithCode() + if (accessToken) configContext.set({ accessToken }) } - init() - })() + }) }, []) + React.useEffect(() => { + props.init() + }, [accessToken]) + React.useEffect( function attachKeyDown() { if (props.disabled || !configContext.val.shortcut) return @@ -81,11 +82,6 @@ const RawGitako: React.FC = function RawGitako(props) { const copySnippetButton = configContext.val.copySnippetButton useGitHubAttachCopySnippetButton(copySnippetButton) - // init again when setting new accessToken - useUpdateEffect(() => { - props.init() - }, [accessToken || '']) // '' prevents duplicated requests - usePJAX() useProgressBar() diff --git a/src/utils/general.ts b/src/utils/general.ts index d07b343..8b6d1a6 100644 --- a/src/utils/general.ts +++ b/src/utils/general.ts @@ -183,3 +183,7 @@ export function withEffect any>( return returnValue } } + +export function run(fn: () => T) { + return fn() +}