refactor: streamline channel numbering logic; consolidate loading states and variable names

This commit is contained in:
SergeantPanda 2026-03-16 18:05:33 -05:00
parent d19c53b145
commit 07863a181e

View file

@ -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={<SquarePlus size={18} />}
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}
/>
<ConfirmationDialog