coollsd commited on
Commit
a6b0ed6
·
verified ·
1 Parent(s): 881d594

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -28
app.py CHANGED
@@ -537,12 +537,12 @@ HTML_CONTENT = """
537
  <h1>Radd PRO Uploader</h1>
538
  <form id="uploadForm">
539
  <div id="dropZone" class="drop-zone">
540
- <input type="file" name="file" id="file" class="file-input" accept="*" multiple required>
541
- <label for="file" class="btn">Choose Files</label>
542
- <p>or drag and drop files here/paste image</p>
543
  </div>
544
  <div class="file-name" id="fileName"></div>
545
- <button type="submit" id="uploadBtn" class="btn" style="display: none; margin-top: 1rem;">Upload Files</button>
546
  <div class="progress-container" id="progressContainer"></div>
547
  <div class="loading-spinner" id="loadingSpinner"></div>
548
  </form>
@@ -607,7 +607,7 @@ HTML_CONTENT = """
607
  uploadForm.addEventListener('submit', (e) => {
608
  e.preventDefault();
609
  if (fileInput.files.length > 0) {
610
- uploadFiles(fileInput.files);
611
  }
612
  });
613
 
@@ -627,15 +627,11 @@ HTML_CONTENT = """
627
  });
628
 
629
  document.addEventListener('paste', (e) => {
630
- e.preventDefault();
631
  const items = e.clipboardData.items;
632
  for (let i = 0; i < items.length; i++) {
633
  if (items[i].kind === 'file') {
634
  const file = items[i].getAsFile();
635
- const dT = new DataTransfer();
636
- dT.items.add(file);
637
- fileInput.files = dT.files;
638
- handleFileSelect({ target: { files: dT.files } });
639
  break;
640
  }
641
  }
@@ -678,17 +674,17 @@ HTML_CONTENT = """
678
 
679
  function handleFileSelect(e) {
680
  if (e.target.files && e.target.files.length > 0) {
681
- const files = e.target.files;
682
- let fileNames = [];
683
- for (let i = 0; i < files.length; i++) {
684
- fileNames.push(files[i].name);
685
- }
686
- fileName.textContent = fileNames.join(', ');
687
  uploadBtn.style.display = 'inline-block';
 
 
 
 
688
  }
689
  }
690
 
691
- async function uploadFiles(files) {
692
  progressContainer.innerHTML = '';
693
  progressContainer.style.display = 'block';
694
  loadingSpinner.style.display = 'block';
@@ -696,14 +692,13 @@ HTML_CONTENT = """
696
  resultContainer.innerHTML = '';
697
  resultContainer.style.display = 'none';
698
 
699
- for (let i = 0; i < files.length; i++) {
700
- const file = files[i];
701
- const progressBar = createProgressBar(file.name);
702
- progressContainer.appendChild(progressBar);
703
 
704
- const formData = new FormData();
705
- formData.append('file', file);
706
 
 
707
  try {
708
  const xhr = new XMLHttpRequest();
709
  xhr.open('POST', '/upload', true);
@@ -715,6 +710,8 @@ HTML_CONTENT = """
715
  if (response.url) {
716
  addResultLink(response.url, file.name, response.originalExtension);
717
  saveToHistory(file.name, response.url, response.originalExtension);
 
 
718
  } else {
719
  throw new Error('Upload failed: ' + response.error);
720
  }
@@ -733,13 +730,13 @@ HTML_CONTENT = """
733
  xhr.onloadend = resolve;
734
  xhr.onerror = reject;
735
  });
 
 
736
  } catch (error) {
737
  console.error('Upload error:', error);
738
- alert(`Failed to upload ${file.name}: ${error.message}`);
739
  }
740
  }
741
-
742
- resetUploadState();
743
  }
744
 
745
  function createProgressBar(fileName) {
@@ -886,13 +883,13 @@ HTML_CONTENT = """
886
  actionsContainer.appendChild(embedBtn);
887
  }
