Files
goTorrent/goTorrentWebUI/src/TopMenu/Modals/deleteTorrentModal.js

133 lines
4.1 KiB
JavaScript

import React from 'react';
import ReactDOM from 'react-dom';
import Button from 'material-ui/Button';
import TextField from 'material-ui/TextField';
import { withStyles } from 'material-ui/styles';
import PropTypes from 'prop-types';
import Dialog, {
DialogContent,
DialogTitle,
DialogActions,
} from 'material-ui/Dialog';
//import InsertLinkIcon from 'material-ui-icons/Link';
import ReactTooltip from 'react-tooltip'
//import Icon from 'material-ui/Icon';
import AddIcon from 'material-ui-icons/AddBox';
import IconButton from 'material-ui/IconButton';
import DeleteTorrentIcon from 'material-ui-icons/Delete';
//Redux
import {connect} from 'react-redux';
import * as actionTypes from '../../store/actions';
const button = {
fontSize: '60px',
marginRight: '20px',
}
const inlineStyle = {
display: 'inline-block',
}
class DeleteTorrentModal extends React.Component {
state = {
open: false,
};
handleDeleteTorrent = () => {
let selection = []
let deleteTorrentHashes = {
MessageType: "deleteTorrents",
Payload: {"TorrentHashes": this.props.selectionHashes, "WithData": false}
}
console.log("Deleting Torrents", deleteTorrentHashes)
ws.send(JSON.stringify(deleteTorrentHashes))
this.props.setButtonState(this.props.selection) //TODO this currently just forces a button refresh, should be a better way to do this
this.props.changeSelection(selection) //purging out our selection after deleting a torent
this.setState({ open: false });
}
handleDeleteData = () => {
let selection = []
let deleteTorrentHashes = {
MessageType: "deleteTorrents",
Payload: {"TorrentHashes": this.props.selectionHashes, "WithData": true}
}
console.log("Deleting Torrents and Data", deleteTorrentHashes)
ws.send(JSON.stringify(deleteTorrentHashes))
this.props.setButtonState(this.props.selection) //TODO this currently just forces a button refresh, should be a better way to do this
this.props.changeSelection(selection) //purging out our selection after deleting a torent
this.setState({ open: false });
}
handleClickOpen = () => {
if (this.props.selection.length > 0){
this.setState({ open: true });
} else {
console.log("Select a torrent to delete..")
}
};
handleRequestClose = () => {
this.setState({ open: false });
};
setTextValue = (event) => {
this.setState({textValue: event.target.value});
}
render() {
const { onRequestClose, handleRequestClose, handleSubmit } = this.props;
return (
<div style={inlineStyle}>
<IconButton color={this.props.buttonState[0].deleteButton} data-tip="Delete Torrent" style={button} onClick={this.handleClickOpen} aria-label="Delete Torrent">
<ReactTooltip place="top" type="error" effect="float" />
<DeleteTorrentIcon />
</IconButton>
<Dialog open={this.state.open} onRequestClose={this.handleRequestClose} onEscapeKeyUp={this.handleRequestClose} maxWidth="md">
<DialogTitle>Delete Torrent</DialogTitle>
<DialogContent>
Are you sure you want to delete Torrent?
</DialogContent>
<DialogActions>
<Button onClick={this.handleRequestClose} color="primary">
Cancel
</Button>
<Button onClick={this.handleDeleteData} color="primary">
Delete with Data
</Button>
<Button onClick={this.handleDeleteTorrent} color="primary">
Delete just Torrent
</Button>
</DialogActions>
</Dialog>
</div>
);
}
};
const mapStateToProps = state => {
return {
buttonState: state.buttonState,
selection: state.selection,
selectionHashes: state.selectionHashes,
};
}
const mapDispatchToProps = dispatch => {
return {
setButtonState: (buttonState) => dispatch({type: actionTypes.SET_BUTTON_STATE, buttonState}),
changeSelection: (selection) => dispatch({type: actionTypes.CHANGE_SELECTION, selection}), //used to force a selection empty after deleting torrent
}
}
export default connect(mapStateToProps, mapDispatchToProps)(DeleteTorrentModal)