import React from 'react' import {Modal, Button, ButtonGroup, ButtonToolbar, Glyphicon} from 'react-bootstrap' import App from 'app' import Splash from 'components/splash' import bitmask from 'lib/bitmask' export default class AppButtons extends React.Component { static get defaultProps() {return{ }} constructor(props) { super(props) this.state = { showAbout: false, version: null } // prebind: this.showAbout = this.showAbout.bind(this) this.hideAbout = this.hideAbout.bind(this) this.quit = this.quit.bind(this) this.openBugReport = this.openBugReport.bind(this) this.openDonate = this.openDonate.bind(this) this.openCode = this.openCode.bind(this) } showAbout() { bitmask.core.version().then(result => { this.setState({version: result.version_core}) }) this.setState({showAbout: true}) } hideAbout() { this.setState({showAbout: false}) } quit() { App.show('bye_splash') } openURL(url) { if (typeof(bitmaskApp) == 'undefined') { window.open(url) } else { bitmaskApp.openSystemBrowser(url) } } openBugReport() { this.openURL('https://0xacab.org/leap/bitmask-dev/issues') } openDonate() { this.openURL('https://leap.se/donate') } openCode() { this.openURL('https://leap.se/source') } render() { let style = {} let quitButton = null let aboutButton = null let aboutModal = null quitButton = ( <Button onClick={this.quit} className="btn-inverse"> <Glyphicon glyph="off" /> </Button> ) aboutButton = ( <Button onClick={this.showAbout} className="btn-inverse"> <Glyphicon glyph="info-sign" /> </Button> ) if (this.state.showAbout) { aboutModal = ( <Modal show={true} onHide={this.hideAbout}> <Splash speed="fast" mask={true} fullscreen={false} /> <Modal.Body> <h2><b>Bitmask</b></h2> <p> Bitmask Desktop Client, Version {this.state.version} </p> <p> Bitmask is Free Software, released under the GNU General Public License, version 3.<br/> Copyright 2017 LEAP Encryption Access Project. </p> <p> The Bitmask application is lovingly hand-crafted by developers all over the world. Development is principally sponsored by the LEAP Encryption Access Project, an organization dedicated to defending the fundamental right to whisper. </p> <ButtonToolbar> <Button onClick={this.hideAbout}> <Glyphicon glyph="remove" /> Close </Button> <Button onClick={this.openBugReport}> <Glyphicon glyph="alert" /> Report Bug </Button> <Button onClick={this.openDonate}> <Glyphicon glyph="heart" /> Donate </Button> <Button onClick={this.openCode}> <Glyphicon glyph="circle-arrow-down" /> Clone Source </Button> </ButtonToolbar> </Modal.Body> </Modal> ) } return ( <ButtonToolbar className="app-buttons"> {quitButton} {aboutButton} {aboutModal} </ButtonToolbar> ) } }