import { usePublicApi } from '..'; import type { ApiParams, CreateProductReviewMediaResponse, CreateProductReviewResponse, ProductReviewRequest, ProductReviewResponse, ReviewConditionFields, ReviewFields, ReviewSortFields, StoreReviewRequest, } from '../types'; export function listProductReview( options?: Pick< ApiParams, 'condition' | 'order' | 'fields' | 'limit' | 'offset' >, ) { return usePublicApi< ProductReviewResponse, ReviewFields, ReviewSortFields, ReviewConditionFields >({ endpoint: '/review/product', method: 'GET', params: options, }); } export function createProductReview( productId: number, payload: ProductReviewRequest, ) { return usePublicApi({ endpoint: `/review/product/${productId}`, method: 'POST', payload, }); } export function createImageProductReview( productReviewId: number, files: File[] ) { const formData = new FormData(); files.forEach((file, index) => { formData.append(`medias[${index}]`, file); }); return usePublicApi>({ endpoint: `/review/${productReviewId}/product/media`, method: 'POST', payload: formData, }); } export function listStoreReview() { return usePublicApi({ endpoint: '/review/sales-channel', method: 'GET', }); } export function createStoreReview(payload: StoreReviewRequest) { return usePublicApi({ endpoint: '/review/sales-channel', method: 'POST', payload }); } export function listCustomerReview( options?: Pick< ApiParams, 'condition' | 'order' | 'fields' | 'limit' | 'offset' >, ) { return usePublicApi< ProductReviewResponse, ReviewFields, ReviewSortFields, ReviewConditionFields >({ endpoint: '/review/product/customer', method: 'GET', params: options, }); }