Notificaciones
Habilita las notificaciones dentro de la aplicación para los usuarios de tu aplicación.
Sintaxis
$ vela enable notifications El módulo de notificaciones crea una colección notifications, un desplegable de campana en la cabecera de la aplicación y una página /notifications. Antes hay que habilitar la autenticación.
Qué obtienes
- Una campana en la cabecera del layout
(app)con el número de no leídas. Al abrirla se muestran las cinco notificaciones no leídas más recientes. - Consulta cada 30 segundos mientras la pestaña esté visible, además de una actualización cada vez que la pestaña recupera el foco. Las notificaciones nuevas también aparecen como toasts.
- Una página
/notificationscon todas las notificaciones del usuario autenticado, con “Marcar como leída” por elemento y “Marcar todas como leídas”. - Una función
notifyen$lib/server/notificationspara crear notificaciones desde el código del servidor.
El +layout.server.ts del layout (app) se amplía para cargar las notificaciones no leídas y registrar la dependencia app:notifications, de modo que llamar a invalidate('app:notifications') desde cualquier sitio actualiza la campana.
Enviar una notificación
Las notificaciones se crean en el servidor. Importa notify en una acción de formulario, un hook o una ruta de API y pásale el id del usuario:
import { notify } from '$lib/server/notifications';
export const actions = {
invite: async ({ locals }) => {
await notify(locals.admin, invitedUserId, {
title: 'Te han añadido a Acme',
body: 'Abre la página del equipo para empezar.'
});
}
}; Los usuarios solo pueden leer y eliminar sus propias notificaciones, y solo pueden cambiar el indicador read. Crear una notificación o editar su título y cuerpo requiere el cliente superusuario, así que pasa locals.admin en lugar de locals.pb.
Tablas de la base de datos
Habilitar notifications crea las siguientes tablas de base de datos:
notifications Cada registro contiene una relación user, title, body y un indicador read, indexados por usuario, estado de lectura y fecha de creación.