import { sliceNames } from "@/src/constants/redux/redux";
import { createSlice, PayloadAction } from "@reduxjs/toolkit";

interface WishlistState {
    items: any[];
    addingWishlistId: string | null;
}

const initialState: WishlistState = {
    items: [],
    addingWishlistId: null,
};

const wishlistSlice = createSlice({
    name: sliceNames.wishlist,
    initialState,
    reducers: {
        setWishlist(state, action: PayloadAction<any[]>) {
            state.items = action.payload;
        },

        addWishlistItem(state, action: PayloadAction<any>) {
            const exists = state.items.find(
                (item) => item._id === action.payload._id
            );

            if (!exists) {
                state.items.push(action.payload);
            }
        },

        removeWishlistItem(state, action: PayloadAction<string>) {
            state.items = state.items.filter(
                (item) => item._id !== action.payload
            );
        },

        setAddingWishlistLoading(
            state,
            action: PayloadAction<string | null>
        ) {
            state.addingWishlistId = action.payload;
        },
    },
});

export const {
    setWishlist,
    addWishlistItem,
    removeWishlistItem,
    setAddingWishlistLoading,
} = wishlistSlice.actions;

export default wishlistSlice.reducer;