diff --git a/browser/main/Detail/MarkdownNoteDetail.js b/browser/main/Detail/MarkdownNoteDetail.js index 04d7770d..8def1254 100644 --- a/browser/main/Detail/MarkdownNoteDetail.js +++ b/browser/main/Detail/MarkdownNoteDetail.js @@ -166,20 +166,6 @@ class MarkdownNoteDetail extends React.Component { } - handleShareButtonClick (e) { - let menu = new Menu() - menu.append(new MenuItem({ - label: 'Export as a File', - click: (e) => this.handlePreferencesButtonClick(e) - })) - menu.append(new MenuItem({ - label: 'Export to Web', - disabled: true, - click: (e) => this.handlePreferencesButtonClick(e) - })) - menu.popup(remote.getCurrentWindow()) - } - handleContextButtonClick (e) { let menu = new Menu() menu.append(new MenuItem({ @@ -251,15 +237,6 @@ class MarkdownNoteDetail extends React.Component { onClick={(e) => this.handleStarButtonClick(e)} isActive={note.isStarred} /> - this.handleShareButtonClick(e)} - disabled - > - - Share Note - this.handleContextButtonClick(e)} > diff --git a/browser/main/Detail/SnippetNoteDetail.js b/browser/main/Detail/SnippetNoteDetail.js index 9ad8e2e7..ddad6a90 100644 --- a/browser/main/Detail/SnippetNoteDetail.js +++ b/browser/main/Detail/SnippetNoteDetail.js @@ -188,21 +188,6 @@ class SnippetNoteDetail extends React.Component { } - handleShareButtonClick (e) { - let menu = new Menu() - menu.append(new MenuItem({ - label: 'Export as a File', - disabled: true, - click: (e) => this.handlePreferencesButtonClick(e) - })) - menu.append(new MenuItem({ - label: 'Export to Web', - disabled: true, - click: (e) => this.handlePreferencesButtonClick(e) - })) - menu.popup(remote.getCurrentWindow()) - } - handleContextButtonClick (e) { context.popup([{ label: 'Delete', @@ -560,15 +545,6 @@ class SnippetNoteDetail extends React.Component { onClick={(e) => this.handleStarButtonClick(e)} isActive={note.isStarred} /> - this.handleShareButtonClick(e)} - disabled - > - - Share Note - this.handleContextButtonClick(e)} > diff --git a/browser/main/NoteDetail/ShareButton.js b/browser/main/NoteDetail/ShareButton.js deleted file mode 100644 index a5b725e3..00000000 --- a/browser/main/NoteDetail/ShareButton.js +++ /dev/null @@ -1,168 +0,0 @@ -import React, { PropTypes } from 'react' -import ReactDOM from 'react-dom' -import api from 'browser/lib/api' -import clientKey from 'browser/lib/clientKey' -import activityRecord from 'browser/lib/activityRecord' -const clipboard = require('electron').clipboard - -function notify (...args) { - return new window.Notification(...args) -} - -function getDefault () { - return { - openDropdown: false, - isSharing: false, - // Fetched url - url: null, - // for tooltip Copy -> Copied! - copied: false, - failed: false - } -} - -export default class ShareButton extends React.Component { - constructor (props) { - super(props) - this.state = getDefault() - } - - componentWillReceiveProps (nextProps) { - this.setState(getDefault()) - } - - componentDidMount () { - this.dropdownInterceptor = e => { - this.dropdownClicked = true - } - ReactDOM.findDOMNode(this.refs.dropdown).addEventListener('click', this.dropdownInterceptor) - this.shareViaPublicURLHandler = e => { - this.handleShareViaPublicURLClick(e) - } - } - - componentWillUnmount () { - document.removeEventListener('click', this.dropdownHandler) - ReactDOM.findDOMNode(this.refs.dropdown).removeEventListener('click', this.dropdownInterceptor) - } - - handleOpenButtonClick (e) { - this.openDropdown() - if (this.dropdownHandler == null) { - this.dropdownHandler = e => { - if (!this.dropdownClicked) { - this.closeDropdown() - } else { - this.dropdownClicked = false - } - } - } - document.removeEventListener('click', this.dropdownHandler) - document.addEventListener('click', this.dropdownHandler) - } - - openDropdown () { - this.setState({openDropdown: true}) - } - - closeDropdown () { - document.removeEventListener('click', this.dropdownHandler) - this.setState({openDropdown: false}) - } - - handleClipboardButtonClick (e) { - activityRecord.emit('MAIN_DETAIL_COPY') - clipboard.writeText(this.props.article.content) - notify('Saved to Clipboard!', { - body: 'Paste it wherever you want!' - }) - this.setState({openDropdown: false}) - } - - handleShareViaPublicURLClick (e) { - let { user } = this.props - let input = Object.assign({}, this.props.article, { - clientKey: clientKey.get(), - writerName: user.name - }) - this.setState({ - isSharing: true, - failed: false - }, () => { - api.shareViaPublicURL(input) - .then(res => { - let url = res.body.url - this.setState({url: url, isSharing: false}) - activityRecord.emit('ARTICLE_SHARE') - }) - .catch(err => { - console.log(err) - this.setState({isSharing: false, failed: true}) - }) - }) - } - - handleCopyURLClick () { - clipboard.writeText(this.state.url) - this.setState({copied: true}) - } - - // Restore copy url tooltip - handleCopyURLMouseLeave () { - this.setState({copied: false}) - } - - render () { - let hasPublicURL = this.state.url != null - return ( - - this.handleOpenButtonClick(e)} className='ShareButton-open-button'> - - { - this.state.openDropdown ? null : ( - Share - ) - } - - - { - !hasPublicURL ? ( - this.shareViaPublicURLHandler(e)} - ref='sharePublicURL' - disabled={this.state.isSharing}> - {this.state.failed ? 'Failed : Click to Try again' : !this.state.isSharing ? 'Share via public URL' : 'Sharing...'} - - ) : ( - - - this.handleCopyURLClick(e)} - className='ShareButton-url-button' - onMouseLeave={e => this.handleCopyURLMouseLeave(e)} - > - - {this.state.copied ? 'Copied!' : 'Copy URL'} - - This url is valid for 7 days. - - ) - } - this.handleClipboardButtonClick(e)}> - Copy to clipboard - - - - ) - } -} - -ShareButton.propTypes = { - article: PropTypes.shape({ - publicURL: PropTypes.string, - content: PropTypes.string - }), - user: PropTypes.shape({ - name: PropTypes.string - }) -}