CORS error cleaned
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
// src/lib/api.js
|
||||
const API_BASE = import.meta.env.PUBLIC_API_URL;
|
||||
|
||||
// 1. Osiguravamo da API_BASE uvijek završava s točno jednom kosom crtom
|
||||
const RAW_BASE = import.meta.env.PUBLIC_API_URL;
|
||||
const API_BASE = RAW_BASE.endsWith('/') ? RAW_BASE : `${RAW_BASE}/`;
|
||||
|
||||
/**
|
||||
* POMOĆNA FUNKCIJA:端 Dohvaća token i postavlja Headere
|
||||
@@ -66,42 +69,41 @@ async function handleResponse(res) {
|
||||
|
||||
// --- RUTE ---
|
||||
export const routes = {
|
||||
// Autentifikacija
|
||||
login: () => '/token/',
|
||||
trenutniKorisnik: () => '/users/me/',
|
||||
// Autentifikacija (Maknute početne kose crte!)
|
||||
login: () => 'token/',
|
||||
trenutniKorisnik: () => 'users/me/',
|
||||
|
||||
// Radni nalozi
|
||||
radniNalozi: (params = {}) => {
|
||||
const baseUrl = '/operativa/radni-nalozi/';
|
||||
// Čistimo null i undefined vrijednosti iz filtera
|
||||
const baseUrl = 'operativa/radni-nalozi/';
|
||||
const cleanParams = Object.fromEntries(
|
||||
Object.entries(params).filter(([_, v]) => v != null)
|
||||
);
|
||||
const queryString = new URLSearchParams(cleanParams).toString();
|
||||
return queryString ? `${baseUrl}?${queryString}` : baseUrl;
|
||||
},
|
||||
radniNalogDetalji: (id) => `/operativa/radni-nalozi/${id}/`,
|
||||
sljedeciBrojNaloga: () => '/operativa/radni-nalozi/sljedeci-broj/',
|
||||
radniNalogDetalji: (id) => `operativa/radni-nalozi/${id}/`,
|
||||
sljedeciBrojNaloga: () => 'operativa/radni-nalozi/sljedeci-broj/',
|
||||
|
||||
// Putni nalozi i logistika
|
||||
putniNalozi: () => '/operativa/putni-nalozi/',
|
||||
putniNalozi: () => 'operativa/putni-nalozi/',
|
||||
|
||||
// Vozila i strojevi (Fleet modul)
|
||||
vozila: () => '/fleet/vozila/', // USKLAĐENO: Prebačeno pod zajednički /fleet/ namespace
|
||||
vozila: () => 'fleet/vozila/',
|
||||
strojevi: (vlasnikId = null) => {
|
||||
const baseUrl = '/fleet/strojevi/';
|
||||
const baseUrl = 'fleet/strojevi/';
|
||||
if (vlasnikId) return `${baseUrl}?vlasnik=${vlasnikId}`;
|
||||
return baseUrl;
|
||||
},
|
||||
strojDetalji: (id) => `/fleet/strojevi/${id}/`,
|
||||
strojDetalji: (id) => `fleet/strojevi/${id}/`,
|
||||
|
||||
// Kupci / Klijenti
|
||||
kupciSvi: () => '/kupci/svi/',
|
||||
kupacDetalji: (id) => `/kupci/svi/${id}/`,
|
||||
kupciSvi: () => 'kupci/svi/',
|
||||
kupacDetalji: (id) => `kupci/svi/${id}/`,
|
||||
|
||||
// Kalendar i raspored
|
||||
mojRaspored: () => '/kalendar/moj-raspored/',
|
||||
kalendarDogadaji: () => '/kalendar/dogadaji/'
|
||||
mojRaspored: () => 'kalendar/moj-raspored/',
|
||||
kalendarDogadaji: () => 'kalendar/dogadaji/'
|
||||
};
|
||||
|
||||
// --- API METODE ---
|
||||
@@ -418,16 +420,20 @@ export async function fetchPutniNaloziData() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Dohvaća sljedeći slobodni broj radnog naloga s backenda
|
||||
* Osigurano protiv duplih kosih crta i preflight redirecta
|
||||
*/
|
||||
export async function fetchSljedeciBrojNaloga() {
|
||||
try {
|
||||
// Koristimo novu rutu iz routes objekta
|
||||
const url = `${API_BASE}${routes.sljedeciBrojNaloga()}`;
|
||||
|
||||
// Pametno spajanje baze i rute (isto kao u ostalim očišćenim metodama)
|
||||
const base = API_BASE.endsWith('/') ? API_BASE : `${API_BASE}/`;
|
||||
const ruta = routes.sljedeciBrojNaloga();
|
||||
const url = `${base}${ruta}`;
|
||||
|
||||
const res = await fetch(url, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
headers: getAuthHeaders() // Koristi centralizirane headere umjesto sirovog objekta
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
|
||||
Reference in New Issue
Block a user