From d83ed1abec86de94856c61177ef08bdba7d62296 Mon Sep 17 00:00:00 2001 From: Samarth Agarwal Date: Thu, 7 Jun 2018 22:56:55 +0530 Subject: [PATCH] Added updateLikesCount --- .firebaserc | 5 +++++ .gitignore | 1 + firebase.json | 8 ++++++++ functions/src/index.ts | 40 +++++++++++++++++++++++++++++++++++++--- 4 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 .firebaserc create mode 100644 firebase.json diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 00000000..2e1e7524 --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "feedlyapp-9df9a" + } +} diff --git a/.gitignore b/.gitignore index faf05750..a230b0b7 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ npm-debug.log* coverage/ dist/ node_modules/ +functions/node_modules tmp/ temp/ hooks/ diff --git a/firebase.json b/firebase.json new file mode 100644 index 00000000..67a15010 --- /dev/null +++ b/firebase.json @@ -0,0 +1,8 @@ +{ + "functions": { + "predeploy": [ + "npm --prefix \"$RESOURCE_DIR\" run lint", + "npm --prefix \"$RESOURCE_DIR\" run build" + ] + } +} diff --git a/functions/src/index.ts b/functions/src/index.ts index 9abe97e1..5f683897 100644 --- a/functions/src/index.ts +++ b/functions/src/index.ts @@ -1,8 +1,42 @@ import * as functions from 'firebase-functions'; +import * as admin from 'firebase-admin'; + +admin.initializeApp(functions.config().firebase); // Start writing Firebase Functions // https://firebase.google.com/docs/functions/typescript -export const helloWorld = functions.https.onRequest((request, response) => { - response.send("Hello from Firebase!"); -}); +export const updateLikesCount = functions.https.onRequest((request, response) => { + + console.log(request.body); + + const postId = request.body.postId; + const userId = request.body.userId; + const action = request.body.action; // 'like' or 'unlike' + + admin.firestore().collection("posts").doc(postId).get().then((data) => { + + let likesCount = data.data().likesCount || 0; + let likes = data.data().likes || []; + + let updateData = {}; + + if(action == "like"){ + updateData["likesCount"] = ++likesCount; + updateData[`likes.${userId}`] = true; + } else { + updateData["likesCount"] = --likesCount; + updateData[`likes.${userId}`] = false; + } + + admin.firestore().collection("posts").doc(postId).update(updateData).then(() => { + response.status(200).send("Done") + }).catch((err) => { + response.status(err.code).send(err.message); + }) + + }).catch((err) => { + response.status(err.code).send(err.message); + }) + +})