fix(xml-rb-systems): migrar fetch directo a api.post para silent refresh automático
Los 4 métodos XML RB Systems usaban fetch() con localStorage, bypaseando el fetchApi() de $lib/api que tiene 401 → silent refresh → retry automático. Ahora el token expirado se renueva de forma transparente sin interrumpir al usuario. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { api } from '$lib/api';
|
||||||
|
|
||||||
const BASE_URL = import.meta.env.VITE_API_URL || '';
|
const BASE_URL = import.meta.env.VITE_API_URL || '';
|
||||||
|
|
||||||
@@ -166,71 +167,27 @@ export const reportsTransmissionApi = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
triggerXmlRbSystemsImpoTemp: async (request: { invoice_numbers: string[]; entry_port?: string; exit_port?: string }) => {
|
triggerXmlRbSystemsImpoTemp: async (request: { invoice_numbers: string[]; entry_port?: string; exit_port?: string }) => {
|
||||||
const endpoint = `${BASE_URL}/v1/a76/reports/xml-rb-systems/importacion-temporal/generate`;
|
const result = await api.post('/v1/a76/reports/xml-rb-systems/importacion-temporal/generate', request);
|
||||||
const token = localStorage.getItem('access_token');
|
if (result.error || !result.data) throw new Error(result.error || 'Error al generar XML RB Systems (importación temporal)');
|
||||||
const response = await fetch(endpoint, {
|
return result.data;
|
||||||
method: 'POST',
|
|
||||||
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify(request)
|
|
||||||
});
|
|
||||||
if (!response.ok) {
|
|
||||||
if (response.status === 401) throw new Error('Sesión expirada. Por favor recarga la página e inicia sesión nuevamente.');
|
|
||||||
let errorMessage = 'Error al generar XML RB Systems (importación temporal)';
|
|
||||||
try { errorMessage = (await response.json()).detail || errorMessage; } catch (e) {}
|
|
||||||
throw new Error(errorMessage);
|
|
||||||
}
|
|
||||||
return await response.json();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
triggerXmlRbSystemsImpoDef: async (request: { invoice_numbers: string[]; entry_port?: string; exit_port?: string }) => {
|
triggerXmlRbSystemsImpoDef: async (request: { invoice_numbers: string[]; entry_port?: string; exit_port?: string }) => {
|
||||||
const endpoint = `${BASE_URL}/v1/a76/reports/xml-rb-systems/importacion-definitiva/generate`;
|
const result = await api.post('/v1/a76/reports/xml-rb-systems/importacion-definitiva/generate', request);
|
||||||
const token = localStorage.getItem('access_token');
|
if (result.error || !result.data) throw new Error(result.error || 'Error al generar XML RB Systems (importación definitiva)');
|
||||||
const response = await fetch(endpoint, {
|
return result.data;
|
||||||
method: 'POST',
|
|
||||||
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify(request)
|
|
||||||
});
|
|
||||||
if (!response.ok) {
|
|
||||||
if (response.status === 401) throw new Error('Sesión expirada. Por favor recarga la página e inicia sesión nuevamente.');
|
|
||||||
let errorMessage = 'Error al generar XML RB Systems (importación definitiva)';
|
|
||||||
try { errorMessage = (await response.json()).detail || errorMessage; } catch (e) {}
|
|
||||||
throw new Error(errorMessage);
|
|
||||||
}
|
|
||||||
return await response.json();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
triggerXmlRbSystemsImpo: async (request: { invoice_numbers: string[]; entry_port?: string; exit_port?: string }) => {
|
triggerXmlRbSystemsImpo: async (request: { invoice_numbers: string[]; entry_port?: string; exit_port?: string }) => {
|
||||||
const endpoint = `${BASE_URL}/v1/a76/reports/xml-rb-systems/importacion/generate`;
|
const result = await api.post('/v1/a76/reports/xml-rb-systems/importacion/generate', request);
|
||||||
const token = localStorage.getItem('access_token');
|
if (result.error || !result.data) throw new Error(result.error || 'Error al generar XML RB Systems (importación)');
|
||||||
const response = await fetch(endpoint, {
|
return result.data;
|
||||||
method: 'POST',
|
|
||||||
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify(request)
|
|
||||||
});
|
|
||||||
if (!response.ok) {
|
|
||||||
if (response.status === 401) throw new Error('Sesión expirada. Por favor recarga la página e inicia sesión nuevamente.');
|
|
||||||
let errorMessage = 'Error al generar XML RB Systems (importación)';
|
|
||||||
try { errorMessage = (await response.json()).detail || errorMessage; } catch (e) {}
|
|
||||||
throw new Error(errorMessage);
|
|
||||||
}
|
|
||||||
return await response.json();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
triggerXmlRbSystemsExpo: async (request: { manifest_numbers: string[]; include_emanifest?: boolean }) => {
|
triggerXmlRbSystemsExpo: async (request: { manifest_numbers: string[]; include_emanifest?: boolean }) => {
|
||||||
const endpoint = `${BASE_URL}/v1/a76/reports/xml-rb-systems/exportacion/generate`;
|
const result = await api.post('/v1/a76/reports/xml-rb-systems/exportacion/generate', request);
|
||||||
const token = localStorage.getItem('access_token');
|
if (result.error || !result.data) throw new Error(result.error || 'Error al generar XML RB Systems (exportación)');
|
||||||
const response = await fetch(endpoint, {
|
return result.data;
|
||||||
method: 'POST',
|
|
||||||
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
|
|
||||||
body: JSON.stringify(request)
|
|
||||||
});
|
|
||||||
if (!response.ok) {
|
|
||||||
if (response.status === 401) throw new Error('Sesión expirada. Por favor recarga la página e inicia sesión nuevamente.');
|
|
||||||
let errorMessage = 'Error al generar XML RB Systems (exportación)';
|
|
||||||
try { errorMessage = (await response.json()).detail || errorMessage; } catch (e) {}
|
|
||||||
throw new Error(errorMessage);
|
|
||||||
}
|
|
||||||
return await response.json();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
triggerXmlOptimaExpo: async (request: { manifest_numbers: string[]; consolidar_partidas?: boolean }) => {
|
triggerXmlOptimaExpo: async (request: { manifest_numbers: string[]; consolidar_partidas?: boolean }) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user