#include common.js #include eeprom.js #include utility.js var eepromAppl = 1, eepromSupportImageEmbed = true, eepromSupportAudioEmbed = true, eepromSupportVideoEmbed = true; var eepromInitialise = function(auth) { window.eepromHistory = {}; window.eepromClient = new AmiEEPROM(futami.get('eeprom2'), auth.getHttpAuth); window.eepromUploadsTable = $i('uploadHistory'); $i('uploadSelector').onchange = function() { for(var i = 0; i < this.files.length; ++i) eepromFileUpload(this.files[i]); }; $i('uploadButton').onclick = function() { $i('uploadSelector').click(); }; ami.chat.inputBox.watch('paste', function(ev) { if(ev.clipboardData && ev.clipboardData.files.length > 0) { if('preventDefault' in ev) ev.preventDefault(); for(var i = 0; i < ev.clipboardData.files.length; ++i) eepromFileUpload(ev.clipboardData.files[i]); } }); if((typeof document.body.ondrop).toLowerCase() !== 'undefined') { document.body.ondragenter = function(ev) { ev.preventDefault(); ev.stopPropagation(); }; document.body.ondragover = function(ev) { ev.preventDefault(); ev.stopPropagation(); }; document.body.ondragleave = function(ev) { ev.preventDefault(); ev.stopPropagation(); }; document.body.ondrop = function(ev) { ev.preventDefault(); ev.stopPropagation(); if(ev.dataTransfer && ev.dataTransfer.files.length > 0) for(var i = 0; i < ev.dataTransfer.files.length; ++i) eepromFileUpload(ev.dataTransfer.files[i]); }; } }; var eepromFileUpload = function(file) { if(!window.eepromUploadsTable || !window.eepromClient) { console.error('Upload history or EEPROM client is missing???'); return; } var uploadEntryWrap = window.eepromUploadsTable.insertRow(0), uploadEntry = uploadEntryWrap.insertCell(0); uploadEntryWrap.className = (window.eepromUploadsTable.rows.length % 2) ? 'rowOdd' : 'rowEven'; var name = document.createElement('a'); name.target = '_blank'; name.style.wordWrap = 'normal'; name.style.wordBreak = 'break-word'; name.style.display = 'block'; name.style.margin = '2px 10px'; name.style.textDecoration = 'none !important'; name.textContent = file.name; name.title = 'SHIFT+Click to delete file'; uploadEntry.appendChild(name); var prog = document.createElement('div'), progBar = document.createElement('div'); prog.style.border = '1px solid #808080'; prog.style.background = '#000'; prog.style.padding = '0'; prog.style.margin = '2px 10px'; progBar.style.background = '#808080'; progBar.style.width = '0%'; progBar.style.height = '12px'; progBar.style.padding = '0'; progBar.style.border = '1px solid #000'; progBar.style.boxSizing = 'border-box'; prog.appendChild(progBar); uploadEntry.appendChild(prog); var uploadTask = window.eepromClient.create(file); uploadTask.onProgress(function(progressInfo) { progBar.style.width = `${progressInfo.progress * 100}%`; }); name.onclick = function(ev) { if(ev.shiftKey) { ev.preventDefault(); var fileInfo = window.eepromHistory[name.getAttribute('data-eeprom-id') || '']; if(fileInfo) { window.eepromClient.delete( fileInfo, () => { uploadHistory.deleteRow(uploadEntryWrap.rowIndex); }, window.alert ); } else uploadTask.abort(); } }; uploadTask.start( fileInfo => { window.eepromHistory[fileInfo.id] = fileInfo; name.style.textDecoration = null; name.setAttribute('data-eeprom-id', fileInfo.id); name.href = fileInfo.url; uploadEntry.removeChild(prog); var insertText = location.protocol + fileInfo.url; if(eepromSupportImageEmbed && fileInfo.isImage()) insertText = '[img]' + fileInfo.url + '[/img]'; else if(eepromSupportAudioEmbed && fileInfo.isAudio()) insertText = '[audio]' + fileInfo.url + '[/audio]'; else if(eepromSupportVideoEmbed && fileInfo.isVideo()) insertText = '[video]' + fileInfo.url + '[/video]'; ami.chat.inputBox.insert(insertText); }, ex => { if(ex !== '') alert(ex); uploadHistory.deleteRow(uploadEntryWrap.rowIndex); }, ); };