setWishlist method

Future<void> setWishlist(
  1. Iterable<WishlistProduct> wishlistProducts
)

Set wishlist Automatically sends a push request with updated cart and wishlist state if wishlist was previously initialized

Implementation

Future<void> setWishlist(
  final Iterable<WishlistProduct> wishlistProducts,
) async {
  final storage = HiveStorageService.instance;
  List<String> currentWishlist = List<String>.from(
    wishlistProducts.map((product) => jsonEncode(product.toMap())),
  );
  List<String>? previousWishlist = await storage.getWishlistData();

  DeepCollectionEquality equality = DeepCollectionEquality();

  if (previousWishlist == null ||
      !equality.equals(currentWishlist, previousWishlist)) {
    await storage.setWishlistData(currentWishlist);
    _wishlistChanged = true;

    // Only send automatic push if wishlist was already initialized (not first load)
    if (_wishlistInitialized) {
      // Send push with current state (cart + wishlist) without page context
      await trackScreenView();
      debugPrint('Automatic wishlist state push sent');
    } else {
      _wishlistInitialized = true;
      debugPrint('Wishlist initialized (no automatic push on first load)');
    }
  }

  // Mark as initialized if wishlist data didn't change but not yet initialized
  if (!_wishlistInitialized) {
    _wishlistInitialized = true;
    debugPrint('Wishlist initialized with existing data (no automatic push on first load)');
  }
}