Просмотр исходного кода

Merge pull request #15093 from silentoplayz/fix-sidebar-drag-and-drop

fix: refine folder component's drag-&-drop error handling
Tim Jaeryang Baek 3 месяцев назад
Родитель
Сommit
34440f95dc
1 измененных файлов с 17 добавлено и 7 удалено
  1. 17 7
      src/lib/components/common/Folder.svelte

+ 17 - 7
src/lib/components/common/Folder.svelte

@@ -69,12 +69,22 @@
 						}
 					} else {
 						open = true;
-
-						const dataTransfer = e.dataTransfer.getData('text/plain');
-						const data = JSON.parse(dataTransfer);
-
-						console.log(data);
-						dispatch('drop', data);
+						try {
+							const dataTransfer = e.dataTransfer.getData('text/plain');
+							if (dataTransfer) {
+								const data = JSON.parse(dataTransfer);
+								console.log(data);
+								dispatch('drop', data);
+							} else {
+								console.log('Dropped text data is empty or not text/plain.');
+							}
+						} catch (error) {
+							console.log(
+								'Dropped data is not valid JSON text or is empty. Ignoring drop event for this type of data.'
+							);
+						} finally {
+							draggedOver = false;
+						}
 					}
 				}
 			}
@@ -103,7 +113,7 @@
 		if (!dragAndDrop) {
 			return;
 		}
-		folderElement.addEventListener('dragover', onDragOver);
+		folderElement.removeEventListener('dragover', onDragOver);
 		folderElement.removeEventListener('drop', onDrop);
 		folderElement.removeEventListener('dragleave', onDragLeave);
 	});