BIG_UPDATE deleted vps, added s3 infrastructure.

This commit is contained in:
Georgiy Syralev
2025-11-23 14:35:16 +03:00
parent ae1f93a934
commit c4c2610480
173 changed files with 22684 additions and 5894 deletions

View File

@@ -0,0 +1,79 @@
self.addEventListener('push', (event) => {
console.log('[Service Worker] Push-уведомление получено');
if (!event.data) {
console.warn('[Service Worker] Push без данных');
return;
}
let data;
try {
data = event.data.json();
} catch (error) {
console.error('[Service Worker] Ошибка парсинга Push данных:', error);
return;
}
const title = data.title || 'Новое уведомление';
const options = {
body: data.body,
icon: data.icon || '/favicon.svg',
badge: '/favicon.svg',
tag: `notification-${data.data?.notificationId || Date.now()}`,
data: data.data,
requireInteraction: false,
vibrate: [200, 100, 200]
};
event.waitUntil(
self.registration.showNotification(title, options)
);
});
// Обработка клика по уведомлению
self.addEventListener('notificationclick', (event) => {
console.log('[Service Worker] Клик по уведомлению');
event.notification.close();
const actionUrl = event.notification.data?.actionUrl;
const targetUrl = actionUrl
? `https://ospab.host${actionUrl}`
: 'https://ospab.host/dashboard';
event.waitUntil(
self.clients.matchAll({ type: 'window', includeUncontrolled: true }).then((clientList) => {
// Если есть открытая вкладка с сайтом, фокусируем её и переходим
for (const client of clientList) {
if (client.url.startsWith('https://ospab.host') && 'focus' in client) {
client.focus();
client.navigate(targetUrl);
return;
}
}
// Иначе открываем новую вкладку
if (self.clients.openWindow) {
return self.clients.openWindow(targetUrl);
}
})
);
});
// Обработка закрытия уведомления
self.addEventListener('notificationclose', (event) => {
console.log('[Service Worker] Уведомление закрыто:', event.notification.tag);
});
// Активация Service Worker
self.addEventListener('activate', (event) => {
console.log('[Service Worker] Активирован');
event.waitUntil(self.clients.claim());
});
// Установка Service Worker
self.addEventListener('install', (event) => {
console.log('[Service Worker] Установлен');
event.waitUntil(self.skipWaiting());
});