43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
const DEFAULT_API_BASE_URL = 'http://localhost:3000/api';
|
|
|
|
const normalizeHttpUrl = (value?: string | null): string | null => {
|
|
const trimmed = String(value || '').trim();
|
|
if (!trimmed) return null;
|
|
|
|
try {
|
|
const parsed = new URL(trimmed);
|
|
return `${parsed.origin}${parsed.pathname}`.replace(/\/+$/, '');
|
|
} catch {
|
|
return null;
|
|
}
|
|
};
|
|
|
|
export const getConfiguredApiBaseUrl = (): string => {
|
|
const explicitApiUrl = normalizeHttpUrl(process.env.EXPO_PUBLIC_API_URL);
|
|
if (explicitApiUrl) return explicitApiUrl;
|
|
|
|
const backendBaseUrl = normalizeHttpUrl(
|
|
process.env.EXPO_PUBLIC_BACKEND_URL || process.env.EXPO_PUBLIC_PAYMENT_SERVER_URL,
|
|
);
|
|
if (backendBaseUrl) {
|
|
return backendBaseUrl.endsWith('/api') ? backendBaseUrl : `${backendBaseUrl}/api`;
|
|
}
|
|
|
|
return DEFAULT_API_BASE_URL;
|
|
};
|
|
|
|
export const getConfiguredAssetBaseUrl = (): string => {
|
|
const apiBaseUrl = getConfiguredApiBaseUrl();
|
|
|
|
try {
|
|
const parsed = new URL(apiBaseUrl);
|
|
const pathname = parsed.pathname.replace(/\/+$/, '');
|
|
const assetPath = pathname.endsWith('/api')
|
|
? pathname.slice(0, -4)
|
|
: pathname;
|
|
return `${parsed.origin}${assetPath}`.replace(/\/+$/, '');
|
|
} catch {
|
|
return 'http://localhost:3000';
|
|
}
|
|
};
|