Skip to main content

Descripción

El módulo Profile gestiona el perfil del usuario, la foto de perfil, la configuración de notificaciones push y el registro de device tokens.
  • Ubicación: src/modules/profile/

Screens

ScreenRutaDescripción
ProfileScreen/(tabs)/05_profilePerfil de usuario, ajustes y cierre de sesión

API Endpoints

MétodoPathDescripción
GET/properties/minePropiedades del usuario (filtradas por rol COOWNER)
GET/users/available-stays/{propertyId}Estadías disponibles del usuario para una propiedad
POST/push-notifications/register-tokenRegistrar device token para notificaciones push
PUT/push-notifications/{deviceToken}Habilitar o deshabilitar notificaciones push
PUT/users/{id}Actualizar perfil del usuario (nombre, imagen)

Hooks

HookDescripción
useUserQueries()Queries de datos del usuario y sus propiedades
useProfilePictureUpload()Subida de foto de perfil utilizando uploadService
useNotifications()Gestión de configuración de notificaciones push (registro de token y permisos)
El servicio de notificaciones push (notificationsService) reside en este módulo en services/notificationsService.ts. Es diferente al módulo de notificaciones in-app. Ver Push Notifications para detalles de la integración.

Tipos principales

interface User {
  id: string;
  email: string;
  displayName: string;
  profileImage?: string;
  phone?: string;
}
const UserRole = {
  COOWNER: 'coowner',
  GUEST: 'guest',
  ADMIN: 'admin',
} as const;

type UserRoleType = (typeof UserRole)[keyof typeof UserRole];
type GuestManager = {
  name: string;
  profileImage?: string;
  phone: string;
  whatsapp: string;
};

type GuestUser = {
  id: string;
  user: { id: string; email: string };
  name: string;
  phone?: string;
};
interface RegisterDeviceTokenRequest {
  deviceToken: string;
  acceptNotifications: boolean;
}

interface EnableNotificationsRequest {
  acceptNotifications: boolean;
}

interface NotificationPermissionStatus {
  granted: boolean;
  canAskAgain: boolean;
  status: 'granted' | 'denied' | 'undetermined';
}

Componentes destacados

ProfileInfo

Muestra la información del usuario: nombre, email y foto de perfil con opción de edición.

ProfileActions

Acciones disponibles en el perfil: editar datos, cerrar sesión y otras configuraciones.

NotificationsSwitcher

Toggle para habilitar o deshabilitar las notificaciones push del dispositivo.

LanguageSwitcher

Selector de idioma de la aplicación.

notificationsService

Servicio que centraliza la lógica de notificaciones push:
El método registerDeviceToken() envía el token del dispositivo al backend junto con la preferencia de aceptación de notificaciones. Se ejecuta durante el inicio de sesión o al habilitar notificaciones.
La API de profileApi filtra las propiedades del usuario para retornar solo aquellas con rol COOWNER. Los usuarios con rol GUEST o ADMIN no verán propiedades en este endpoint.