From 44f9aa5c35af6a96c4c6116595253c55642bf04a Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Sun, 18 Jan 2026 10:39:38 +0530 Subject: [PATCH] Auto-select first stream sort fix --- LibTorrent | 1 + iTorrent | 1 + src/screens/streams/useStreamsScreen.ts | 11 ++++++----- 3 files changed, 8 insertions(+), 5 deletions(-) create mode 160000 LibTorrent create mode 160000 iTorrent diff --git a/LibTorrent b/LibTorrent new file mode 160000 index 00000000..eb1c7139 --- /dev/null +++ b/LibTorrent @@ -0,0 +1 @@ +Subproject commit eb1c71397b8716b97fcd375fd646e96c89632a5e diff --git a/iTorrent b/iTorrent new file mode 160000 index 00000000..c27088b0 --- /dev/null +++ b/iTorrent @@ -0,0 +1 @@ +Subproject commit c27088b0ac36bf9bb30fae34dc36db1231263bfd diff --git a/src/screens/streams/useStreamsScreen.ts b/src/screens/streams/useStreamsScreen.ts index fc83da61..993cfdb6 100644 --- a/src/screens/streams/useStreamsScreen.ts +++ b/src/screens/streams/useStreamsScreen.ts @@ -234,25 +234,26 @@ export const useStreamsScreen = () => { return 0; }; - const allStreams: Array<{ stream: Stream; quality: number; providerPriority: number }> = []; + const allStreams: Array<{ stream: Stream; quality: number; providerPriority: number; originalIndex: number }> = []; Object.entries(streamsData).forEach(([addonId, { streams }]) => { const qualityFiltered = filterByQuality(streams); const filteredStreams = filterByLanguage(qualityFiltered); - filteredStreams.forEach(stream => { + filteredStreams.forEach((stream, index) => { const quality = getQualityNumeric(stream.name || stream.title); const providerPriority = getProviderPriority(addonId); - allStreams.push({ stream, quality, providerPriority }); + allStreams.push({ stream, quality, providerPriority, originalIndex: index }); }); }); if (allStreams.length === 0) return null; + // Sort primarily by provider priority, then respect the addon's internal order (originalIndex) + // This ensures if an addon lists 1080p before 4K, we pick 1080p allStreams.sort((a, b) => { - if (a.quality !== b.quality) return b.quality - a.quality; if (a.providerPriority !== b.providerPriority) return b.providerPriority - a.providerPriority; - return 0; + return a.originalIndex - b.originalIndex; }); logger.log(