From 730ad5a70cd65d1b6ec8bedc5cd254af99bd9147 Mon Sep 17 00:00:00 2001 From: SuperSaltyGamer Date: Sat, 22 Jul 2023 18:17:23 +0300 Subject: [PATCH] [musicbrainz] Allow dragging log files to search --- src/musicbrainz/modules/search.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/musicbrainz/modules/search.ts b/src/musicbrainz/modules/search.ts index 98de3a1..db6e52f 100644 --- a/src/musicbrainz/modules/search.ts +++ b/src/musicbrainz/modules/search.ts @@ -10,11 +10,29 @@ enum QueryType { const LOG_TOC_PATTERN = /(\d+) +\| +([0-9:.]+) +\| +([0-9:.]+) +\| +(\d+) +\| +(\d+)/g; const formEl = document.querySelector("form[action='/search']")!; +const submitEl = document.querySelector("form[action='/search'] button")!; const searchEl = document.querySelector("#headerid-query")!; searchEl.focus(); searchEl.placeholder = "Enhanced search"; +formEl.addEventListener("dragover", e => { + e.preventDefault(); + const transfer = e.dataTransfer; + if (!transfer) return; + transfer.dropEffect = "link"; +}); + +formEl.addEventListener("drop", async e => { + e.preventDefault(); + const transfer = e.dataTransfer; + if (!transfer) return; + const file = transfer.files.item(0); + if (!file?.name.match(/\.log$/)) return; + searchEl.value = await file.text(); + submitEl.click(); +}); + formEl.addEventListener("submit", e => { const data = new FormData(formEl); const query = (data.get("query") as string).trim();