mirror of
https://github.com/EnixCoda/Gitako.git
synced 2026-03-11 08:54:44 +00:00
feat(configHelper): create
This commit is contained in:
parent
ddd3820afc
commit
8cd73671c0
5 changed files with 61 additions and 36 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import React from 'react'
|
||||
import Icon from './Icon'
|
||||
import storageHelper from '../utils/storageHelper'
|
||||
import configHelper, { config } from '../utils/configHelper'
|
||||
import keyHelper from '../utils/keyHelper'
|
||||
|
||||
const ACCESS_TOKEN_REGEXP = /^[0-9a-f]{40}$/
|
||||
|
|
@ -66,7 +66,7 @@ export default class SettingsBar extends React.PureComponent {
|
|||
const { onAccessTokenChange } = this.props
|
||||
const { accessToken } = this.state
|
||||
if (accessToken) {
|
||||
await storageHelper.setAccessToken(accessToken)
|
||||
await configHelper.setOne(config.accessToken, accessToken)
|
||||
onAccessTokenChange(accessToken)
|
||||
this.setState({
|
||||
accessToken: '',
|
||||
|
|
@ -77,7 +77,7 @@ export default class SettingsBar extends React.PureComponent {
|
|||
|
||||
clearToken = async () => {
|
||||
const { onAccessTokenChange } = this.props
|
||||
await storageHelper.setAccessToken('')
|
||||
await configHelper.setOne(config.accessToken, '')
|
||||
onAccessTokenChange('')
|
||||
this.setState({ accessToken: '' })
|
||||
}
|
||||
|
|
@ -85,7 +85,7 @@ export default class SettingsBar extends React.PureComponent {
|
|||
saveShortcut = async () => {
|
||||
const { onShortcutChange } = this.props
|
||||
const { toggleShowSideBarShortcut } = this.state
|
||||
await storageHelper.setShortcut(toggleShowSideBarShortcut)
|
||||
await configHelper.setOne(config.shortcut, toggleShowSideBarShortcut)
|
||||
onShortcutChange(toggleShowSideBarShortcut)
|
||||
this.setState({
|
||||
shortcutHint: 'Shortcut is saved!',
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import DOMHelper, { REPO_TYPE_PRIVATE } from '../utils/DOMHelper'
|
||||
import GitHubHelper, { NOT_FOUND, BAD_CREDENTIALS } from '../utils/GitHubHelper'
|
||||
import storageHelper from '../utils/storageHelper'
|
||||
import configHelper from '../utils/configHelper'
|
||||
import URLHelper from '../utils/URLHelper'
|
||||
import keyHelper from '../utils/keyHelper'
|
||||
|
||||
|
|
@ -9,10 +9,7 @@ const init = dispatch => async () => {
|
|||
DOMHelper.decorateGitHubPageContent()
|
||||
const metaData = URLHelper.parse()
|
||||
dispatch(setMetaData, metaData)
|
||||
const [accessToken, shortcut] = await Promise.all([
|
||||
storageHelper.getAccessToken(),
|
||||
storageHelper.getShortcut(),
|
||||
])
|
||||
const { access_token: accessToken, shortcut } = await configHelper.get()
|
||||
dispatch({ accessToken, toggleShowSideBarShortcut: shortcut })
|
||||
const metaDataFromAPI = await GitHubHelper.getRepoMeta({ ...metaData, accessToken })
|
||||
const branchName = metaData.branchName || metaDataFromAPI['default_branch']
|
||||
|
|
|
|||
34
src/utils/configHelper.js
Normal file
34
src/utils/configHelper.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import storageHelper from './storageHelper'
|
||||
import { pick } from './general'
|
||||
|
||||
export const config = {
|
||||
shortcut: 'shortcut',
|
||||
accessToken: 'access_token',
|
||||
}
|
||||
|
||||
const configKeys = Object.values(config)
|
||||
|
||||
function get() {
|
||||
return storageHelper.get(configKeys)
|
||||
}
|
||||
|
||||
function getOne(key) {
|
||||
return get()[key]
|
||||
}
|
||||
|
||||
function set(partialConfig) {
|
||||
return storageHelper.set(pick(partialConfig, configKeys))
|
||||
}
|
||||
|
||||
function setOne(key, value) {
|
||||
return set({
|
||||
[key]: value,
|
||||
})
|
||||
}
|
||||
|
||||
export default {
|
||||
get,
|
||||
getOne,
|
||||
set,
|
||||
setOne,
|
||||
}
|
||||
|
|
@ -1 +1,17 @@
|
|||
export default {}
|
||||
|
||||
/**
|
||||
* @param {Object} source
|
||||
* @param {Object|Array} keys
|
||||
* @returns
|
||||
*/
|
||||
export function pick(source, keys) {
|
||||
if (keys && typeof keys === 'object') {
|
||||
return (
|
||||
Array.isArray(keys) ? keys : Object.keys(keys)
|
||||
).reduce((copy, key) => {
|
||||
copy[key] = source[key]
|
||||
return copy
|
||||
}, {})
|
||||
}
|
||||
return {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,36 +1,14 @@
|
|||
const localStorage = chrome.storage.local
|
||||
const ACCESS_TOKEN_KEY = 'access_token'
|
||||
const SHORTCUT_KEY = 'shortcut'
|
||||
|
||||
function get(key) {
|
||||
return new Promise(resolve => localStorage.get(key, items => resolve(items[key])))
|
||||
function get(mapping) {
|
||||
return new Promise(resolve => localStorage.get(mapping, resolve))
|
||||
}
|
||||
|
||||
function set(key, value) {
|
||||
return new Promise(resolve => localStorage.set({ [key]: value }, resolve))
|
||||
}
|
||||
|
||||
function getAccessToken() {
|
||||
return get(ACCESS_TOKEN_KEY)
|
||||
}
|
||||
|
||||
function setAccessToken(accessToken) {
|
||||
return set(ACCESS_TOKEN_KEY, accessToken)
|
||||
}
|
||||
|
||||
function getShortcut() {
|
||||
return get(SHORTCUT_KEY)
|
||||
}
|
||||
|
||||
function setShortcut(shortcut) {
|
||||
return set(SHORTCUT_KEY, shortcut)
|
||||
function set(value) {
|
||||
return new Promise(resolve => localStorage.set(value, resolve))
|
||||
}
|
||||
|
||||
export default {
|
||||
get,
|
||||
set,
|
||||
getAccessToken,
|
||||
setAccessToken,
|
||||
getShortcut,
|
||||
setShortcut,
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue