/** * Sends the weekly top post email to all users in the given `users` object. */ function sendWeeklyTopPostEmail(users, emailHtml) { Object.keys(users).forEach(function(uid) { const user = users[uid]; if (user.email) { const mailOptions = { from: '"Firebase Database Quickstart" <noreply@firebase.com>', to: user.email, subject: 'This week\'s top posts!', html: emailHtml }; mailTransport.sendMail(mailOptions).then(function() { console.log('Weekly top posts email sent to: ' + user.email); // Save the date at which we sent the weekly email. // [START basic_write] return firebase.database().ref().child('/users/' + uid + '/lastSentWeeklyTimestamp') .set(firebase.database.ServerValue.TIMESTAMP); // [END basic_write] }).catch(function(error) { console.log('Failed to send weekly top posts email:', error); }); } }); }
app.post('/api/upload/removeAvatar', authenticate, needsVerifiedAcc, (req, res) => { // delete avatar from storage bucket.file(`avatars/${req.body.uid}.png`).delete(); // set original photoURL for user const avatarRef = db.ref(`users/${req.body.uid}/settings/photoUrl`); avatarRef.set(process.env.DEFAULT_AVATAR); // send response back to client with default avatar res.status(200).json({ success: true, message: 'Successfully removed avatar', defaultAvatar: process.env.DEFAULT_AVATAR }); });
functions.database.ref('todos').onDelete((snapshot, context) => { console.log('deleting', snapshot) console.log('deleting', context) const email = context.auth.token.email; const result = snapshot.after.val(); let lastValue = {}; for (const prop in result) { lastValue = {id: prop, value: result[prop]} } admin.database().ref('replicateTodos').child(lastValue.id).set({description: lastValue.value.description , status: lastValue.value.status , title: lastValue.value.title, email: email }) })
setInterval(function() { fs.readFile('./news.json', function(err, data){ if(err) return; let result = JSON.parse(data); let item = result[index]; if(!item) { clearInterval(intervalLoadData); return; } let itemId = stringToFormatId(item.title); let refItem = database.ref('/News-list/' + itemId + '/'); refItem.set(item); index++; }) }, 2000)
// register for room member app.post('/api/attendance/registerAttendence', authenticate, (req, res) => { const checkinTimestamp = new Date().getTime(); // get checkin ref for user const roomRef = db.ref(`rooms/${req.body.roomID}`); roomRef.once('value', snapshot => { // retrieve user ref and set the checkin data const checkinID = snapshot.val().checkin.checkinID; const userCheckinRef = db.ref(`users/${req.body.uid}/checkins/${req.body.roomID}/${checkinID}`); userCheckinRef.set(checkinTimestamp); // update the rooms checkin ref roomRef.child(`checkins/${checkinID}/attendies/${req.body.uid}`) .set(checkinTimestamp); }); // send back response with success message res.status(200).json({ success: true, message: 'Attendence was successfully registered' }); });
functions.database.ref('todos').onWrite((snapshot, context) => { const email = context.auth.token.email; const result = snapshot.after.val(); let lastValue = {}; for (const prop in result) { lastValue = {id: prop, value: result[prop]} } admin.database().ref('replicateTodos').child(lastValue.id).set({description: lastValue.value.description , status: lastValue.value.status , title: lastValue.value.title, email: email }) })
// listening is all configured, let's add some contacts Promise.all([ database.ref('/contacts/josh').set({ name: 'Josh', city: 'San Francisco' }), database.ref('/contacts/tim').set({ name: 'Tim', city: 'Paris' })]).then(function() { console.log("Contacts loaded to firebase"); process.exit(0); }).catch((function(error) { console.error("Error loading firebase", error); process.exit(-1); }));
// set a messaging token for a user app.post('/api/messaging/setToken', (req, res) => { // get users messaging ref const messagingRef = db.ref(`users/${req.body.uid}/messaging`); // access messaging ref data messagingRef.once('value', snapshot => { // if no ref is set (eg: first time user), // set messaging and token ref if (!snapshot.exists()) messagingRef.set({ token: req.body.token }); // if set but token is equal (no need to update) else if (snapshot.val().token !== req.body.token) messagingRef.update({ token: req.body.token }); // send back response with success message res.status(200).json({ success: true, message: 'Successfully validated messaging token' }); }); });
// resend a verification email to user app.post('/api/auth/resendVerificationEmail', authenticated, (req, res) => { // get verification ref const verifyRef = db.ref(`users/${req.body.uid}/verificationID`); // generate new id and update const newVerificationID = shortid.generate(); verifyRef.set(newVerificationID); // send new id link to provided email email.sendVerification(req.body.email, newVerificationID, req.body.uid); // send back success response res.status(200).json({ success: true, message: 'E-mail sendt! Click the link in the mail to proceed. Cant see it? Try checking spam folder' }); });
/** * Sends the weekly top post email to all users in the given `users` object. */ function sendWeeklyTopPostEmail(users, emailHtml) { Object.keys(users).forEach(function(uid) { const user = users[uid]; if (user.email) { const mailOptions = { from: '"Firebase Database Quickstart" <noreply@firebase.com>', to: user.email, subject: 'This week\'s top posts!', html: emailHtml }; mailTransport.sendMail(mailOptions).then(function() { console.log('Weekly top posts email sent to: ' + user.email); // Save the date at which we sent the weekly email. // [START basic_write] return firebase.database().ref().child('/users/' + uid + '/lastSentWeeklyTimestamp') .set(firebase.database.ServerValue.TIMESTAMP); // [END basic_write] }).catch(function(error) { console.log('Failed to send weekly top posts email:', error); }); } }); }