import apiClient from "../api-client";
import { WishlistResponse } from "../types/models/wishlist";
import { getStoreData } from "../utils/storagedata";

export default class wishlistService {
  static getWishList = async (): Promise<WishlistResponse> => {
    try {
      const response = await apiClient.get<WishlistResponse>(
        `/api/wishlist`,
        {
          headers: {
            token: await getStoreData<string>("token"),
          },
        }
      );
      return response.data;
    } catch (error) {
      console.error(`Error in wishlistService:getWishList`, error);
      throw error;
    }
  };

  static addWishList = async (id: string): Promise<WishlistResponse> => {
    try {
      const response = await apiClient.post<WishlistResponse>(
        `/api/wishlist`,
        {
          categoryId: id,
        },
        {
          headers: {
            token: await getStoreData<string>("token"),
          },
        }
      );
      return response.data;
    } catch (error) {
      console.error(`Error in wishlistService:addWishList`, error);
      throw error;
    }
  };

  static clearWishList = async (): Promise<WishlistResponse> => {
    try {
      const response = await apiClient.delete<WishlistResponse>(
        `/api/wishlist/clear`,
        {
          headers: {
            token: await getStoreData<string>("token"),
          },
        }
      );
      return response.data;
    } catch (error) {
      console.error(`Error in wishlistService:clearWishList`, error);
      throw error;
    }
  };
}
