ugh
This commit is contained in:
@@ -27,24 +27,16 @@ export async function fetchClient<T>(
|
||||
): Promise<T> {
|
||||
const { method = 'GET', body, headers = {}, ...rest } = options;
|
||||
|
||||
// Get the base API URL from environment or fallback
|
||||
const apiUrl = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001';
|
||||
|
||||
// Ensure the endpoint starts with a slash
|
||||
// Always use the Next.js API proxy by creating a path starting with /api/
|
||||
// This ensures requests go through Next.js rewrites
|
||||
const normalizedEndpoint = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
|
||||
|
||||
// For the specific case of internal-api.inboxi.ng - remove duplicate /api
|
||||
// Construct the URL to always use the Next.js API routes
|
||||
let url;
|
||||
if (apiUrl.includes('internal-api.inboxi.ng')) {
|
||||
// Special case for internal-api.inboxi.ng
|
||||
if (normalizedEndpoint.startsWith('/api/')) {
|
||||
url = `${apiUrl}${normalizedEndpoint.substring(4)}`; // Remove the /api part
|
||||
} else {
|
||||
url = `${apiUrl}${normalizedEndpoint}`;
|
||||
}
|
||||
if (normalizedEndpoint.startsWith('/api/')) {
|
||||
url = normalizedEndpoint; // Already has /api/ prefix
|
||||
} else {
|
||||
// Normal case for other environments
|
||||
url = `${apiUrl}${normalizedEndpoint}`;
|
||||
url = `/api${normalizedEndpoint}`; // Add /api/ prefix
|
||||
}
|
||||
|
||||
// Get auth token from cookies
|
||||
|
||||
@@ -14,15 +14,17 @@ export async function clientFetch(url: string, options: RequestInit = {}): Promi
|
||||
...options.headers,
|
||||
};
|
||||
|
||||
// Ensure the url doesn't start with a slash if it's going to be appended to a URL that ends with one
|
||||
const cleanUrl = url.startsWith('/') ? url.substring(1) : url;
|
||||
const baseUrl = process.env.NEXT_PUBLIC_API_URL || '/api';
|
||||
// Always use the Next.js API proxy for consistent routing
|
||||
// Format the URL to ensure it has the /api prefix
|
||||
let fullUrl;
|
||||
if (url.startsWith('/api/')) {
|
||||
fullUrl = url; // Already has /api/ prefix
|
||||
} else {
|
||||
// Add /api prefix if not already present
|
||||
const cleanUrl = url.startsWith('/') ? url : `/${url}`;
|
||||
fullUrl = `/api${cleanUrl}`;
|
||||
}
|
||||
|
||||
// Ensure there's only one slash between the base URL and endpoint
|
||||
const fullUrl = baseUrl.endsWith('/')
|
||||
? `${baseUrl}${cleanUrl}`
|
||||
: `${baseUrl}/${cleanUrl}`;
|
||||
|
||||
const res = await fetch(fullUrl, {
|
||||
...options,
|
||||
headers,
|
||||
|
||||
@@ -91,7 +91,8 @@ export const updateProductStock = async (
|
||||
authToken: string
|
||||
) => {
|
||||
try {
|
||||
const url = `${process.env.NEXT_PUBLIC_API_URL}/stock/${productId}`;
|
||||
// Use Next.js API proxy to ensure request goes through rewrites
|
||||
const url = `/api/stock/${productId}`;
|
||||
return await fetchData(url, {
|
||||
method: "PUT",
|
||||
headers: {
|
||||
|
||||
@@ -29,10 +29,18 @@ export const apiRequest = async <T = any>(endpoint: string, method: string = "GE
|
||||
options.body = JSON.stringify(body);
|
||||
}
|
||||
|
||||
const API_URL = process.env.NEXT_PUBLIC_API_URL;
|
||||
if (!API_URL) throw new Error("NEXT_PUBLIC_API_URL is not set in environment variables");
|
||||
// Always use the Next.js API proxy to ensure all requests go through rewrites
|
||||
// Format the endpoint to ensure it has the /api prefix
|
||||
let url;
|
||||
if (endpoint.startsWith('/api/')) {
|
||||
url = endpoint; // Already has /api/ prefix
|
||||
} else {
|
||||
// Add /api prefix and ensure no duplicate slashes
|
||||
const cleanEndpoint = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
|
||||
url = `/api${cleanEndpoint}`;
|
||||
}
|
||||
|
||||
const res = await fetchData(`${API_URL}${endpoint}`, options);
|
||||
const res = await fetchData(url, options);
|
||||
|
||||
if (!res) {
|
||||
const errorResponse = await res.json().catch(() => null);
|
||||
|
||||
Reference in New Issue
Block a user