trackCheckoutSuccess method
Implementation
Future<RelevaResponse> trackCheckoutSuccess({
String? screenToken,
String? pageUrl,
required Cart orderedCart,
String? locale,
String? currency,
}) async {
if (!_config.enableTracking) {
return RelevaResponse(recommenders: [], banners: []);
}
// Mark cart as changed since we're explicitly tracking a paid cart
_cartChanged = true;
final request = CheckoutSuccessRequest(
screenToken: screenToken,
orderedCart: orderedCart,
);
// Set cart on request (not in storage) so it's sent with this push only
request.setCart(orderedCart);
if (pageUrl != null) request.pageUrl(pageUrl);
if (locale != null) request.locale(locale);
if (currency != null) request.currency(currency);
final response = await push(request);
// After successfully tracking checkout with cartPaid: true,
// clear cart storage to prevent stale cart data from being sent on subsequent screen views
// The backend automatically clears the cart after checkout, so we just sync local state
await clearCartStorage();
debugPrint('Cart storage automatically cleared after checkout success');
return response;
}