@@ -5,6 +5,7 @@ import { z } from 'zod';
55
66import {
77 BcProductSchema ,
8+ Product ,
89 useBcProductToVibesProduct ,
910} from './use-bc-product-to-vibes-product/use-bc-product-to-vibes-product' ;
1011
@@ -23,7 +24,10 @@ interface Props {
2324 additionalProductIds : string [ ] ;
2425}
2526
26- export function useProducts ( { collection, collectionLimit = 20 , additionalProductIds } : Props ) {
27+ export function useProducts ( { collection, collectionLimit = 20 , additionalProductIds } : Props ) : {
28+ products : Product [ ] | null ;
29+ isLoading : boolean ;
30+ } {
2731 const bcProductToVibesProduct = useBcProductToVibesProduct ( ) ;
2832 const locale = useLocale ( ) ;
2933
@@ -43,13 +47,17 @@ export function useProducts({ collection, collectionLimit = 20, additionalProduc
4347 additionalProductIds . length ? additionalProductsUrl : null ,
4448 fetcher ,
4549 ) ;
50+ const additionalProducts = useMemo (
51+ ( ) =>
52+ additionalProductIds
53+ . map ( ( id ) => additionalData ?. products . find ( ( product ) => product . entityId . toString ( ) === id ) )
54+ . filter ( ( product ) => product != null ) ,
55+ [ additionalData , additionalProductIds ] ,
56+ ) ;
4657
4758 const combinedProducts = useMemo (
48- ( ) => [
49- ...( collectionData ?. products . slice ( 0 , collectionLimit ) ?? [ ] ) ,
50- ...( additionalData ?. products ?? [ ] ) ,
51- ] ,
52- [ collectionData , additionalData , collectionLimit ] ,
59+ ( ) => [ ...( collectionData ?. products . slice ( 0 , collectionLimit ) ?? [ ] ) , ...additionalProducts ] ,
60+ [ collectionData , additionalProducts , collectionLimit ] ,
5361 ) ;
5462
5563 const isLoading = isCollectionLoading || isAdditionalLoading ;
0 commit comments