@@ -31,8 +31,10 @@ import { searchFilterSelector } from 'app/search/items/item-search-filter';
3131import { useSetSetting } from 'app/settings/hooks' ;
3232import { AppIcon , disabledIcon , redoIcon , refreshIcon , undoIcon } from 'app/shell/icons' ;
3333import { querySelector , useIsPhonePortrait } from 'app/shell/selectors' ;
34+ import { filterMap } from 'app/utils/collections' ;
3435import { emptyObject } from 'app/utils/empty' ;
3536import { isClassCompatible , itemCanBeEquippedBy } from 'app/utils/item-utils' ;
37+ import { errorLog } from 'app/utils/log' ;
3638import { getMaxParallelCores } from 'app/utils/parallel-cores' ;
3739import { timerDurationFromMs } from 'app/utils/time' ;
3840import { DestinyClass } from 'bungie-api-ts/destiny2' ;
@@ -306,7 +308,20 @@ export default memo(function LoadoutBuilder({
306308 statMods : processed . statMods ,
307309 } ;
308310 }
309- return resultSets && sortGeneratedSets ( resultSets . map ( hydrateArmorSet ) , desiredStatRanges ) ;
311+ return (
312+ resultSets &&
313+ sortGeneratedSets (
314+ filterMap ( resultSets , ( s ) => {
315+ try {
316+ return hydrateArmorSet ( s ) ;
317+ } catch ( e ) {
318+ errorLog ( 'loadout optimizer' , 'Error hydrating armor set' , e ) ;
319+ return undefined ;
320+ }
321+ } ) ,
322+ desiredStatRanges ,
323+ )
324+ ) ;
310325 } , [ desiredStatRanges , resultSets , armorItems ] ) ;
311326
312327 useEffect ( ( ) => hideItemPicker ( ) , [ hideItemPicker , selectedStore . classType ] ) ;
0 commit comments