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.
|
|
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;
|