@@ -5,7 +5,7 @@ import { AppContext } from "../../mod.ts";
55import { batch } from "../../utils/batch.ts" ;
66import { isFilterParam , toSegmentParams } from "../../utils/legacy.ts" ;
77import { getSegmentFromBag , withSegmentCookie } from "../../utils/segment.ts" ;
8- import { pickSku } from "../../utils/transform.ts" ;
8+ import { pickSku , toProduct } from "../../utils/transform.ts" ;
99import type { CrossSellingType } from "../../utils/types.ts" ;
1010import productList from "./productList.ts" ;
1111
@@ -95,6 +95,24 @@ async function loader(
9595 ) ;
9696 }
9797
98+ const inStock = ( p : Product ) =>
99+ p . offers ?. offers . find ( ( o ) =>
100+ o . availability === "https://schema.org/InStock"
101+ ) ;
102+
103+ if ( ctx . advancedConfigs ?. doNotFetchVariantsForRelatedProducts ) {
104+ const toProducts = products . slice ( 0 , count ) . map ( ( p ) =>
105+ toProduct ( p , p . items [ 0 ] , 0 , {
106+ baseUrl : req . url ,
107+ priceCurrency : segment ?. payload ?. currencyCode ?? "BRL" ,
108+ } )
109+ ) ;
110+ if ( hideUnavailableItems ) {
111+ return toProducts . filter ( inStock )
112+ }
113+ return toProducts ;
114+ }
115+
98116 // unique Ids
99117 const relatedIds = [ ...new Set (
100118 products . slice ( 0 , count ) . map ( ( p ) => pickSku ( p ) . itemId ) ,
@@ -127,10 +145,6 @@ async function loader(
127145 } ) ;
128146
129147 if ( hideUnavailableItems && relatedProducts ) {
130- const inStock = ( p : Product ) =>
131- p . offers ?. offers . find ( ( o ) =>
132- o . availability === "https://schema.org/InStock"
133- ) ;
134148
135149 return relatedProducts . filter ( inStock ) ;
136150 }
0 commit comments