update
This commit is contained in:
@@ -1,29 +1,9 @@
|
||||
// ── Firebase Messaging (background push for Android PWA) ──────────────────────
|
||||
// Config must be hardcoded here — the SW is woken by push events before any
|
||||
// async fetch can resolve, so Firebase must be initialised synchronously.
|
||||
importScripts('https://www.gstatic.com/firebasejs/10.14.1/firebase-app-compat.js');
|
||||
importScripts('https://www.gstatic.com/firebasejs/10.14.1/firebase-messaging-compat.js');
|
||||
|
||||
const FIREBASE_CONFIG = {
|
||||
apiKey: "AIzaSyDx191unzXFT4WA1OvkdbrIY_c57kgruAU",
|
||||
authDomain: "rosterchirp-push.firebaseapp.com",
|
||||
projectId: "rosterchirp-push",
|
||||
storageBucket: "rosterchirp-push.firebasestorage.app",
|
||||
messagingSenderId: "126479377334",
|
||||
appId: "1:126479377334:web:280abdd135cf7e0c50d717"
|
||||
};
|
||||
|
||||
// Initialise Firebase synchronously so the push listener is ready immediately.
|
||||
// Skip on iOS — iOS PWAs use standard W3C WebPush (VAPID), not FCM. Initialising
|
||||
// firebase.messaging() on iOS registers a second internal push listener alongside
|
||||
// the custom one below, causing every notification to appear twice.
|
||||
const isIOS = /iPhone|iPad|iPod/.test(self.navigator?.userAgent || '');
|
||||
let messaging = null;
|
||||
if (!isIOS && FIREBASE_CONFIG.apiKey !== '__FIREBASE_API_KEY__') {
|
||||
firebase.initializeApp(FIREBASE_CONFIG);
|
||||
messaging = firebase.messaging();
|
||||
console.log('[SW] Firebase initialised');
|
||||
}
|
||||
// ── Service Worker — RosterChirp ───────────────────────────────────────────────
|
||||
// Push notifications are handled via the standard W3C Push API (`push` event).
|
||||
// The Firebase SDK is not initialised here — FCM delivers the payload via the
|
||||
// standard push event and event.data.json() is sufficient to read it.
|
||||
// Firebase SDK initialisation (for getToken) happens in the main thread (Chat.jsx),
|
||||
// where the config is fetched at runtime from /api/push/firebase-config.
|
||||
|
||||
// ── Cache ─────────────────────────────────────────────────────────────────────
|
||||
const CACHE_NAME = 'rosterchirp-v1';
|
||||
@@ -85,7 +65,7 @@ function showRosterChirpNotification(data) {
|
||||
// directly (fast, reliable) rather than delegating to the Firebase SDK's
|
||||
// internal push listener, which can be killed before it finishes on Android.
|
||||
self.addEventListener('push', (event) => {
|
||||
console.log('[SW] Push received, hasData:', !!event.data, 'messaging:', !!messaging);
|
||||
console.log('[SW] Push received, hasData:', !!event.data);
|
||||
|
||||
event.waitUntil((async () => {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user