fix: persist expanded details across re-renders, guard drag-drop init against duplicates

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
xRangerDE 2026-03-21 15:03:20 +01:00
parent 1e81b889f9
commit 4607ba9cc6
2 changed files with 13 additions and 4 deletions

View File

@ -35,7 +35,7 @@ function getQueueRenderFingerprint(items: QueueItem[]): string {
item.mergeGroup?.mergePhase || ''
].join(':'));
return `${lang}|${selectedQueueIds.join(',')}|${pieces.join('|')}`;
return `${lang}|${selectedQueueIds.join(',')}|${[...expandedQueueIds].join(',')}|${pieces.join('|')}`;
}
function hasActiveQueueDuplicate(url: string, streamer: string, date: string, customClip?: CustomClip): boolean {
@ -199,11 +199,18 @@ function updateQueueItemProgress(progress: DownloadProgress): void {
}
function toggleQueueDetails(id: string): void {
const el = document.getElementById(`details-${id}`);
if (el) el.style.display = el.style.display === 'none' ? 'block' : 'none';
if (expandedQueueIds.has(id)) {
expandedQueueIds.delete(id);
} else {
expandedQueueIds.add(id);
}
renderQueue();
}
function initQueueDragDrop(): void {
if (queueDragDropInitialized) return;
queueDragDropInitialized = true;
const list = byId('queueList');
list.addEventListener('dragstart', (e: DragEvent) => {
@ -303,7 +310,7 @@ function renderQueue(): void {
<div class="queue-progress-bar${progressClass}" style="width: ${progressValue}%;"></div>
</div>
<div class="queue-progress-text">${safeProgressText}</div>
<div class="queue-details" id="details-${item.id}" style="display:none">
<div class="queue-details" id="details-${item.id}" style="display:${expandedQueueIds.has(item.id) ? 'block' : 'none'}">
<div>URL: ${escapeHtml(item.url)}</div>
<div>Streamer: ${escapeHtml(item.streamer)}</div>
<div>Dauer: ${escapeHtml(item.duration_str)}</div>

View File

@ -25,6 +25,8 @@ let isConnected = false;
let downloading = false;
let queue: QueueItem[] = [];
let selectedQueueIds: string[] = [];
let expandedQueueIds: Set<string> = new Set();
let queueDragDropInitialized = false;
let cutterFile: string | null = null;
let cutterVideoInfo: VideoInfo | null = null;