From b2e4f2d45e07609ee62d3bd44cd1b8f52d5c68af Mon Sep 17 00:00:00 2001 From: Jarian Cottingham Date: Wed, 25 Feb 2026 00:24:54 -0600 Subject: [PATCH] Fix episode number arrow cascade and remove Update Ranges button - Add isUpdatingEpisodeNumbers flag to prevent re-entrant calls - Arrow buttons now properly cascade shifts to all subsequent episodes - Remove Update Ranges button and associated code - Remove DevTools auto-open for cleaner release - Syntax validation passes --- index.html | 1 - main.js | 2 -- renderer.js | 65 ++++++++++++++++++++++++++++------------------------- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/index.html b/index.html index cc20764..62cd013 100644 --- a/index.html +++ b/index.html @@ -524,7 +524,6 @@
-
diff --git a/main.js b/main.js index 7d48470..ff0af5f 100644 --- a/main.js +++ b/main.js @@ -49,8 +49,6 @@ function createWindow() { }, 1000); } - // Open the DevTools. - mainWindow.webContents.openDevTools(); } // IPC handler for selecting directory diff --git a/renderer.js b/renderer.js index 7576c5c..62f5802 100644 --- a/renderer.js +++ b/renderer.js @@ -11,7 +11,6 @@ const showDetailsEl = document.getElementById('show-details'); const progressContainer = document.getElementById('progress-container'); const progressText = document.getElementById('progress-text'); const progressCount = document.getElementById('progress-count'); -const updateRangesBtn = document.getElementById('update-ranges-btn'); // Current state let currentDirectory = null; @@ -20,6 +19,7 @@ let currentShow = null; let currentSeasons = []; let currentEpisodes = []; let selectedSeasonEpisodeCount = 0; +let isUpdatingEpisodeNumbers = false; // Event Listeners selectDirBtn.addEventListener('click', selectDirectory); @@ -33,13 +33,7 @@ document.addEventListener('click', function(e) { } }); -// Add click handler for Update Ranges button -if (updateRangesBtn) { - updateRangesBtn.addEventListener('click', function() { - updateEpisodeNumbers(); - checkEpisodeCountMatch(); - }); -} + // Add click handler for Begin Mapping button document.getElementById('begin-mapping-btn').addEventListener('click', beginMapping); @@ -449,30 +443,41 @@ function handleDrop(e) { } function updateEpisodeNumbers() { - const fileItems = fileListEl.querySelectorAll('.file-item:not(.folder-item)'); - let episodeNum = 1; + if (isUpdatingEpisodeNumbers) { + console.log('[updateEpisodeNumbers] Already updating, skipping re-entrant call'); + return; + } - console.log('[updateEpisodeNumbers] Starting with episodeNum:', episodeNum); - console.log('[updateEpisodeNumbers] Total items:', fileItems.length); - console.trace('[updateEpisodeNumbers] Call stack'); + isUpdatingEpisodeNumbers = true; - fileItems.forEach((item, index) => { - const episodeEl = item.querySelector('.episode-number'); - if (episodeEl) { - const storedStart = episodeEl.dataset.episodeStart; - const storedEnd = episodeEl.dataset.episodeEnd; - console.log(`[updateEpisodeNumbers] Item ${index}: storedStart="${storedStart}", storedEnd="${storedEnd}"`); - - const start = storedStart ? parseInt(storedStart) : episodeNum; - const end = storedEnd ? parseInt(storedEnd) : start; - - const rangeText = start === end ? `${start}` : `${start}-${end}`; - episodeEl.textContent = rangeText; - episodeEl.dataset.episode = episodeNum; - console.log(`[updateEpisodeNumbers] Item ${index}: calculated start=${start}, end=${end}, display=${rangeText}, next episodeNum=${end + 1}`); - episodeNum = end + 1; - } - }); + try { + const fileItems = fileListEl.querySelectorAll('.file-item:not(.folder-item)'); + let episodeNum = 1; + + console.log('[updateEpisodeNumbers] Starting with episodeNum:', episodeNum); + console.log('[updateEpisodeNumbers] Total items:', fileItems.length); + console.trace('[updateEpisodeNumbers] Call stack'); + + fileItems.forEach((item, index) => { + const episodeEl = item.querySelector('.episode-number'); + if (episodeEl) { + const storedStart = episodeEl.dataset.episodeStart; + const storedEnd = episodeEl.dataset.episodeEnd; + console.log(`[updateEpisodeNumbers] Item ${index}: storedStart="${storedStart}", storedEnd="${storedEnd}"`); + + const start = storedStart ? parseInt(storedStart) : episodeNum; + const end = storedEnd ? parseInt(storedEnd) : start; + + const rangeText = start === end ? `${start}` : `${start}-${end}`; + episodeEl.textContent = rangeText; + episodeEl.dataset.episode = episodeNum; + console.log(`[updateEpisodeNumbers] Item ${index}: calculated start=${start}, end=${end}, display=${rangeText}, next episodeNum=${end + 1}`); + episodeNum = end + 1; + } + }); + } finally { + isUpdatingEpisodeNumbers = false; + } } // Make an episode number editable for range editing