backend-manager 2.5.52 → 2.5.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "backend-manager",
3
- "version": "2.5.52",
3
+ "version": "2.5.53",
4
4
  "description": "Quick tools for developing Firebase functions",
5
5
  "main": "src/manager/index.js",
6
6
  "bin": {
@@ -61,4 +61,4 @@
61
61
  "wonderful-fetch": "^0.0.17",
62
62
  "yargs": "^17.7.1"
63
63
  }
64
- }
64
+ }
@@ -0,0 +1,91 @@
1
+ const pushid = require('pushid');
2
+ const fetch = require('wonderful-fetch');
3
+ const powertools = require('node-powertools');
4
+
5
+ function Module() {
6
+
7
+ }
8
+
9
+ Module.prototype.main = function () {
10
+ const self = this;
11
+ const Manager = self.Manager;
12
+ const Api = self.Api;
13
+ const assistant = self.assistant;
14
+ const payload = self.payload;
15
+
16
+ return new Promise(async function(resolve, reject) {
17
+ self.Api.resolveUser({adminRequired: true})
18
+ .then(async (user) => {
19
+
20
+ const docId = pushid();
21
+ const request = payload.data.payload;
22
+
23
+ // Preprocess
24
+ const decision = {
25
+ promptReview: false,
26
+ reviewURL: null,
27
+ }
28
+
29
+ // If rating is like or love and like feedback is more than dislike feedback
30
+ if (
31
+ ['like', 'love'].includes(request.rating)
32
+ && request.like.length >= request.dislike.length + 10
33
+ ) {
34
+ decision.promptReview = true;
35
+ }
36
+
37
+ // Get app data
38
+ fetch(`https://us-central1-itw-creative-works.cloudfunctions.net/getApp`, {
39
+ method: 'post',
40
+ response: 'json',
41
+ body: {
42
+ id: Manager.config.app.id,
43
+ }
44
+ })
45
+ .then((response) => {
46
+ response.reviews = response.reviews || {};
47
+ response.reviews.enabled = typeof response.reviews.enabled === 'undefined' ? true : response.reviews.enabled;
48
+ response.reviews.sites = response.reviews.sites || [];
49
+
50
+ // If reviews are enabled and there are review sites, prompt review
51
+ if (response.reviews.enabled && response.reviews.sites.length > 0) {
52
+ decision.reviewURL = powertools.random(response.reviews.sites);
53
+ } else {
54
+ decision.promptReview = false;
55
+ }
56
+
57
+ assistant.log('Feedback submitted', docId, {appReviewData: response.reviews, request: request, decision: decision}, {environment: 'production'});
58
+
59
+ // Save feedback to firestore
60
+ self.libraries.admin.firestore().doc(`feedback/${docId}`)
61
+ .set({
62
+ created: assistant.meta.startTime,
63
+ feedback: request,
64
+ decision: decision,
65
+ }, {merge: true})
66
+ .then(r => {
67
+ return resolve({
68
+ data: {
69
+ review: decision,
70
+ originalRequest: request,
71
+ }
72
+ });
73
+ })
74
+ .catch((e) => {
75
+ return reject(assistant.errorManager(`Failed to save feedback: ${e.message}`, {code: 500, sentry: true, send: false, log: true}).error)
76
+ })
77
+ })
78
+ .catch((e) => {
79
+ return reject(assistant.errorManager(`Failed to get app: ${e.message}`, {code: 500, sentry: true, send: false, log: true}).error)
80
+ })
81
+
82
+ })
83
+ .catch((e) => {
84
+ return reject(e);
85
+ })
86
+ });
87
+
88
+ };
89
+
90
+
91
+ module.exports = Module;