export const userNotificationsListener = (echo, userData, setNotifications, setUnreadNotification) => {

    const channelName = `user.${userData.id}`;

    const handleNotification = (id, content) => {

        const newNotification = {
            id,
            content,
            created_at: new Date().toISOString(),
            pivot: { unread: 1 }
        };

        setNotifications(prev => [newNotification, ...prev]);
        setUnreadNotification(true);
    };

    return echo.private(channelName)
        .listen('.event.participation.cancelled', (event) => {
            handleNotification(event.notificationId,`L'événement ${event.event.name} a été supprimé. Vous n'y participez donc plus.`);
        })
        .listen(`.task.participation.cancelled`, (event) => {
            handleNotification(event.notificationId,`La tâche ${event.task.name} de l'événement ${event.event.name} a été supprimée. Vous n'y participez donc plus.`);
        })
        .listen('.volunteer.assigned.to.task', (event) => {
            handleNotification(event.notificationId,`Vous avez été assigné à la tâche ${event.task.name} de l'événement ${event.event.name}.`);
        })
        .listen('.volunteer.unassigned.to.task', (event) => {
            handleNotification(event.notificationId,`Vous avez été désassigné de la tâche ${event.task.name} de l'événement ${event.event.name}.`);
        })
        .listen('.volunteer.role.updated', (event) => {
            handleNotification(`Votre rôle a changé pour : ${event.role} `);
        })
        .listen('.task.date.updated', (event) => {
            handleNotification(event.notificationId,`La date de la tâche ${event.task.name} de l'événement ${event.event.name} à été mis à jour. Cette tâche aura maintenant lieu du ${event.start} au ${event.end}.`);
        });
};