Files
ember-market-frontend/lib/services/shipping-service.ts
g fe01f31538
Some checks failed
Build Frontend / build (push) Failing after 7s
Refactor UI imports and update component paths
Replaces imports from 'components/ui' with 'components/common' across the app and dashboard pages, and updates model and API imports to use new paths under 'lib'. Removes redundant authentication checks from several dashboard pages. Adds new dashboard components and utility files, and reorganizes hooks and services into the 'lib' directory for improved structure.
2026-01-13 05:02:13 +00:00

130 lines
3.2 KiB
TypeScript

import { clientFetch } from '@/lib/api/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;