const functions = require("firebase-functions"); const admin = require("firebase-admin"); const { error } = require("firebase-functions/logger"); const { projectID } = require("firebase-functions/params"); var serviceAccount = require("./rhsite-web-firebase-adminsdk-ds235-6b597b7ee3.json"); // const { DateTime } = require('luxon'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount) }); const database = admin.firestore(); exports.sendNotificationForDates = functions.pubsub.schedule('* * * * *').onRun(async (context) => { try { const habitsSnapshot = await admin.firestore().collection('natural_app_active_habits').get(); console.log('Function started'); habitsSnapshot.forEach((habitDoc) => { const habitData = habitDoc.data(); const { fcmToken, userId, talkingCricketId, item ,dates} = habitData; dates.forEach(date => { console.log(' habit dates ===============> ',dates); const currentTime = new Date(); const currentHourMinute = currentTime.toLocaleString(undefined, { year: 'numeric', month: '2-digit', day: '2-digit', hour12: false, hour: '2-digit', minute: '2-digit' }); // console.log(' current date and time ===============> ',currentHourMinute); const dateObj = new Date(date.seconds * 1000); // Convert Firestore timestamp to JavaScript Date object const habitHourMinute = dateObj.toLocaleString(undefined, { year: 'numeric', month: '2-digit', day: '2-digit', hour12: false, hour: '2-digit', minute: '2-digit' }); console.log(' habit date and time ===============> ',habitHourMinute); if (habitHourMinute === currentHourMinute) { const payload = { notification: { title: item.title, body: item.description, imageUrl: item.image, // Assuming you want to include image URL in notification }, data: { userId: userId, } }; // Send notification to user admin.messaging().sendToDevice(fcmToken, payload) .then(async(response) => { console.log('Notification sent successfully:', response); await admin.firestore().collection('natural_app_notifications').add({ userId: userId, title: item.title, description: item.description, imageUrl:item.image, talkingCricketItem:item, createdAt: admin.firestore.FieldValue.serverTimestamp() }); }) .catch((error) => { console.error('Error sending notification:', error); }); } }); }); } catch (error) { console.error('Error in Cloud Function:', error); } });