TorrentTable gets passed a json list of torrents and this displays it in a table view.
This commit is contained in:
85
client/app/components/admin/torrentTable.jsx
Normal file
85
client/app/components/admin/torrentTable.jsx
Normal file
@@ -0,0 +1,85 @@
|
||||
import React, { Component } from 'react';
|
||||
|
||||
import { fetchJSON } from '../http.jsx';
|
||||
|
||||
class TorrentTable extends Component {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.state = {
|
||||
torrentResponse: '',
|
||||
showResults: false,
|
||||
}
|
||||
}
|
||||
|
||||
componentWillReceiveProps(props) {
|
||||
if (props.response !== undefined) {
|
||||
this.setState({
|
||||
torrentResponse: props.response.map((torrent, index) => {
|
||||
return (
|
||||
<tr key={index}>
|
||||
<td>{torrent.name}</td>
|
||||
<td>{torrent.size}</td>
|
||||
<td>{torrent.seed}</td>
|
||||
<td><button onClick={() => {this.sendToDownload(torrent)}}>Send to download</button></td>
|
||||
</tr>
|
||||
)
|
||||
}),
|
||||
showResults: true,
|
||||
})
|
||||
}
|
||||
else {
|
||||
this.setState({
|
||||
showResults: false,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
sendToDownload(torrent) {
|
||||
let data = {magnet: torrent.magnet}
|
||||
fetchJSON('https://apollo.kevinmidboe.com/api/v1/pirate/add', 'POST', data)
|
||||
.then((response) => {
|
||||
// TODO: Show a card with response that the item has been sent, and the status of response.
|
||||
console.log(response)
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error(error);
|
||||
})
|
||||
}
|
||||
|
||||
generateTable() {
|
||||
let style = {
|
||||
table: {
|
||||
width: '80%',
|
||||
marginRight: 'auto',
|
||||
marginLeft: 'auto',
|
||||
},
|
||||
}
|
||||
|
||||
return (
|
||||
<table style={style.table}>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Size</th>
|
||||
<th>Seed</th>
|
||||
<th>Add</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{ this.state.torrentResponse }
|
||||
</tbody>
|
||||
</table>
|
||||
);
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
{ this.state.showResults ? this.generateTable() : null }
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export default TorrentTable
|
||||
Reference in New Issue
Block a user