ReboFilesDocs
Empezar3
Qué es ReboFiles
Primeros pasos
Demos para ejecutar
Ponlo en tu app6
Componente de React
Headless: tu propia interfaz
Sin framework
Estilos y temas
Teclado y accesibilidad
Idiomas
Archivos9
Subidas
Vistas previas y el visor
Búsqueda
Cambios en vivo y carpetas grandes
Comentarios
Destacados y campos
Versiones, papelera y espacio
Descargar como .zip
Documentos de Word
El servidor14
La ruta
Frameworks e inicio de sesión
Quién puede hacer qué
Almacenamiento: S3, GCS, Azure y disco
Revisar las subidas
Metadatos: SQLite y Postgres
Esquema de la base de datos
Compartir y enlaces
Actividad y notificaciones
Ganchos, registros y límites
Retención, bloqueos y exportación
Escritorio y otros orígenes
Sincronizar una carpeta
Ir a producción
En equipo1
Asistentes de IA (MCP)
Referencia5
Paquetes
Componentes y hooks
API del cliente
Rutas HTTP
Estado y hoja de ruta
↑↓ para moverte↵ para abrirEsc para cerrar38 páginas

El servidor Actividad y notificaciones

Actividad y notificaciones

Cada cambio se guarda como actividad, lo haga quien lo haga: una ruta, un asistente, la papelera vaciándose sola. Se deduce del drive antes y después del cambio, así que no se queda nada fuera.
Actividad

Qué se guarda

Creado, subido, una nueva versión, renombrado, movido, enviado a la papelera y de vuelta, borrado, compartido y ya no, un enlace creado y retirado, un color dado; quién, y cuándo.

Los detalles de un archivo tienen su Actividad, y los de una carpeta también lo que se hizo justo dentro (GET /entries/:id/activity, client.activity); un asistente la lee con get_activity.

Core

En código

import { activityOf } from '@rebofiles/core';

activityOf(before, after, 'ana', new Date().toISOString());
// [{ action: 'renamed', name: 'final.docx', was: 'draft.docx', by: 'ana', at, entry, parent }]
onShare

Avisar a la gente

Junto a Compartido conmigo, el drive cuenta lo nuevo. Para avisar tú a la persona, dale onShare al servidor.

createDriveHandler({
  ...options,
  // Once the share is kept; a failure here is not the request's.
  onShare: async ({ entry, with: who, role, by, first }) => {
    if (first) await mail(who, `${by.id} shared “${entry.name}” with you as ${role}`);
  },
});
Campana

Avisado en el drive

Lo que se comparte con una persona, o con un grupo suyo, y un comentario que la nombra: en la campana sobre el drive, con cuántos son nuevos al lado, y cada uno abre donde está.

const { notifications, unseen } = await client.notifications();
// [{ kind: 'shared', entry, name: 'Budget', by: 'ana', role: 'editor', at }, { kind: 'mentioned', text, … }]
await client.sawNotifications();   // none is new any more

Se guardan para cada persona y cada grupo (inbox:<quién>), los últimos doscientos; vistos, ya no hay nuevos (POST /notifications/seen). Lo que hizo uno mismo no se avisa. Un correo sigue siendo cosa tuya, con onShare y onComment.

Personas

Todo el drive

Para quien puede configurar el drive, Ajustes → Personas: los archivos, carpetas y espacio de cada persona y de todo el drive, y la actividad más reciente de cualquier parte.

// For who may 'configure': what each keeps, and what was done anywhere.
const { people, total, quota } = await client.adminUsage();   // GET /admin/usage
const latest = await client.adminActivity(100);                // GET /admin/activity

El espacio de cada uno se calcula con todo el drive, leído una vez cada vez que se pide: para quien lo administra, de vez en cuando, no para cada página.

A saber

Qué saber

Un cambio se guarda sin su línea si el almacén no consigue escribir la actividad: el cambio es el drive, la línea va aparte.