import { createSlice } from '@reduxjs/toolkit';

import { deliveryOptions } from '@/constants/checkout';
import { sliceNames } from '@/src/constants/redux/redux';

interface CheckoutDetailsProps {
    deliveryOption: string;
    isPickupStore: boolean;
}

const initialState: CheckoutDetailsProps = {
    deliveryOption: deliveryOptions.home,
    isPickupStore: false
};

const checkoutSlice = createSlice({
    name: sliceNames.checkout,
    initialState,
    reducers: {
        setCheckout: (state, action) => {
            if (action.payload === null) {
                return initialState;
            }
            return { ...state, ...action.payload };
        },
        setDeliveryOption: (state, action) => {
            state.deliveryOption = action.payload;
        },
        setIsPickupStore: (state, action) => {
            state.isPickupStore = action.payload;
        },
        clearCheckout: () => initialState,
    },
});

export const { setCheckout, setDeliveryOption, setIsPickupStore, clearCheckout } = checkoutSlice.actions;
export default checkoutSlice.reducer;