Skip to main content

Add to wishlist

Wishlist integration connects the Bambuser player's wishlist UI to your app's native wishlist. There are five events to handle, covering the full wishlist lifecycle. All of them arrive through the onEvent callback on <BambuserVideoView />.

Event payloads differ slightly between iOS and Android. The examples below normalize both shapes. See Events › Platform differences.

1. Provide Wishlist Status​

When the player loads, it fires provide-wishlist-status to learn which products are already in the user's wishlist. Respond by calling invoke('updateWishlistStatus', ...) with a JSON map of sku → boolean.

import { Platform } from 'react-native';

function handleEvent(e) {
const { type, data } = e.nativeEvent;

if (type === 'provide-wishlist-status') {
const products = Platform.OS === 'ios'
? data?.event?.products
: data?.products;

const statuses = {};
for (const product of products ?? []) {
const sku = product.ref;
if (sku) {
statuses[sku] = YourWishlistService.isInWishlist(sku);
}
}

playerRef.current?.invoke(
'updateWishlistStatus',
JSON.stringify({ statuses }),
);
}
}

2. Add to Wishlist​

Fires when a user taps the wishlist button on a product. Add the item to your wishlist and respond with notify.

const callbackKey = e.nativeEvent.callbackKey ?? data?.callbackKey;

if (type === 'add-to-wishlist' && callbackKey) {
const eventData = Platform.OS === 'ios' ? data?.event : data;
const sku = eventData?.ref;

YourWishlistService.add(sku).then(() => {
playerRef.current?.notify(callbackKey, { success: true, sku });
});
}

3. Remove from Wishlist​

Fires when a user taps the wishlist button again to remove a previously added product.

if (type === 'remove-from-wishlist' && callbackKey) {
const eventData = Platform.OS === 'ios' ? data?.event : data;
const sku = eventData?.ref;

YourWishlistService.remove(sku).then(() => {
playerRef.current?.notify(callbackKey, { success: true, sku });
});
}

4. Open Wishlist​

Fires when a user taps View Wishlist. Navigate to your app's native wishlist screen.

if (type === 'open-wishlist') {
navigateToWishlist();
}

5. Open Wishlist Login​

Fires when an unauthenticated user attempts to wishlist a product. Present a login prompt, then respond with notify once the flow completes.

if (type === 'open-wishlist-login' && callbackKey) {
showLoginPrompt().then((success) => {
playerRef.current?.notify(callbackKey, { success });
});
}

Event Summary​

EventHas callbackKeyResponse
provide-wishlist-statusNoinvoke('updateWishlistStatus', jsonString)
add-to-wishlistYesnotify(callbackKey, { success: true, sku })
remove-from-wishlistYesnotify(callbackKey, { success: true, sku })
open-wishlistNoNavigate to wishlist screen.
open-wishlist-loginYesShow login, then notify(callbackKey, { success: true }).