import { addToCartApi, getCartApi, updateCartItem } from '@api'; import { AddToCartRequest, CartResponse } from '@interfaces/cart'; import { createAsyncThunk } from '@reduxjs/toolkit'; export const addToCartThunk = createAsyncThunk( 'cart/addToCart', async (addToCartRequest, { rejectWithValue }) => { try { const response = await addToCartApi(addToCartRequest); return response; } catch (error: any) { const message = error instanceof Error ? error.message : 'Failed to add to cart'; return rejectWithValue(message); } }, ); export const getCartThunk = createAsyncThunk( 'cart/getCart', async (_, { rejectWithValue }) => { try { const response = await getCartApi(); return response; } catch (error: any) { const message = error instanceof Error ? error.message : 'Failed to get cart'; return rejectWithValue(message); } }, ); export const updateCartItemThunk = createAsyncThunk< CartResponse, { productId: string; quantity: number } >( 'cart/updateCartItem', async ({ productId, quantity }, { rejectWithValue }) => { try { const response = await updateCartItem(productId, quantity); return response; } catch (error: any) { const message = error instanceof Error ? error.message : 'Failed to update cart item'; return rejectWithValue(message); } }, );