From 02df0925f31236d2b851d62899c56a4c0e88e8a8 Mon Sep 17 00:00:00 2001 From: Ishita Gambhir Date: Mon, 23 Jun 2025 15:10:04 +0530 Subject: [PATCH 1/8] add support for multiple display proposition in Optimize --- .../app/OptimizeView.tsx | 29 +++++++++++++++++++ packages/optimize/__tests__/OptimizeTests.ts | 7 +++++ .../optimize/RCTAEPOptimizeModule.java | 26 +++++++++++++++++ packages/optimize/ios/src/RCTAEPOptimize.m | 26 +++++++++++++++++ packages/optimize/src/Optimize.ts | 13 ++++++++- tests/jest/setup.ts | 3 +- 6 files changed, 102 insertions(+), 2 deletions(-) diff --git a/apps/AEPSampleAppNewArchEnabled/app/OptimizeView.tsx b/apps/AEPSampleAppNewArchEnabled/app/OptimizeView.tsx index a28ea79b8..329ecf1f9 100644 --- a/apps/AEPSampleAppNewArchEnabled/app/OptimizeView.tsx +++ b/apps/AEPSampleAppNewArchEnabled/app/OptimizeView.tsx @@ -15,6 +15,7 @@ import { Optimize, DecisionScope, Proposition, + Offer, } from '@adobe/react-native-aepoptimize'; import {WebView} from 'react-native-webview'; import styles from '../styles/styles'; @@ -118,6 +119,28 @@ export default () => { }, }); + const multipleOffersDisplayed = async () => { + const propositionsMap: Map = await Optimize.getPropositions(decisionScopes); + const offersArray: Array = []; + + propositionsMap.forEach((proposition: Proposition) => { + if (proposition && proposition.items) { + proposition.items.forEach((offer) => { + offersArray.push(offer); + }); + } + }); + + console.log('Extracted offers:', offersArray); + + if (offersArray.length > 0) { + Optimize.multipleOffersDisplayed(offersArray); + console.log(`Called multipleOffersDisplayed with ${offersArray.length} offers`); + } else { + console.log('No offers found to display'); + } + }; + const renderTargetOffer = () => { if (targetProposition?.items) { if (targetProposition.items[0].format === TARGET_OFFER_TYPE_JSON) { @@ -338,6 +361,12 @@ export default () => { onPress={clearCachedProposition} /> + +