888
 
889
- historyItem.appendChild(actionsContainer);
890
  historyList.appendChild(historyItem);
891
  });
892
  historyModal.style.display = "block";
893
  }
894
 
895
- function quickOpen(url, fileName, originalExtension) {
896
  quickOpenContent.innerHTML = '';
897
  const fullUrl = window.location.origin + url;
898
 
 
537
  <h1>Radd PRO Uploader</h1>
538
  <form id="uploadForm">
539
  <div id="dropZone" class="drop-zone">
540
+ <input type="file" name="file" id="file" class="file-input" accept="*" required>
541
+ <label for="file" class="btn">Choose File</label>
542
+ <p>or drag and drop file here/paste image</p>
543
  </div>
544
  <div class="file-name" id="fileName"></div>
545
+ <button type="submit" id="uploadBtn" class="btn" style="display: none; margin-top: 1rem;">Upload File</button>
546
  <div class="progress-container" id="progressContainer"></div>
547
  <div class="loading-spinner" id="loadingSpinner"></div>
548
  </form>
 
607
  uploadForm.addEventListener('submit', (e) => {
608
  e.preventDefault();
609
  if (fileInput.files.length > 0) {
610
+ uploadFile(fileInput.files[0]);
611
  }
612
  });
613
 
 
627
  });
628
 
629
  document.addEventListener('paste', (e) => {
 
630
  const items = e.clipboardData.items;
631
  for (let i = 0; i < items.length; i++) {
632
  if (items[i].kind === 'file') {
633
  const file = items[i].getAsFile();
634
+ handleFileSelect({ target: { files: [file] } });
 
 
 
635
  break;
636
  }
637
  }
 
674
 
675
  function handleFileSelect(e) {
676
  if (e.target.files && e.target.files.length > 0) {
677
+ const file = e.target.files[0];
678
+ fileName.textContent = file.name;
 
 
 
 
679
  uploadBtn.style.display = 'inline-block';
680
+
681
+ const dataTransfer = new DataTransfer();
682
+ dataTransfer.items.add(file);
683
+ fileInput.files = dataTransfer.files;
684
  }
685
  }
686
 
687
+ async function uploadFile(file) {
688
  progressContainer.innerHTML = '';
689
  progressContainer.style.display = 'block';
690
  loadingSpinner.style.display = 'block';
 
692
  resultContainer.innerHTML = '';
693
  resultContainer.style.display = 'none';
694
 
695
+ const progressBar = createProgressBar(file.name);
696
+ progressContainer.appendChild(progressBar);
 
 
697
 
698
+ const formData = new FormData();
699
+ formData.append('file', file);
700
 
701
+ while (true) {
702
  try {
703
  const xhr = new XMLHttpRequest();
704
  xhr.open('POST', '/upload', true);
 
710
  if (response.url) {
711
  addResultLink(response.url, file.name, response.originalExtension);
712
  saveToHistory(file.name, response.url, response.originalExtension);
713
+ resetUploadState();
714
+ return;
715
  } else {
716
  throw new Error('Upload failed: ' + response.error);
717
  }
 
730
  xhr.onloadend = resolve;
731
  xhr.onerror = reject;
732
  });
733
+
734
+ break;
735
  } catch (error) {
736
  console.error('Upload error:', error);
737
+ await new Promise(resolve => setTimeout(resolve, 1000));
738
  }
739
  }
 
 
740
  }
741
 
742
  function createProgressBar(fileName) {
 
883
  actionsContainer.appendChild(embedBtn);
884
  }
885
 
886
+ historyItem.appendChild(actionsContainer);
887
  historyList.appendChild(historyItem);
888
  });
889
  historyModal.style.display = "block";
890
  }
891
 
892
+ function quickOpen(url, fileName, originalExtension) {
893
  quickOpenContent.innerHTML = '';
894
  const fullUrl = window.location.origin + url;
895