Files
Aberwyn/Aberwyn/wwwroot/js/site.js
elias 256ce76af1
All checks were successful
continuous-integration/drone/push Build is passing
Pizza notice
2025-06-06 12:57:49 +02:00

75 lines
2.4 KiB
JavaScript

// Please see documentation at https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification
// for details on configuring this project to bundle and minify static web assets.
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('/service-worker.js')
.then(function (registration) {
//console.log('✅ Service Worker registrerad med scope:', registration.scope);
subscribeToPush().catch(console.error);
})
.catch(function (error) {
console.log('❌ Service Worker-registrering misslyckades:', error);
});
});
}
async function subscribeToPush() {
const registration = await navigator.serviceWorker.ready;
const publicVapidKey = await fetch('/api/push/vapid-public-key')
.then(r => r.text())
.then(key => {
return key;
});
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(publicVapidKey)
});
await fetch('/api/push/subscribe', {
method: 'POST',
body: JSON.stringify(subscription),
headers: { 'Content-Type': 'application/json' }
});
//console.log('✅ Push-prenumeration skickad');
}
async function enablePush() {
const permission = await Notification.requestPermission();
if (permission !== "granted") {
alert("Du måste tillåta notiser för att få push.");
return;
}
const registration = await navigator.serviceWorker.ready;
const publicVapidKey = await fetch('/api/push/vapid-public-key').then(r => r.text());
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(publicVapidKey.trim()) // 👈 .trim() viktigt
});
await fetch("/api/push/subscribe", {
method: "POST",
body: JSON.stringify(subscription),
headers: { "Content-Type": "application/json" }
});
alert("✅ Push-notiser aktiverade!");
}
// utility för att konvertera nyckeln
function urlBase64ToUint8Array(base64String) {
const padding = '='.repeat((4 - base64String.length % 4) % 4);
const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
const raw = atob(base64);
return new Uint8Array([...raw].map(char => char.charCodeAt(0)));
}