trackCheckoutSuccess method
Future<RelevaResponse>
trackCheckoutSuccess(
{ - String? screenToken,
- String? pageUrl,
- required Cart orderedCart,
- String? userEmail,
- String? userPhoneNumber,
- String? userFirstName,
- String? userLastName,
- DateTime? userRegisteredAt,
- String? locale,
- String? currency,
})
Implementation
Future<RelevaResponse> trackCheckoutSuccess({
String? screenToken,
String? pageUrl,
required Cart orderedCart,
String? userEmail,
String? userPhoneNumber,
String? userFirstName,
String? userLastName,
DateTime? userRegisteredAt,
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,
userEmail: userEmail,
userPhoneNumber: userPhoneNumber,
userFirstName: userFirstName,
userLastName: userLastName,
userRegisteredAt: userRegisteredAt,
);
// 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;
}