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);
}
});