// Service Worker pro Web Push notifikace (připomínka výběru oběda)

self.addEventListener('push', (event) => {
    const data = event.data?.json() ?? { title: 'Luncher', body: 'Ještě nemáte zvolený oběd!' };
    event.waitUntil(
        self.registration.showNotification(data.title, {
            body: data.body,
            icon: '/favicon.ico',
            tag: 'lunch-reminder',
            data: { login: data.login, token: data.token },
            actions: [
                { action: 'neobedvam', title: 'Mám vlastní/neobědvám' },
            ],
        })
    );
});

self.addEventListener('notificationclick', (event) => {
    event.notification.close();

    if (event.action === 'neobedvam') {
        const { login, token } = event.notification.data ?? {};
        if (login && token) {
            event.waitUntil(
                fetch('/api/notifications/push/quickChoice', {
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    body: JSON.stringify({ login, token }),
                })
            );
        }
        return;
    }

    event.waitUntil(
        self.clients.matchAll({ type: 'window' }).then((clientList) => {
            for (const client of clientList) {
                if (client.url.includes(self.location.origin) && 'focus' in client) {
                    return client.focus();
                }
            }
            return self.clients.openWindow('/');
        })
    );
});
