QueenFruits/Mobile Commerce/lib/features/cart/presentation/providers/cart_provider.dart

44 lines
1.7 KiB
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:niogu_ecommerce_v1/core/providers/app_provider.dart';
import 'package:niogu_ecommerce_v1/features/cart/data/datasource/cart_remote_datasource_impl.dart';
import 'package:niogu_ecommerce_v1/features/cart/data/repositories/cart_repository_impl.dart';
import 'package:niogu_ecommerce_v1/features/cart/domain/entities/cart.dart';
import 'package:niogu_ecommerce_v1/features/cart/domain/repositories/i_cart_repository.dart';
import 'package:niogu_ecommerce_v1/features/cart/presentation/controllers/cart_controller.dart';
import 'package:niogu_ecommerce_v1/features/home/domain/entities/home.dart';
final cartRemoteDatasourceProvider =
Provider.autoDispose<ICartRemoteDatasource>((ref) {
final dio = ref.watch(dioProvider);
return CartRemoteDatasourceImpl(dio);
});
final cartRepositoryProvider = Provider.autoDispose<ICartRepository>((ref) {
final cartRemoteDatasource = ref.watch(cartRemoteDatasourceProvider);
return CartRepositoryImpl(cartRemoteDatasource);
});
final productBestSellerControllerProvider =
AsyncNotifierProvider.autoDispose<
ProductBestSellerController,
List<ProductItem>
>(ProductBestSellerController.new);
final cartItemControllerProvider =
StateNotifierProvider<CartItemsController, Map<String, CartItem>>(
(ref) => CartItemsController(),
);
final cartItemProvider = Provider<List<CartItem>>((ref) {
final currentOutletId = ref.watch(currentOutletIdProvider);
final cartItemController = ref.watch(cartItemControllerProvider);
return cartItemController.values
.map((cartItem) => cartItem)
.where((item) => item.outletId == currentOutletId)
.toList();
});