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:
parent
1e81b889f9
commit
4607ba9cc6
@ -35,7 +35,7 @@ function getQueueRenderFingerprint(items: QueueItem[]): string {
|
|||||||
item.mergeGroup?.mergePhase || ''
|
item.mergeGroup?.mergePhase || ''
|
||||||
].join(':'));
|
].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 {
|
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 {
|
function toggleQueueDetails(id: string): void {
|
||||||
const el = document.getElementById(`details-${id}`);
|
if (expandedQueueIds.has(id)) {
|
||||||
if (el) el.style.display = el.style.display === 'none' ? 'block' : 'none';
|
expandedQueueIds.delete(id);
|
||||||
|
} else {
|
||||||
|
expandedQueueIds.add(id);
|
||||||
|
}
|
||||||
|
renderQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
function initQueueDragDrop(): void {
|
function initQueueDragDrop(): void {
|
||||||
|
if (queueDragDropInitialized) return;
|
||||||
|
queueDragDropInitialized = true;
|
||||||
|
|
||||||
const list = byId('queueList');
|
const list = byId('queueList');
|
||||||
|
|
||||||
list.addEventListener('dragstart', (e: DragEvent) => {
|
list.addEventListener('dragstart', (e: DragEvent) => {
|
||||||
@ -303,7 +310,7 @@ function renderQueue(): void {
|
|||||||
<div class="queue-progress-bar${progressClass}" style="width: ${progressValue}%;"></div>
|
<div class="queue-progress-bar${progressClass}" style="width: ${progressValue}%;"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="queue-progress-text">${safeProgressText}</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>URL: ${escapeHtml(item.url)}</div>
|
||||||
<div>Streamer: ${escapeHtml(item.streamer)}</div>
|
<div>Streamer: ${escapeHtml(item.streamer)}</div>
|
||||||
<div>Dauer: ${escapeHtml(item.duration_str)}</div>
|
<div>Dauer: ${escapeHtml(item.duration_str)}</div>
|
||||||
|
|||||||
@ -25,6 +25,8 @@ let isConnected = false;
|
|||||||
let downloading = false;
|
let downloading = false;
|
||||||
let queue: QueueItem[] = [];
|
let queue: QueueItem[] = [];
|
||||||
let selectedQueueIds: string[] = [];
|
let selectedQueueIds: string[] = [];
|
||||||
|
let expandedQueueIds: Set<string> = new Set();
|
||||||
|
let queueDragDropInitialized = false;
|
||||||
|
|
||||||
let cutterFile: string | null = null;
|
let cutterFile: string | null = null;
|
||||||
let cutterVideoInfo: VideoInfo | null = null;
|
let cutterVideoInfo: VideoInfo | null = null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user