// Muaz Khan - www.MuazKhan.com // MIT License - www.WebRTC-Experiment.com/licence // Experiments - github.com/muaz-khan/RTCMultiConnection // file sharing var progressHelper = { }; rtcMultiConnection.onFileStart = function(file) { addNewMessage({ header: rtcMultiConnection.extra.username, message: '' + file.name + ' ( ' + bytesToSize(file.size) + ' )', userinfo: getUserinfo(rtcMultiConnection.blobURLs[rtcMultiConnection.userid], 'images/share-files.png'), callback: function(div) { var innerDiv = document.createElement('div'); innerDiv.title = file.name; innerDiv.innerHTML = ''; div.querySelector('.message').appendChild(innerDiv); progressHelper[file.uuid] = { div: innerDiv, progress: innerDiv.querySelector('progress'), label: innerDiv.querySelector('label') }; progressHelper[file.uuid].progress.max = file.maxChunks; } }); }; rtcMultiConnection.onFileProgress = function(chunk) { var helper = progressHelper[chunk.uuid]; if (!helper) return; helper.progress.value = chunk.currentPosition || chunk.maxChunks || helper.progress.max; updateLabel(helper.progress, helper.label); }; // www.RTCMultiConnection.org/docs/onFileEnd/ rtcMultiConnection.onFileEnd = function(file) { if (!progressHelper[file.uuid]) { console.error('No such progress-helper element exists.', file); return; } var div = progressHelper[file.uuid].div; if (file.type.indexOf('image') != -1) { div.innerHTML = 'Download ' + file.name + '
'; } else { div.innerHTML = 'Download ' + file.name + '
'; } setTimeout(function() { div = div.parentNode.parentNode.parentNode; div.querySelector('.user-info').style.height = div.querySelector('.user-activity').clientHeight + 'px'; }, 10); }; function updateLabel(progress, label) { if (progress.position == -1) return; var position = +progress.position.toFixed(2).split('.')[1] || 100; label.innerHTML = position + '%'; }