API de Notificaciones
Este archivo contiene funciones para interactuar con la API de notificaciones, incluyendo obtención de notificaciones, preferencias del usuario, y el envío de notificaciones personalizadas. Utiliza una instancia de Axios configurada para el proyecto.
🔍 Ubicación
src/api/notificaciones.ts
📦 Dependencias utilizadas
import axiosInstance from "../utils/axiosInstance";
- axiosInstance: Instancia de Axios personalizada con configuración global (headers, baseURL, etc.).
🔧 Funciones disponibles
🟢 GET
- Obtener datos
📬 getNotificacionesUsuario(idUsuario: number)
Obtiene todas las notificaciones asociadas al usuario.
export async function getNotificacionesUsuario(idUsuario: number) {
const response = await axiosInstance.get(`/notificaciones/usuario/${idUsuario}`);
return response.data;
}
📦 getProductosDelUsuario(idUsuario: number)
Obtiene los productos registrados por un usuario.
export async function getProductosDelUsuario(idUsuario: number) {
const response = await axiosInstance.get(`/productos/nombres/${idUsuario}`);
return response.data;
}
⚙️ getPreferenciasUsuario(idUsuario: number)
Obtiene las preferencias de notificación actuales del usuario.
export const getPreferenciasUsuario = async (idUsuario: number) => {
const response = await axiosInstance.get(`/preferencias-notificaciones/${idUsuario}`);
return response.data;
};
🟠 PATCH
- Actualizar datos
✅ marcarNotificacionLeida(idNotificacion: number)
Marca una notificación como leída.
export async function marcarNotificacionLeida(idNotificacion: number) {
const response = await axiosInstance.patch(`/notificaciones/${idNotificacion}`);
return response.data;
}
🧩 actualizarPreferenciasUsuario(idUsuario, preferencias)
Actualiza las preferencias del usuario para las notificaciones que desea recibir.
export const actualizarPreferenciasUsuario = async (
idUsuario: number,
preferencias: {
stockBajo?: boolean;
productoVencido?: boolean;
comentarios?: boolean;
reposicion?: boolean;
actualizacion?: boolean;
}
) => {
const { data } = await axiosInstance.patch(
`/notificaciones/preferencias/${idUsuario}`,
preferencias
);
return data;
};
🧠 Este método acepta un objeto con preferencias booleanas. Cada campo es opcional y se puede actualizar parcialmente.
🔵 POST
- Enviar notificaciones
🚀 enviarNotificacionActualizacion(data)
Envía una notificación general de actualización de la aplicación a todos los usuarios.
export const enviarNotificacionActualizacion = (data: {
titulo: string;
mensaje: string;
}) => {
return axiosInstance.post('/notificaciones/actualizacion-app', data);
};
🔁 enviarNotificacionReposicion(data)
Envía una notificación personalizada de reposición de producto a un usuario específico.
export const enviarNotificacionReposicion = (data: {
tipo: string;
titulo: string;
mensaje: string;
idUsuario: number;
}) => {
return axiosInstance.post("/notificaciones", data);
};
🚀 Ejemplo de uso
import { enviarNotificacionReposicion } from "../api/notificaciones";
await enviarNotificacionReposicion({
tipo: "reposicion",
titulo: "¡Reposicion recomendada!",
mensaje: "El producto 'Crema de Leche' tiene solo 28 unidades disponibles.",
idUsuario: 42,
});
📝 Notas adicionales
- Este archivo centraliza todas las operaciones relacionadas con las notificaciones del sistema.
- Se divide en tres bloques principales: obtención de datos, actualización de preferencias/estado, y envío de notificaciones.
- Al utilizar
axiosInstance
, se garantiza la uniformidad en las configuraciones de red.