From 1de478a83d92bb6d1a534941d90c20022248303b Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Fri, 22 Jun 2018 21:42:26 +0800 Subject: [PATCH] refactor: keep access token in state --- src/components/SettingsBar.js | 20 ++++++++++---------- src/components/SideBar.js | 20 ++++++++++---------- src/driver/core.js | 28 +++++++++++++--------------- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/src/components/SettingsBar.js b/src/components/SettingsBar.js index c4b08bc..efa7431 100644 --- a/src/components/SettingsBar.js +++ b/src/components/SettingsBar.js @@ -56,28 +56,29 @@ export default class SettingsBar extends React.PureComponent { onInputAccessToken = event => { const value = event.target.value - this.setState({ accessToken: value }) this.setState({ + accessToken: value, accessTokenHint: ACCESS_TOKEN_REGEXP.test(value) ? '' : 'This token is in unknown format.', }) } saveToken = async () => { - const { onHasAccessTokenChange } = this.props + const { onAccessTokenChange } = this.props const { accessToken } = this.state if (accessToken) { await storageHelper.setAccessToken(accessToken) - onHasAccessTokenChange(true) + onAccessTokenChange(accessToken) this.setState({ + accessToken: '', accessTokenHint: 'Your token is saved, will work after reloading the page!', }) } } clearToken = async () => { - const { onHasAccessTokenChange } = this.props + const { onAccessTokenChange } = this.props await storageHelper.setAccessToken('') - onHasAccessTokenChange(false) + onAccessTokenChange('') this.setState({ accessToken: '' }) } @@ -101,9 +102,8 @@ export default class SettingsBar extends React.PureComponent { } render() { - const { accessTokenHint, accessToken, toggleShowSideBarShortcut, shortcutHint } = this.state - const { hasAccessToken } = this.props - const { toggleShowSettings, activated } = this.props + const { accessTokenHint, toggleShowSideBarShortcut, shortcutHint, accessToken } = this.state + const { toggleShowSettings, activated, accessToken: hasAccessToken } = this.props return (
{activated && ( @@ -138,12 +138,12 @@ export default class SettingsBar extends React.PureComponent { value={accessToken} onInput={this.onInputAccessToken} /> - {hasAccessToken ? ( + {hasAccessToken && !accessToken ? ( ) : ( - )} diff --git a/src/components/SideBar.js b/src/components/SideBar.js index 0ca37d0..fdf6dca 100644 --- a/src/components/SideBar.js +++ b/src/components/SideBar.js @@ -24,8 +24,8 @@ export default class Gitako extends React.PureComponent { showSettings: PropTypes.bool, // whether failed loading the repo due to it is private errorDueToAuth: PropTypes.bool, - // got access token for GitHub - hasAccessToken: PropTypes.bool, + // access token for GitHub + accessToken: PropTypes.string, // the shortcut string for toggle sidebar toggleShowSideBarShortcut: PropTypes.string, // meta data for the repository @@ -38,7 +38,7 @@ export default class Gitako extends React.PureComponent { setShouldShow: PropTypes.func.isRequired, toggleShowSideBar: PropTypes.func.isRequired, toggleShowSettings: PropTypes.func.isRequired, - onHasAccessTokenChange: PropTypes.func.isRequired, + onAccessTokenChange: PropTypes.func.isRequired, onKeyDown: PropTypes.func.isRequired, onShortcutChange: PropTypes.func.isRequired, onResize: PropTypes.func.isRequired, @@ -51,7 +51,7 @@ export default class Gitako extends React.PureComponent { shouldShow: false, showSettings: false, errorDueToAuth: false, - hasAccessToken: false, + accessToken: '', toggleShowSideBarShortcut: '', metaData: null, treeData: null, @@ -88,14 +88,14 @@ export default class Gitako extends React.PureComponent { } renderContent() { - const { errorDueToAuth, metaData, treeData, showSettings } = this.props + const { errorDueToAuth, metaData, treeData, showSettings, accessToken } = this.props return (
{metaData && } {errorDueToAuth && this.renderAccessDeniedError()} {metaData && treeData && ( - + )}
) @@ -106,14 +106,14 @@ export default class Gitako extends React.PureComponent { size, shouldShow, showSettings, - hasAccessToken, + accessToken, toggleShowSideBarShortcut, logoContainerElement, toggleShowSideBar, onResize, toggleShowSettings, onShortcutChange, - onHasAccessTokenChange, + onAccessTokenChange, } = this.props return (
@@ -127,9 +127,9 @@ export default class Gitako extends React.PureComponent {
diff --git a/src/driver/core.js b/src/driver/core.js index ab964ec..eae8012 100644 --- a/src/driver/core.js +++ b/src/driver/core.js @@ -15,7 +15,7 @@ const init = dispatch => async () => { storageHelper.getAccessToken(), storageHelper.getShortcut(), ]) - dispatch({ hasAccessToken: Boolean(accessToken), toggleShowSideBarShortcut: shortcut }) + dispatch({ accessToken, toggleShowSideBarShortcut: shortcut }) const metaDataFromAPI = await GitHubHelper.getRepoMeta({ ...metaData, accessToken }) const branchName = metaData.branchName || metaDataFromAPI['default_branch'] Object.assign(metaData, { branchName, api: metaDataFromAPI }) @@ -81,23 +81,21 @@ const onResize = dispatch => size => dispatch({ size }) const toggleShowSettings = dispatch => () => dispatch(({ showSettings }) => ({ showSettings: !showSettings })) -const onHasAccessTokenChange = dispatch => hasAccessToken => dispatch({ hasAccessToken }) +const onAccessTokenChange = dispatch => accessToken => dispatch({ accessToken }) const onShortcutChange = dispatch => shortcut => dispatch({ toggleShowSideBarShortcut: shortcut }) const setMetaData = dispatch => metaData => dispatch({ metaData }) -export default function(instance) { - return link(instance.setState.bind(instance), { - init, - onPJAXEnd, - onKeyDown, - setShouldShow, - toggleShowSideBar, - toggleShowSettings, - onHasAccessTokenChange, - onShortcutChange, - onResize, - setMetaData, - }) +export default { + init, + onPJAXEnd, + onKeyDown, + setShouldShow, + toggleShowSideBar, + toggleShowSettings, + onAccessTokenChange, + onShortcutChange, + onResize, + setMetaData, }