fix engram rtk
All checks were successful
DEPLOY_MULTI_BRACH/pipeline/head This commit looks good

This commit is contained in:
juanjo
2026-04-16 18:24:13 +02:00
parent a8dbb62b09
commit 0fc5392bd2
1030 changed files with 947923 additions and 3 deletions

22
frontend/src/App.tsx Normal file
View File

@@ -0,0 +1,22 @@
import { useGetPromocionesQuery } from './app/api/promocionesApi';
export default function App() {
const { data: promociones, isLoading, isError, error } = useGetPromocionesQuery();
if (isLoading) return <div>Cargando promociones...</div>;
if (isError) return <div>Error: {JSON.stringify(error)}</div>;
console.log('Promociones:', promociones);
return (
<div>
<h1>Django Core Base</h1>
<h2>Promociones</h2>
<ul>
{promociones?.map((p) => (
<li key={p.id}>{p.nombre}</li>
))}
</ul>
</div>
);
}

View File

@@ -0,0 +1,19 @@
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
export const baseApi = createApi({
reducerPath: 'baseApi',
baseQuery: fetchBaseQuery({
baseUrl: 'http://localhost:8000/api/',
credentials: 'include',
prepareHeaders: (headers) => {
const token = localStorage.getItem('token');
if (token) {
headers.set('Authorization', `Bearer ${token}`);
}
headers.set('Content-Type', 'application/json');
return headers;
},
}),
tagTypes: ['Promociones'],
endpoints: () => ({}),
});

View File

@@ -0,0 +1,25 @@
import { baseApi } from './baseApi';
export interface Promocion {
id: number;
nombre: string;
[key: string]: unknown;
}
export const promocionesApi = baseApi.injectEndpoints({
endpoints: (builder) => ({
getPromociones: builder.query<Promocion[], void>({
query: () => 'promociones/',
providesTags: (result) =>
result
? [
...result.map(({ id }) => ({ type: 'Promociones' as const, id })),
{ type: 'Promociones' as const, id: 'LIST' },
]
: [{ type: 'Promociones' as const, id: 'LIST' }],
}),
}),
overrideExisting: false,
});
export const { useGetPromocionesQuery } = promocionesApi;

16
frontend/src/app/store.ts Normal file
View File

@@ -0,0 +1,16 @@
import { configureStore } from '@reduxjs/toolkit';
import { setupListeners } from '@reduxjs/toolkit/query';
import { baseApi } from './api/baseApi';
export const store = configureStore({
reducer: {
[baseApi.reducerPath]: baseApi.reducer,
},
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware().concat(baseApi.middleware),
});
setupListeners(store.dispatch);
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;

13
frontend/src/main.tsx Normal file
View File

@@ -0,0 +1,13 @@
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { Provider } from 'react-redux';
import { store } from './app/store';
import App from './App';
createRoot(document.getElementById('root')!).render(
<StrictMode>
<Provider store={store}>
<App />
</Provider>
</StrictMode>
);