Handle it correctly if a user tries to share a file that has allready been shared. Closes #142
parent
7ffea7b954
commit
12dc5ea28b
|
|
@ -11,9 +11,10 @@
|
|||
"@material-ui/core": "^4.5.1",
|
||||
"@material-ui/icons": "^4.5.1",
|
||||
"bowser": "^2.7.0",
|
||||
"create-torrent": "^4.4.1",
|
||||
"dompurify": "^2.0.7",
|
||||
"domready": "^1.0.8",
|
||||
"end-of-stream": "1.4.0",
|
||||
"end-of-stream": "1.4.1",
|
||||
"file-saver": "^2.0.2",
|
||||
"hark": "^1.2.3",
|
||||
"is-electron": "^2.2.0",
|
||||
|
|
@ -37,7 +38,7 @@
|
|||
"riek": "^1.1.0",
|
||||
"socket.io-client": "^2.3.0",
|
||||
"source-map-explorer": "^2.1.0",
|
||||
"webtorrent": "^0.107.16"
|
||||
"webtorrent": "^0.107.17"
|
||||
},
|
||||
"scripts": {
|
||||
"analyze": "source-map-explorer build/static/js/*",
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ import * as consumerActions from './actions/consumerActions';
|
|||
import * as producerActions from './actions/producerActions';
|
||||
import * as notificationActions from './actions/notificationActions';
|
||||
|
||||
let createTorrent;
|
||||
|
||||
let WebTorrent;
|
||||
|
||||
let saveAs;
|
||||
|
|
@ -704,10 +706,31 @@ export default class RoomClient
|
|||
})
|
||||
}));
|
||||
|
||||
createTorrent(files, (err, torrent) =>
|
||||
{
|
||||
if (err)
|
||||
{
|
||||
return store.dispatch(requestActions.notify(
|
||||
{
|
||||
type : 'error',
|
||||
text : intl.formatMessage({
|
||||
id : 'filesharing.unableToShare',
|
||||
defaultMessage : 'Unable to share file'
|
||||
})
|
||||
}));
|
||||
}
|
||||
|
||||
const existingTorrent = this._webTorrent.get(torrent);
|
||||
|
||||
if (existingTorrent)
|
||||
{
|
||||
return this._sendFile(existingTorrent.magnetURI);
|
||||
}
|
||||
|
||||
this._webTorrent.seed(
|
||||
files,
|
||||
{ announceList: [['wss://tracker.lab.vvc.niif.hu:443']] },
|
||||
(torrent) =>
|
||||
{ announceList: [ [ 'wss://tracker.lab.vvc.niif.hu:443' ] ] },
|
||||
(newTorrent) =>
|
||||
{
|
||||
store.dispatch(requestActions.notify(
|
||||
{
|
||||
|
|
@ -719,10 +742,11 @@ export default class RoomClient
|
|||
|
||||
store.dispatch(fileActions.addFile(
|
||||
this._peerId,
|
||||
torrent.magnetURI
|
||||
newTorrent.magnetURI
|
||||
));
|
||||
|
||||
this._sendFile(torrent.magnetURI);
|
||||
this._sendFile(newTorrent.magnetURI);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -1344,6 +1368,13 @@ export default class RoomClient
|
|||
|
||||
async _loadDynamicImports()
|
||||
{
|
||||
({ default: createTorrent } = await import(
|
||||
|
||||
/* webpackPrefetch: true */
|
||||
/* webpackChunkName: "createtorrent" */
|
||||
'create-torrent'
|
||||
));
|
||||
|
||||
({ default: WebTorrent } = await import(
|
||||
|
||||
/* webpackPrefetch: true */
|
||||
|
|
@ -2066,6 +2097,30 @@ export default class RoomClient
|
|||
|
||||
try
|
||||
{
|
||||
this._torrentSupport = WebTorrent.WEBRTC_SUPPORT;
|
||||
|
||||
this._webTorrent = this._torrentSupport && new WebTorrent({
|
||||
tracker : {
|
||||
rtcConfig : {
|
||||
iceServers : this._turnServers
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
this._webTorrent.on('error', (error) =>
|
||||
{
|
||||
logger.error('Filesharing [error:"%o"]', error);
|
||||
|
||||
store.dispatch(requestActions.notify(
|
||||
{
|
||||
type : 'error',
|
||||
text : intl.formatMessage({
|
||||
id : 'filesharing.error',
|
||||
defaultMessage : 'There was a filesharing error'
|
||||
})
|
||||
}));
|
||||
});
|
||||
|
||||
this._mediasoupDevice = new mediasoupClient.Device();
|
||||
|
||||
const routerRtpCapabilities =
|
||||
|
|
|
|||
Loading…
Reference in New Issue