const imageDomain = "http://192.168.1.111:8000/"; // TO TRIGGER TEH FILE UPLOADER WHEN CLICKING ON THE UPLOAD FILE SVG document.getElementById('svgFileUpload').addEventListener('click', function() { document.getElementById('fileupload').click(); }); document.getElementById('fileupload').addEventListener('change', function(event) { let files = event.target.files; const chatRoomId = document.getElementById('chatRoomId').textContent.trim(); console.log(chatRoomId) for (let file of files) { let formData = new FormData(); formData.append('file', file); formData.append('filename', file.name); // Display the file during upload if (file.type.startsWith('image/')) { displayImageDuringUpload(file); } else { displayDocumentDuringUpload(file); } // Perform the upload fetch(`${imageDomain}chat-file-uploader/${chatRoomId}/`, { method: 'POST', body: formData, }) .then(response => response.json()) .then(data => { if (data.data === 'Uploaded Successfully') { const fullPath = `${imageDomain}${data.existingPath}`; updateSelectTag(fullPath, file.name); if (file.type.startsWith('image/')) { updateImageAfterUpload(file.name, fullPath); } else { updateDocumentAfterUpload(file.name); } } else { console.error('Upload failed'); } }) .catch(error => console.error('Error:', error)); } }); function displayImageDuringUpload(file) { let reader = new FileReader(); reader.onload = function(event) { let outerDiv = document.createElement('div'); outerDiv.className = 'w-fit p-4 rounded-l-3xl rounded-tr-3xl text-white shadow-md text-sm leading-6 bg-opacity-70 bg-osiblue'; let div = document.createElement('div'); div.id = 'uploading-' + file.name; div.className = 'image-' + file.name; let img = document.createElement('img'); img.src = event.target.result; img.style.opacity = '0.2'; div.appendChild(img); outerDiv.appendChild(div); document.getElementById('messages').appendChild(outerDiv); }; reader.readAsDataURL(file); } function displayDocumentDuringUpload(file) { let outerDiv = document.createElement('div'); outerDiv.className = 'w-full p-4 rounded-l-3xl rounded-tr-3xl text-white shadow-md text-sm leading-6 bg-opacity-70 bg-osiblue'; let flexContainer = document.createElement('div'); flexContainer.className = 'w-full flex items-center gap-1'; let svg = ` `; let svgDiv = document.createElement('div'); svgDiv.innerHTML = svg; let textContainer = document.createElement('div'); textContainer.className = 'flex flex-col'; let uploadingText = document.createElement('span'); uploadingText.id = 'uploading-' + file.name; uploadingText.textContent = 'Uploading...'; let fileNameDiv = document.createElement('div'); fileNameDiv.className = 'file-name'; fileNameDiv.textContent = file.name; textContainer.appendChild(uploadingText); textContainer.appendChild(fileNameDiv); flexContainer.appendChild(svgDiv); flexContainer.appendChild(textContainer); outerDiv.appendChild(flexContainer); document.getElementById('messages').appendChild(outerDiv); } function updateSelectTag(path, fileName) { let option = document.createElement('option'); option.value = path; option.textContent = fileName; option.selected = true; document.getElementById('filePathInput').appendChild(option); } function updateImageAfterUpload(fileName, fullPath) { let div = document.getElementById('uploading-' + fileName); if (div) { let img = div.querySelector('img'); if (img) { img.src = fullPath; // Update image src to use fullPath img.style.opacity = '1.0'; } div.id = ''; } } function updateDocumentAfterUpload(fileName) { let uploadingText = document.getElementById('uploading-' + fileName); if (uploadingText) { uploadingText.textContent = ''; uploadingText.id = ''; } }