Saltar a contenido

Documentación de Servicios (services/)

Este documento describe los módulos de servicios utilizados para interactuar con el backend a través de peticiones HTTP. Cada archivo encapsula funciones para una entidad del sistema (auth, carrito, productos, etc.).


AuthService.js

Autenticación de usuarios

const API_URL = import.meta.env.VITE_API_BASE_URL;

loginService(username, password)

const res = await fetch(`${API_URL}/auth/login`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ username, password })
});
  • Retorna token JWT y datos del usuario.
  • Lanza error si las credenciales son inválidas.

registerService(...)

Registra un nuevo usuario con coordenadas y dirección.


CartService.js

Operaciones del carrito de compras

Cada función usa Authorization: Bearer <token>.

getCart()

Obtiene el carrito actual del usuario.

const res = await fetch(`${API_URL}/cart/`, { headers: { Authorization: 'Bearer ...' } });

addToCart(productId, quantity)

Agrega un producto al carrito.

removeFromCart(productId)

Elimina un producto del carrito.

updateCart(items)

Actualiza todo el carrito con un array de { productId, quantity }.


categoryService.js

Gestión de categorías y unidades de medida

getCategories()

Obtiene todas las categorías registradas.

getMeasureUnits()

Obtiene unidades de medida como "kg", "litro", etc.


geolocationService.js

Servicio de geolocalización inversa con Nominatim (OpenStreetMap)

geolocationService(lat, lng)

fetch(`https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lng}&format=json`)
  • Devuelve una dirección legible.
  • Usa User-Agent personalizado.

productService.js

Gestión de productos

getProducts()

Obtiene todos los productos publicados.

getProductById(id)

Obtiene los detalles de un producto específico.

createProductService(data, token)

Crea un nuevo producto autenticado.

updateProduct(productId, data)

Actualiza un producto existente.

getProductsPostedByUser()

Filtra productos del usuario autenticado.

getProductsByArea(distanceRadius)

fetch(`${API_URL}/products/nearby?maxDistance=1000`)

Filtra productos por cercanía geográfica (usando coordenadas del perfil).


OrderService.js

Gestión de órdenes

createOrder()

Crea una nueva orden para el usuario actual.

getOrders()

Obtiene todas las órdenes del usuario.

getOrderById(orderId)

Detalle completo de una orden.

updateOrderStatus(orderId, newStatus)

Actualiza estado de la orden (pending, in_progress, completed, etc.).


UserService.js

Gestión del perfil de usuario

getUserInfo()

Obtiene el perfil actual del usuario autenticado.

updateUser(data)

Actualiza nombre, dirección, teléfono, etc.

getSellers()

fetch(`${API_URL}/profile/nearby-sellers`)

Devuelve una lista de vendedores cercanos.


Notas Comunes

  • Todos los servicios dependen de la variable VITE_API_BASE_URL.
  • Se utiliza localStorage.getItem('token') para autenticación Bearer.
  • Errores se manejan con throw new Error() tras inspeccionar response.ok.