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.
filepizza/lib/stores/UploadStore.js

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')