mirror of https://github.com/kern/filepizza
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1007 B
JavaScript
44 lines
1007 B
JavaScript
import UploadActions from '../actions/UploadActions'
|
|
import alt from '../alt'
|
|
import socket from 'filepizza-socket'
|
|
import WebTorrent from 'webtorrent'
|
|
|
|
export default alt.createStore(class UploadStore {
|
|
|
|
constructor() {
|
|
this.bindActions(UploadActions)
|
|
|
|
this.fileName = ''
|
|
this.fileSize = 0
|
|
this.fileType = ''
|
|
this.status = 'ready'
|
|
this.token = null
|
|
this.infoHash = null
|
|
}
|
|
|
|
onUploadFile(file) {
|
|
if (this.status !== 'ready') return
|
|
this.status = 'processing'
|
|
|
|
const client = new WebTorrent()
|
|
client.seed(file, (torrent) => {
|
|
socket.emit('upload', {
|
|
fileName: file.name,
|
|
fileSize: file.size,
|
|
fileType: file.type,
|
|
infoHash: torrent.infoHash
|
|
}, (token) => {
|
|
this.setState({
|
|
status: 'uploading',
|
|
token: token,
|
|
fileName: file.name,
|
|
fileSize: file.size,
|
|
fileType: file.type,
|
|
infoHash: torrent.infoHash
|
|
})
|
|
})
|
|
})
|
|
}
|
|
|
|
}, 'UploadStore')
|