mirror of
https://github.com/EnixCoda/Gitako.git
synced 2026-03-11 08:54:44 +00:00
feat(settings): toggle copy buttons
This commit is contained in:
parent
9384e2d45f
commit
50c4eaae70
6 changed files with 82 additions and 14 deletions
|
|
@ -8,6 +8,8 @@ import { version } from '../../package'
|
|||
const wikiLinks = {
|
||||
compressSingletonFolder: 'https://github.com/EnixCoda/Gitako/wiki/Compress-Singleton-Folder',
|
||||
changeLog: 'https://github.com/EnixCoda/Gitako/wiki/Change-Log',
|
||||
copyFileButton: 'https://github.com/EnixCoda/Gitako/wiki/Copy-file-and-snippet',
|
||||
copySnippet: 'https://github.com/EnixCoda/Gitako/wiki/Copy-file-and-snippet',
|
||||
}
|
||||
|
||||
const ACCESS_TOKEN_REGEXP = /^[0-9a-f]{40}$/
|
||||
|
|
@ -65,12 +67,12 @@ export default class SettingsBar extends React.PureComponent {
|
|||
}
|
||||
|
||||
componentWillMount() {
|
||||
const { toggleShowSideBarShortcut, compressSingletonFolder } = this.props
|
||||
this.setState({ toggleShowSideBarShortcut, compressSingletonFolder })
|
||||
const { toggleShowSideBarShortcut, compressSingletonFolder, copyFileButton, copySnippetButton } = this.props
|
||||
this.setState({ toggleShowSideBarShortcut, compressSingletonFolder, copyFileButton, copySnippetButton })
|
||||
}
|
||||
|
||||
componentWillReceiveProps({ toggleShowSideBarShortcut, compressSingletonFolder }) {
|
||||
this.setState({ toggleShowSideBarShortcut, compressSingletonFolder })
|
||||
componentWillReceiveProps({ toggleShowSideBarShortcut, compressSingletonFolder, copyFileButton, copySnippetButton }) {
|
||||
this.setState({ toggleShowSideBarShortcut, compressSingletonFolder, copyFileButton, copySnippetButton })
|
||||
}
|
||||
|
||||
onInputAccessToken = event => {
|
||||
|
|
@ -145,11 +147,27 @@ export default class SettingsBar extends React.PureComponent {
|
|||
})
|
||||
}
|
||||
|
||||
setCopyFile = async e => {
|
||||
const enabled = e.target.checked
|
||||
await configHelper.setOne(config.copyFileButton, enabled)
|
||||
const { setCopyFile } = this.props
|
||||
setCopyFile(enabled)
|
||||
}
|
||||
|
||||
setCopySnippet = async e => {
|
||||
const enabled = e.target.checked
|
||||
await configHelper.setOne(config.copySnippetButton, enabled)
|
||||
const { setCopySnippet } = this.props
|
||||
setCopySnippet(enabled)
|
||||
}
|
||||
|
||||
render() {
|
||||
const {
|
||||
accessTokenHint,
|
||||
toggleShowSideBarShortcut,
|
||||
compressSingletonFolder,
|
||||
copyFileButton,
|
||||
copySnippetButton,
|
||||
shortcutHint,
|
||||
accessToken,
|
||||
compressHint,
|
||||
|
|
@ -228,6 +246,42 @@ export default class SettingsBar extends React.PureComponent {
|
|||
</label>
|
||||
{compressHint && <div className={'hint'}>{compressHint}</div>}
|
||||
</div>
|
||||
<div className={'gitako-settings-bar-content-section copy-file'}>
|
||||
<h4>
|
||||
Copy File
|
||||
<a href={wikiLinks.copyFileButton} target={'_blank'}>
|
||||
(?)
|
||||
</a>
|
||||
</h4>
|
||||
<label htmlFor={'copy-file'}>
|
||||
<input
|
||||
id={'copy-file'}
|
||||
name={'copy-file'}
|
||||
type={'checkbox'}
|
||||
onChange={this.setCopyFile}
|
||||
checked={copyFileButton}
|
||||
/>
|
||||
{copyFileButton ? 'enabled' : 'disabled'}
|
||||
</label>
|
||||
</div>
|
||||
<div className={'gitako-settings-bar-content-section copy-snippet'}>
|
||||
<h4>
|
||||
Copy Snippet
|
||||
<a href={wikiLinks.copySnippet} target={'_blank'}>
|
||||
(?)
|
||||
</a>
|
||||
</h4>
|
||||
<label htmlFor={'copy-snippet'}>
|
||||
<input
|
||||
id={'copy-snippet'}
|
||||
name={'copy-snippet'}
|
||||
type={'checkbox'}
|
||||
onChange={this.setCopySnippet}
|
||||
checked={copySnippetButton}
|
||||
/>
|
||||
{copySnippetButton ? 'enabled' : 'disabled'}
|
||||
</label>
|
||||
</div>
|
||||
<div className={'gitako-settings-bar-content-section issue'}>
|
||||
<h4>Issue</h4>
|
||||
<span>
|
||||
|
|
|
|||
|
|
@ -131,6 +131,8 @@ export default class Gitako extends React.PureComponent {
|
|||
showSettings,
|
||||
accessToken,
|
||||
compressSingletonFolder,
|
||||
copyFileButton,
|
||||
copySnippetButton,
|
||||
toggleShowSideBarShortcut,
|
||||
logoContainerElement,
|
||||
toggleShowSideBar,
|
||||
|
|
@ -138,6 +140,8 @@ export default class Gitako extends React.PureComponent {
|
|||
onShortcutChange,
|
||||
onAccessTokenChange,
|
||||
setCompressSingleton,
|
||||
setCopyFile,
|
||||
setCopySnippet,
|
||||
} = this.props
|
||||
return (
|
||||
<div className={'gitako-side-bar'}>
|
||||
|
|
@ -158,8 +162,12 @@ export default class Gitako extends React.PureComponent {
|
|||
activated={showSettings}
|
||||
accessToken={accessToken}
|
||||
compressSingletonFolder={compressSingletonFolder}
|
||||
copyFileButton={copyFileButton}
|
||||
copySnippetButton={copySnippetButton}
|
||||
toggleShowSideBarShortcut={toggleShowSideBarShortcut}
|
||||
setCompressSingleton={setCompressSingleton}
|
||||
setCopyFile={setCopyFile}
|
||||
setCopySnippet={setCopySnippet}
|
||||
/>
|
||||
</div>
|
||||
</Resizable>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
import DOMHelper from 'utils/DOMHelper'
|
||||
|
||||
const init = dispatch => () => {
|
||||
DOMHelper.decorateGitHubPageContent()
|
||||
}
|
||||
|
||||
export default {
|
||||
|
|
|
|||
|
|
@ -11,8 +11,9 @@ const init = dispatch => async () => {
|
|||
let nothingWentWrong = true
|
||||
const metaData = URLHelper.parse()
|
||||
dispatch(setMetaData, metaData)
|
||||
const { access_token: accessToken, shortcut, compressSingletonFolder } = await configHelper.get()
|
||||
dispatch({ accessToken, toggleShowSideBarShortcut: shortcut, compressSingletonFolder })
|
||||
const { access_token: accessToken, shortcut, compressSingletonFolder, copyFileButton, copySnippetButton } = await configHelper.get()
|
||||
DOMHelper.decorateGitHubPageContent({ copyFileButton, copySnippetButton })
|
||||
dispatch({ accessToken, toggleShowSideBarShortcut: shortcut, compressSingletonFolder, copyFileButton, copySnippetButton })
|
||||
const detectedBranchName = DOMHelper.getCurrentBranch() || 'master'
|
||||
let aggressivelyGotTreeData = GitHubHelper.getTreeData({
|
||||
...metaData,
|
||||
|
|
@ -69,9 +70,9 @@ const handleError = dispatch => async (err) => {
|
|||
}
|
||||
|
||||
const onPJAXEnd = dispatch => () => {
|
||||
dispatch(({ metaData }) => {
|
||||
dispatch(({ metaData, copyFileButton, copySnippetButton }) => {
|
||||
DOMHelper.unmountTopProgressBar()
|
||||
DOMHelper.decorateGitHubPageContent()
|
||||
DOMHelper.decorateGitHubPageContent({ copyFileButton, copySnippetButton })
|
||||
DOMHelper.focusSearchInput()
|
||||
const mergedMetaData = { ...metaData, ...URLHelper.parse() }
|
||||
dispatch(setShouldShow, URLHelper.isInCodePage(mergedMetaData))
|
||||
|
|
@ -113,6 +114,10 @@ const setMetaData = dispatch => metaData => dispatch({ metaData })
|
|||
|
||||
const setCompressSingleton = dispatch => compressSingletonFolder => dispatch({ compressSingletonFolder })
|
||||
|
||||
const setCopyFile = dispatch => copyFileButton => dispatch({ copyFileButton })
|
||||
|
||||
const setCopySnippet = dispatch => copySnippetButton => dispatch({ copySnippetButton })
|
||||
|
||||
export default {
|
||||
init,
|
||||
onPJAXEnd,
|
||||
|
|
@ -125,6 +130,8 @@ export default {
|
|||
onShortcutChange,
|
||||
setMetaData,
|
||||
setCompressSingleton,
|
||||
setCopyFile,
|
||||
setCopySnippet,
|
||||
setError,
|
||||
handleError,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -327,9 +327,9 @@ function clickOnNodeElement(index = 0) {
|
|||
/**
|
||||
* a combination of few above functions
|
||||
*/
|
||||
function decorateGitHubPageContent() {
|
||||
attachCopyFileBtn()
|
||||
attachCopySnippet()
|
||||
function decorateGitHubPageContent({ copyFileButton, copySnippetButton }) {
|
||||
if (copyFileButton) attachCopyFileBtn()
|
||||
if (copySnippetButton) attachCopySnippet()
|
||||
}
|
||||
|
||||
function mountTopProgressBar() {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ export const config = {
|
|||
shortcut: 'shortcut',
|
||||
accessToken: 'access_token',
|
||||
compressSingletonFolder: 'compressSingletonFolder',
|
||||
copyFileButton: 'copyFileButton',
|
||||
copySnippetButton: 'copySnippetButton',
|
||||
}
|
||||
|
||||
const configKeys = Object.values(config)
|
||||
|
|
|
|||
Loading…
Reference in a new issue