This commit is contained in:
+29
-4
@@ -38,6 +38,7 @@ const downloadLogs = document.getElementById("downloadLogs");
|
||||
const debugLogList = document.getElementById("debugLogList");
|
||||
const debugSummary = document.getElementById("debugSummary");
|
||||
const resultModal = document.getElementById("resultModal");
|
||||
const resultModalShell = document.getElementById("resultModalShell");
|
||||
const resultModalTitle = document.getElementById("resultModalTitle");
|
||||
const resultModalSource = document.getElementById("resultModalSource");
|
||||
const resultModalSnippet = document.getElementById("resultModalSnippet");
|
||||
@@ -56,6 +57,7 @@ const resultModalSecondaryAction = document.getElementById("resultModalSecondary
|
||||
const closeResultModal = document.getElementById("closeResultModal");
|
||||
const resultModalReady = Boolean(
|
||||
resultModal &&
|
||||
resultModalShell &&
|
||||
resultModalTitle &&
|
||||
resultModalSource &&
|
||||
resultModalSnippet &&
|
||||
@@ -436,12 +438,30 @@ function resetPreviewPlayer() {
|
||||
|
||||
function showModal(element) {
|
||||
setHidden(element, false);
|
||||
if (element === resultModal) {
|
||||
syncResultModalLayout();
|
||||
}
|
||||
}
|
||||
|
||||
function hideModal(element) {
|
||||
setHidden(element, true);
|
||||
}
|
||||
|
||||
function syncResultModalLayout() {
|
||||
if (!resultModalReady) {
|
||||
return;
|
||||
}
|
||||
const viewportWidth = Math.max(320, window.innerWidth || document.documentElement.clientWidth || 0);
|
||||
const viewportHeight = Math.max(320, window.innerHeight || document.documentElement.clientHeight || 0);
|
||||
const shellWidth = Math.min(1150, viewportWidth - 16);
|
||||
const shellHeight = Math.min(840, viewportHeight - 12);
|
||||
const mediaHeight = Math.max(150, Math.min(Math.floor(viewportHeight * 0.32), 320));
|
||||
resultModalShell.style.setProperty("--result-modal-shell-width", `${shellWidth}px`);
|
||||
resultModalShell.style.setProperty("--result-modal-shell-height", `${shellHeight}px`);
|
||||
resultModalShell.style.setProperty("--result-modal-media-max-height", `${mediaHeight}px`);
|
||||
resultModalShell.classList.toggle("result-modal-compact", viewportHeight < 900 || viewportWidth < 1280);
|
||||
}
|
||||
|
||||
function buildResultModalEmbedURL(item) {
|
||||
if (item?.embedUrl) {
|
||||
if (item.source === "Google Video" && item.embedUrl.includes("youtube-nocookie.com/embed/")) {
|
||||
@@ -589,7 +609,7 @@ async function fetchResultPreview(item) {
|
||||
}
|
||||
const request = (async () => {
|
||||
try {
|
||||
const preview = await api("/api/download/preview", {
|
||||
const preview = await api("/api/download/preview", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ url: key }),
|
||||
@@ -671,10 +691,10 @@ function renderResults(results) {
|
||||
node.addEventListener("click", () => openResultModal(item));
|
||||
previewVideo.poster = usableThumbnail ? item.thumbnailUrl : "";
|
||||
const mediaArea = node.querySelector(".relative");
|
||||
if (item.previewVideoUrl || item.source === "Google Video") {
|
||||
if (item.previewVideoUrl || item.source === "Google Video" || item.source === "Artgrid") {
|
||||
mediaArea.addEventListener("mouseenter", async () => {
|
||||
let previewURL = item.previewVideoUrl || "";
|
||||
if (!previewURL && item.source === "Google Video") {
|
||||
if (!previewURL && (item.source === "Google Video" || item.source === "Artgrid")) {
|
||||
const preview = await fetchResultPreview(item);
|
||||
previewURL = preview?.previewStreamUrl || "";
|
||||
}
|
||||
@@ -749,7 +769,7 @@ async function openResultModal(item) {
|
||||
const embedURL = buildResultModalEmbedURL(item);
|
||||
const fallbackReason = item.previewBlockedReason || "Embedded view was unavailable, switched to fallback preview.";
|
||||
let resolvedPreviewURL = item.previewVideoUrl || "";
|
||||
if (!resolvedPreviewURL && item.source === "Google Video") {
|
||||
if (!resolvedPreviewURL && (item.source === "Google Video" || item.source === "Artgrid")) {
|
||||
const preview = await fetchResultPreview(item);
|
||||
resolvedPreviewURL = preview?.previewStreamUrl || "";
|
||||
}
|
||||
@@ -1030,6 +1050,11 @@ if (resultModalReady) {
|
||||
}
|
||||
});
|
||||
}
|
||||
window.addEventListener("resize", () => {
|
||||
if (resultModalReady && !resultModal.classList.contains("hidden")) {
|
||||
syncResultModalLayout();
|
||||
}
|
||||
});
|
||||
for (const button of platformToggles) {
|
||||
button.addEventListener("click", () => {
|
||||
const platform = button.dataset.platformToggle;
|
||||
|
||||
Reference in New Issue
Block a user