import { OrderRequest, PaymentMethodsResponse, PlaceOrderResponse, Order, } from '@interfaces'; import { createAsyncThunk } from '@reduxjs/toolkit'; import { getAllPaymentMethodsApi, getOrderByIdApi, getOrderHistoryApi, placeOrderApi, } from '@api'; export const getAllPaymentMethodsThunk = createAsyncThunk< PaymentMethodsResponse, void, { rejectValue: string } >('paymentMethods/getAll', async (_, { rejectWithValue }) => { try { const response = await getAllPaymentMethodsApi(); // console.log(response.data); return response; } catch (error: any) { return rejectWithValue( error.response?.data?.error || 'Failed to get payment methods', ); } }); export const placeOrderThunk = createAsyncThunk< PlaceOrderResponse, OrderRequest, { rejectValue: string } >('orders/placeOrder', async (payload: OrderRequest, { rejectWithValue }) => { try { const response = await placeOrderApi(payload); return response; } catch (error: any) { return rejectWithValue( error.response?.data?.error || 'Failed to place order', ); } }); export const getOrderHistoryThunk = createAsyncThunk< Order[], void, { rejectValue: string } >('orders/getOrderHistory', async (_, { rejectWithValue }) => { try { const response = await getOrderHistoryApi(); return response; } catch (error: any) { return rejectWithValue( error.response?.data?.error || 'Failed to get order history', ); } }); export const getOrderByIdThunk = createAsyncThunk< Order, string, { rejectValue: string } >('orders/getOrderById', async (orderId: string, { rejectWithValue }) => { try { const response = await getOrderByIdApi(orderId); return response; } catch (error: any) { return rejectWithValue( error.response?.data?.error || 'Failed to get order', ); } });