This commit is contained in:
NotII
2025-04-07 19:25:24 +01:00
parent 7f7dd78818
commit 2f48ee38c2
102 changed files with 1825 additions and 761 deletions

View File

@@ -0,0 +1,130 @@
import { clientFetch } from '../api-client';
/**
* Shipping service - Handles shipping options
* Replaces the old shippingHelper.ts
*/
export interface ShippingOption {
_id?: string;
name: string;
price: number;
createdAt?: string;
updatedAt?: string;
}
export interface ShippingOptionsResponse {
success: boolean;
data: ShippingOption[];
}
// Get all shipping options
export const getShippingOptions = async (authToken?: string): Promise<ShippingOption[]> => {
console.log('Fetching shipping options');
const options: RequestInit = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
};
if (authToken) {
options.headers = {
...options.headers,
'Authorization': `Bearer ${authToken}`,
};
}
const response = await clientFetch<ShippingOptionsResponse>('/api/shipping', options);
return response.data || [];
};
// Get a single shipping option
export const getShippingOption = async (id: string, authToken?: string): Promise<ShippingOption> => {
const options: RequestInit = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
};
if (authToken) {
options.headers = {
...options.headers,
'Authorization': `Bearer ${authToken}`,
};
}
const response = await clientFetch<{success: boolean, data: ShippingOption}>(`/api/shipping/${id}`, options);
return response.data;
};
// Create a new shipping option
export const createShippingOption = async (data: ShippingOption, authToken?: string) => {
const options: RequestInit = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
};
if (authToken) {
options.headers = {
...options.headers,
'Authorization': `Bearer ${authToken}`,
};
}
return clientFetch<{success: boolean, data: ShippingOption}>('/api/shipping', options);
};
// Update a shipping option
export const updateShippingOption = async (id: string, data: ShippingOption, authToken?: string) => {
const options: RequestInit = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
};
if (authToken) {
options.headers = {
...options.headers,
'Authorization': `Bearer ${authToken}`,
};
}
return clientFetch<{success: boolean, data: ShippingOption}>(`/api/shipping/${id}`, options);
};
// Delete a shipping option
export const deleteShippingOption = async (id: string, authToken?: string) => {
const options: RequestInit = {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
};
if (authToken) {
options.headers = {
...options.headers,
'Authorization': `Bearer ${authToken}`,
};
}
return clientFetch<{success: boolean}>(`/api/shipping/${id}`, options);
};
// Compatibility with old shippingHelper functions
export const fetchShippingMethods = getShippingOptions;
export const addShippingMethod = createShippingOption;
export const updateShippingMethod = updateShippingOption;
export const deleteShippingMethod = deleteShippingOption;
// Types for backward compatibility
export type ShippingMethod = ShippingOption;
export type ShippingData = ShippingOption;