Fix notifications logic and FCM Service Worker config

This commit is contained in:
2026-05-27 11:21:07 +01:00
parent 64b249723b
commit d9d70f2e7a
2 changed files with 31 additions and 28 deletions

View File

@@ -675,31 +675,33 @@ export default function App() {
const intervalId = setInterval(() => {
const now = new Date();
const currentHour = String(now.getHours()).padStart(2, '0');
const currentMinute = String(now.getMinutes()).padStart(2, '0');
const currentTime = `${currentHour}:${currentMinute}`;
const todayStr = `${now.getFullYear()}-${String(now.getMonth()+1).padStart(2,'0')}-${String(now.getDate()).padStart(2,'0')}`;
if (currentTime === dailyOutfitTime && lastNotifiedDate !== todayStr) {
const todaysLooks = getLooksForDayGlobal(todayStr);
if (todaysLooks.length > 0) {
const mainLook = todaysLooks[0];
if ('Notification' in window && Notification.permission === 'granted') {
navigator.serviceWorker?.getRegistration().then(reg => {
const title = 'MyCloset - Outfit Diário';
const options = {
body: `O seu outfit planeado "${mainLook.name}" está pronto para hoje!`,
icon: '/favicon.ico'
};
if (reg) {
reg.showNotification(title, options);
} else {
new Notification(title, options);
}
});
setLastNotifiedDate(todayStr);
saveUserSetting('lastNotifiedDate', todayStr);
if (lastNotifiedDate !== todayStr) {
const currentMins = now.getHours() * 60 + now.getMinutes();
const [targetH, targetM] = dailyOutfitTime.split(':').map(Number);
const targetMins = targetH * 60 + targetM;
if (currentMins >= targetMins) {
const todaysLooks = getLooksForDayGlobal(todayStr);
if (todaysLooks.length > 0) {
const mainLook = todaysLooks[0];
if ('Notification' in window && Notification.permission === 'granted') {
navigator.serviceWorker?.getRegistration().then(reg => {
const title = 'MyCloset - Outfit Diário';
const options = {
body: `O seu outfit planeado "${mainLook.name}" está pronto para hoje!`,
icon: '/favicon.ico'
};
if (reg) {
reg.showNotification(title, options);
} else {
new Notification(title, options);
}
});
setLastNotifiedDate(todayStr);
saveUserSetting('lastNotifiedDate', todayStr);
}
}
}
}