document.addEventListener("DOMContentLoaded", function () { const popup = document.getElementById('notification-popup'); const closeButton = document.getElementById('popup-close'); const allowButton = document.getElementById('popup-allow'); // Firebase config const firebaseConfig = { apiKey: "AIzaSyBogRKxumEd5ZIEpDt3BhzaTBLLtrU3olc", authDomain: "haberler-43c8.firebaseapp.com", projectId: "haberler-43c8", messagingSenderId: "1001974719098", appId: "1:1001974719098:web:ea0229e7b72c587698d1c3", measurementId: "G-HVCRFS7N2P" }; // Firebase başlat if (!firebase.apps.length) { firebase.initializeApp(firebaseConfig); } const messaging = firebase.messaging(); // Foreground mesajları messaging.onMessage((payload) => { console.log('[foreground] Mesaj alındı:', payload); if (Notification.permission === 'granted') { const { title, body, icon, image } = payload.notification || {}; const options = { body, icon: icon || '/favicon.ico', image, data: { link: payload.fcmOptions?.link || '/' } }; new Notification(title, options); } }); function isSafari() { return /^((?!chrome|android).)*safari/i.test(navigator.userAgent); } // === 👇 ZAMAN ve KADEMELİ TEKRAR MEKANİZMASI 👇 === (function resetAllNotificationPreferencesOnce() { const alreadyReset = localStorage.getItem("resetDone"); if (!alreadyReset) { try { localStorage.removeItem("userSelection"); localStorage.removeItem("userSelectionSavedAt"); localStorage.removeItem("userSelectionRejectCount"); document.cookie = "userSelection=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; document.cookie = "userSelectionSavedAt=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; console.log("⛔ Kullanıcı tercihleri sıfırlandı. Bildirim popup'ı tekrar gösterilecek."); // ❗ Artık tekrar sıfırlama yapılmayacak localStorage.setItem("resetDone", "1"); } catch (e) { console.warn("Temizlik işlemi başarısız:", e); } } else { console.log("✅ Tercihler daha önce sıfırlandı, tekrar silinmedi."); } })(); function saveSelection(choose) { try { localStorage.setItem("userSelection", choose); localStorage.setItem("userSelectionSavedAt", new Date().toISOString()); } catch (e) { console.warn("localStorage desteklenmiyor:", e); } const expiryDate = new Date(); expiryDate.setTime(expiryDate.getTime() + (180 * 24 * 60 * 60 * 1000)); // 6 ay cookie süresi document.cookie = `userSelection=${choose}; expires=${expiryDate.toUTCString()}; path=/`; console.log(`Seçim kaydedildi: ${choose}`); } function incrementRejectCount() { const current = parseInt(localStorage.getItem("userSelectionRejectCount") || "0", 10); localStorage.setItem("userSelectionRejectCount", current + 1); } function getNextRetryDelayDays(count) { switch (count) { case 0: return 0; // ilk gösterim hemen olabilir case 1: return 7; // 1 hafta case 2: return 30; // 1 ay case 3: return 60; // 2 ay default: return 180; // 6 ay } } function shouldShowPopup() { const selection = localStorage.getItem("userSelection"); const savedAt = localStorage.getItem("userSelectionSavedAt"); const rejectCount = parseInt(localStorage.getItem("userSelectionRejectCount") || "0", 10); if (!selection) return true; // hiç seçim yapılmamışsa göster if (selection === "1" && savedAt) { const savedTime = new Date(savedAt).getTime(); const now = Date.now(); const diffDays = (now - savedTime) / (1000 * 60 * 60 * 24); return diffDays >= getNextRetryDelayDays(rejectCount); } return false; // zaten izin verildiyse bir daha sorma } function showPopup() { const isMobileOrSafari = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent) || /^((?!chrome|android).)*safari/i.test(navigator.userAgent); if (!isMobileOrSafari) { popup.style.display = 'flex'; setTimeout(() => popup.classList.add('show'), 10); } } // === 👇 ZAMANLAYICI BAŞLAT (performansı etkilemez) 👇 === if (shouldShowPopup()) { setTimeout(() => { showPopup(); }, 10000); // 10 saniye sonra kontrol ve gösterim } // === 👇 Buton olayları 👇 === closeButton.addEventListener('click', () => { saveSelection("1"); // istemiyorum incrementRejectCount(); popup.classList.remove('show'); setTimeout(() => popup.style.display = 'none', 500); }); allowButton.addEventListener('click', async () => { popup.classList.remove('show'); setTimeout(() => popup.style.display = 'none', 500); const permission = await Notification.requestPermission(); if (permission === 'granted') { try { const registration = await navigator.serviceWorker.register('/firebase-messaging-sw.js'); const token = await messaging.getToken({ vapidKey: "BMLY_ktUzvDvyyLaSTXAA6ye1MuksJyB0sr8ZdEJukDH9EZjpEnu_3HPE8O1d_pR8iz_7_NF9UDsuNFlFb7xrZw", serviceWorkerRegistration: registration }); if (token) { const topic = "onemli"; const url = `https://worker.haberler.com/SubscribeToTopic?fcmToken=${encodeURIComponent(token)}&topicName=${encodeURIComponent(topic)}`; fetch(url).then(res => res.text()).then(data => console.log("Sunucu yanıtı:", data)); } localStorage.setItem("userSelectionRejectCount", "0"); // resetle saveSelection("2"); // izin verildi } catch (e) { console.error("Bildirim alma hatası:", e); saveSelection("1"); incrementRejectCount(); } } else { saveSelection("1"); incrementRejectCount(); } }); });