Align frontend env with validation limits and axios plugin.

Flatten share/API config keys, nest validation limits only, and move the HTTP client to plugins/axios.
This commit is contained in:
2026-10-07 00:36:16 +02:00
parent c762223200
commit 4b7f8459cb
4 changed files with 17 additions and 28 deletions
+8 -16
View File
@@ -1,29 +1,21 @@
const env = (key: string): string => { const env = (key: string): string => {
const value = import.meta.env[key]; const value = import.meta.env[key];
if (value === undefined || value === null) { if (value === undefined || value === null) {
return ''; return '';
} }
return String(value); return String(value);
}; };
const envInt = (key: string, fallback: number): number => { const envInt = (key: string): number => parseInt(env(key), 10);
const raw = env(key);
if (!raw) {
return fallback;
}
const parsed = parseInt(raw, 10);
return Number.isFinite(parsed) ? parsed : fallback;
};
export const config = { export const config = {
api: { baseUrl: env('VITE_API_BASE_URL'),
baseUrl: env('VITE_API_BASE_URL')
},
share: {
clearnetDomain: env('VITE_CLEARNET_DOMAIN'), clearnetDomain: env('VITE_CLEARNET_DOMAIN'),
onionHostname: env('VITE_ONION_HOSTNAME') onionHostname: env('VITE_ONION_HOSTNAME'),
}, validation: {
limits: { maxImagesPerUpload: envInt('VITE_VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD'),
maxImagesPerUpload: envInt('VITE_MAX_IMAGES_PER_UPLOAD', 10) uploadMaxViewsMax: envInt('VITE_VALIDATION_UPLOAD_MAX_VIEWS_MAX')
} }
}; };
-10
View File
@@ -1,10 +0,0 @@
import axios from 'axios';
import { config } from '@/config';
export const api = axios.create({
baseURL: config.api.baseUrl,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json'
}
});
+6
View File
@@ -0,0 +1,6 @@
import axios from 'axios';
import { config } from '@/config';
export const api = axios.create({
baseURL: config.baseUrl
});
+2 -1
View File
@@ -4,7 +4,8 @@ interface ImportMetaEnv {
readonly VITE_API_BASE_URL: string; readonly VITE_API_BASE_URL: string;
readonly VITE_CLEARNET_DOMAIN: string; readonly VITE_CLEARNET_DOMAIN: string;
readonly VITE_ONION_HOSTNAME: string; readonly VITE_ONION_HOSTNAME: string;
readonly VITE_MAX_IMAGES_PER_UPLOAD: string; readonly VITE_VALIDATION_UPLOAD_MAX_IMAGES_PER_UPLOAD: string;
readonly VITE_VALIDATION_UPLOAD_MAX_VIEWS_MAX: string;
} }
interface ImportMeta { interface ImportMeta {