From 8bb4e6097270918f079192f0b533d0096ff681aa Mon Sep 17 00:00:00 2001 From: chrisk325 Date: Sat, 14 Mar 2026 23:30:52 +0530 Subject: [PATCH] fix edge case people search and AI catalogs + catalog naming scheme --- src/screens/SearchScreen.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/screens/SearchScreen.tsx b/src/screens/SearchScreen.tsx index d730abb2..e27337d0 100644 --- a/src/screens/SearchScreen.tsx +++ b/src/screens/SearchScreen.tsx @@ -515,7 +515,14 @@ const SearchScreen = () => { setResults(prev => { if (!isMounted.current) return prev; - const getRank = (id: string) => addonOrderRankRef.current[id] ?? Number.MAX_SAFE_INTEGER; + // Use catalogIndex from the section for deterministic ordering. + // Falls back to addonOrderRankRef for legacy single-catalog sections. + const getRank = (section: AddonSearchResults) => { + if (section.catalogIndex !== undefined) return section.catalogIndex; + if (addonOrderRankRef.current[section.addonId] !== undefined) return addonOrderRankRef.current[section.addonId] * 1000; + const baseAddonId = section.addonId.includes('||') ? section.addonId.split('||')[0] : section.addonId; + return (addonOrderRankRef.current[baseAddonId] ?? Number.MAX_SAFE_INTEGER - 1) * 1000 + 500; + }; const existingIndex = prev.byAddon.findIndex(s => s.addonId === section.addonId); if (existingIndex >= 0) { @@ -524,10 +531,10 @@ const SearchScreen = () => { return { byAddon: copy, allResults: prev.allResults }; } - const insertRank = getRank(section.addonId); + const insertRank = getRank(section); let insertAt = prev.byAddon.length; for (let i = 0; i < prev.byAddon.length; i++) { - if (getRank(prev.byAddon[i].addonId) > insertRank) { + if (getRank(prev.byAddon[i]) > insertRank) { insertAt = i; break; }