From 07863a181e06b31e45ca1f39d1df10810211f7f4 Mon Sep 17 00:00:00 2001 From: SergeantPanda Date: Mon, 16 Mar 2026 18:05:33 -0500 Subject: [PATCH] refactor: streamline channel numbering logic; consolidate loading states and variable names --- .../src/components/tables/StreamsTable.jsx | 92 ++++++------------- 1 file changed, 30 insertions(+), 62 deletions(-) diff --git a/frontend/src/components/tables/StreamsTable.jsx b/frontend/src/components/tables/StreamsTable.jsx index af23eca9..2b0e6247 100644 --- a/frontend/src/components/tables/StreamsTable.jsx +++ b/frontend/src/components/tables/StreamsTable.jsx @@ -210,22 +210,18 @@ const StreamsTable = ({ onReady }) => { useState(false); const [numberingMode, setNumberingMode] = useState('provider'); // 'provider', 'auto', 'highest', or 'custom' const [customStartNumber, setCustomStartNumber] = useState(1); - const [bulkNextHighestNumber, setBulkNextHighestNumber] = useState(1); + const [nextHighestNumber, setNextHighestNumber] = useState(1); + const [highestNumberLoading, setHighestNumberLoading] = useState(false); const [rememberChoice, setRememberChoice] = useState(false); const [bulkSelectedProfileIds, setBulkSelectedProfileIds] = useState([]); - const [bulkHighestNumberLoading, setBulkHighestNumberLoading] = - useState(false); // Channel creation modal state (single) const [singleChannelModalOpen, setSingleChannelModalOpen] = useState(false); const [singleChannelMode, setSingleChannelMode] = useState('provider'); // 'provider', 'auto', 'highest', or 'specific' const [specificChannelNumber, setSpecificChannelNumber] = useState(1); - const [singleNextHighestNumber, setSingleNextHighestNumber] = useState(1); const [rememberSingleChoice, setRememberSingleChoice] = useState(false); const [currentStreamForChannel, setCurrentStreamForChannel] = useState(null); const [singleSelectedProfileIds, setSingleSelectedProfileIds] = useState([]); - const [singleHighestNumberLoading, setSingleHighestNumberLoading] = - useState(false); // Confirmation dialog state const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false); @@ -745,7 +741,7 @@ const StreamsTable = ({ onReady }) => { } else { // Show the modal to let user choose if (numberingMode === 'highest') { - await loadBulkNextHighestChannelNumber(); + await loadNextHighestChannelNumber(); } setChannelNumberingModalOpen(true); } @@ -760,23 +756,11 @@ const StreamsTable = ({ onReady }) => { } const response = await API.getStreams([streamId]); - if (Array.isArray(response)) { - return ( - response.find((candidate) => Number(candidate.id) === Number(streamId)) || - response[0] || - null - ); - } - - if (Array.isArray(response?.results)) { - return ( - response.results.find( - (candidate) => Number(candidate.id) === Number(streamId) - ) || null - ); - } - - return null; + return ( + response?.find( + (candidate) => Number(candidate.id) === Number(streamId) + ) ?? null + ); }; const createChannelsFromSelection = async () => { @@ -855,17 +839,15 @@ const StreamsTable = ({ onReady }) => { } }; - const loadBulkNextHighestChannelNumber = async () => { - setBulkHighestNumberLoading(true); + const loadNextHighestChannelNumber = async () => { + setHighestNumberLoading(true); try { - const nextHighestChannelNumber = await API.getNextHighestChannelNumber(); - if (Number.isFinite(nextHighestChannelNumber)) { - setBulkNextHighestNumber(nextHighestChannelNumber); - return nextHighestChannelNumber; + const n = await API.getNextHighestChannelNumber(); + if (Number.isFinite(n)) { + setNextHighestNumber(n); } - return 1; } finally { - setBulkHighestNumberLoading(false); + setHighestNumberLoading(false); } }; @@ -890,7 +872,7 @@ const StreamsTable = ({ onReady }) => { : numberingMode === 'auto' ? 0 : numberingMode === 'highest' - ? Number(bulkNextHighestNumber) + ? Number(nextHighestNumber) : Number(customStartNumber); setChannelNumberingModalOpen(false); @@ -907,7 +889,7 @@ const StreamsTable = ({ onReady }) => { return; } - await loadBulkNextHighestChannelNumber(); + await loadNextHighestChannelNumber(); }; const editStream = async (stream = null) => { @@ -1021,26 +1003,12 @@ const StreamsTable = ({ onReady }) => { // Show the modal to let user choose setCurrentStreamForChannel(stream); if (singleChannelMode === 'highest') { - await loadSingleNextHighestChannelNumber(); + await loadNextHighestChannelNumber(); } setSingleChannelModalOpen(true); } }; - const loadSingleNextHighestChannelNumber = async () => { - setSingleHighestNumberLoading(true); - try { - const nextHighestChannelNumber = await API.getNextHighestChannelNumber(); - if (Number.isFinite(nextHighestChannelNumber)) { - setSingleNextHighestNumber(nextHighestChannelNumber); - return nextHighestChannelNumber; - } - return 1; - } finally { - setSingleHighestNumberLoading(false); - } - }; - // Separate function to actually execute single channel creation const executeSingleChannelCreation = async ( stream, @@ -1094,7 +1062,7 @@ const StreamsTable = ({ onReady }) => { : singleChannelMode === 'auto' ? 0 : singleChannelMode === 'highest' - ? Number(singleNextHighestNumber) + ? Number(nextHighestNumber) : Number(specificChannelNumber); setSingleChannelModalOpen(false); @@ -1112,7 +1080,7 @@ const StreamsTable = ({ onReady }) => { return; } - await loadSingleNextHighestChannelNumber(); + await loadNextHighestChannelNumber(); }; const addStreamsToChannel = async () => { @@ -1553,7 +1521,7 @@ const StreamsTable = ({ onReady }) => { leftSection={} variant={ selectedStreamIds.length > 0 && - selectedChannelIds.length === 1 + selectedChannelIds.length === 1 ? 'light' : 'default' } @@ -1562,18 +1530,18 @@ const StreamsTable = ({ onReady }) => { p={5} color={ selectedStreamIds.length > 0 && - selectedChannelIds.length === 1 + selectedChannelIds.length === 1 ? theme.tailwind.green[5] : undefined } style={ selectedStreamIds.length > 0 && - selectedChannelIds.length === 1 + selectedChannelIds.length === 1 ? { - borderWidth: '1px', - borderColor: theme.tailwind.green[5], - color: 'white', - } + borderWidth: '1px', + borderColor: theme.tailwind.green[5], + color: 'white', + } : undefined } disabled={ @@ -1882,7 +1850,7 @@ const StreamsTable = ({ onReady }) => { mode={numberingMode} onModeChange={handleBulkNumberingModeChange} numberValue={ - numberingMode === 'highest' ? bulkNextHighestNumber : customStartNumber + numberingMode === 'highest' ? nextHighestNumber : customStartNumber } onNumberValueChange={setCustomStartNumber} rememberChoice={rememberChoice} @@ -1893,7 +1861,7 @@ const StreamsTable = ({ onReady }) => { selectedProfileIds={bulkSelectedProfileIds} onProfileIdsChange={setBulkSelectedProfileIds} channelProfiles={channelProfiles ? Object.values(channelProfiles) : []} - isHighestAvailableLoading={bulkHighestNumberLoading} + isHighestAvailableLoading={highestNumberLoading} /> {/* Single Channel Creation Modal */} @@ -1904,7 +1872,7 @@ const StreamsTable = ({ onReady }) => { onModeChange={handleSingleNumberingModeChange} numberValue={ singleChannelMode === 'highest' - ? singleNextHighestNumber + ? nextHighestNumber : specificChannelNumber } onNumberValueChange={setSpecificChannelNumber} @@ -1916,7 +1884,7 @@ const StreamsTable = ({ onReady }) => { selectedProfileIds={singleSelectedProfileIds} onProfileIdsChange={setSingleSelectedProfileIds} channelProfiles={channelProfiles ? Object.values(channelProfiles) : []} - isHighestAvailableLoading={singleHighestNumberLoading} + isHighestAvailableLoading={highestNumberLoading} />