@cexy/hoonfca 1.0.4 → 1.0.6

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.
Files changed (135) hide show
  1. package/CHANGELOG.md +181 -0
  2. package/DOCS.md +2636 -0
  3. package/LICENSE-MIT +21 -21
  4. package/README.md +632 -0
  5. package/func/checkUpdate.js +231 -0
  6. package/func/logger.js +48 -0
  7. package/index.d.ts +731 -605
  8. package/index.js +6 -774
  9. package/module/config.js +67 -0
  10. package/module/login.js +154 -0
  11. package/module/loginHelper.js +1034 -0
  12. package/module/options.js +54 -0
  13. package/package.json +54 -19
  14. package/src/api/action/addExternalModule.js +25 -0
  15. package/src/api/action/changeAvatar.js +137 -0
  16. package/src/{changeBio.js → api/action/changeBio.js} +75 -76
  17. package/src/api/action/enableAutoSaveAppState.js +73 -0
  18. package/src/{getCurrentUserID.js → api/action/getCurrentUserID.js} +7 -7
  19. package/src/{handleFriendRequest.js → api/action/handleFriendRequest.js} +57 -57
  20. package/src/api/action/logout.js +76 -0
  21. package/src/api/action/refreshFb_dtsg.js +48 -0
  22. package/src/api/action/setPostReaction.js +106 -0
  23. package/src/api/action/unfriend.js +54 -0
  24. package/src/api/http/httpGet.js +46 -0
  25. package/src/api/http/httpPost.js +52 -0
  26. package/src/api/http/postFormData.js +47 -0
  27. package/src/api/messaging/addUserToGroup.js +68 -0
  28. package/src/api/messaging/changeAdminStatus.js +122 -0
  29. package/src/api/messaging/changeArchivedStatus.js +55 -0
  30. package/src/api/messaging/changeBlockedStatus.js +48 -0
  31. package/src/api/messaging/changeGroupImage.js +90 -0
  32. package/src/api/messaging/changeNickname.js +70 -0
  33. package/src/api/messaging/changeThreadColor.js +79 -0
  34. package/src/api/messaging/changeThreadEmoji.js +106 -0
  35. package/src/{createNewGroup.js → api/messaging/createNewGroup.js} +88 -88
  36. package/src/api/messaging/createPoll.js +43 -0
  37. package/src/api/messaging/createThemeAI.js +98 -0
  38. package/src/{deleteMessage.js → api/messaging/deleteMessage.js} +56 -56
  39. package/src/{deleteThread.js → api/messaging/deleteThread.js} +56 -56
  40. package/src/api/messaging/editMessage.js +68 -0
  41. package/src/api/messaging/forwardAttachment.js +51 -0
  42. package/src/{getEmojiUrl.js → api/messaging/getEmojiUrl.js} +8 -8
  43. package/src/{getFriendsList.js → api/messaging/getFriendsList.js} +82 -84
  44. package/src/api/messaging/getMessage.js +829 -0
  45. package/src/api/messaging/getThemePictures.js +62 -0
  46. package/src/api/messaging/handleMessageRequest.js +65 -0
  47. package/src/{markAsDelivered.js → api/messaging/markAsDelivered.js} +57 -58
  48. package/src/{markAsRead.js → api/messaging/markAsRead.js} +88 -88
  49. package/src/{markAsReadAll.js → api/messaging/markAsReadAll.js} +49 -50
  50. package/src/api/messaging/markAsSeen.js +61 -0
  51. package/src/{muteThread.js → api/messaging/muteThread.js} +50 -52
  52. package/src/api/messaging/removeUserFromGroup.js +106 -0
  53. package/src/{resolvePhotoUrl.js → api/messaging/resolvePhotoUrl.js} +43 -45
  54. package/src/api/messaging/scheduler.js +264 -0
  55. package/src/{searchForThread.js → api/messaging/searchForThread.js} +52 -53
  56. package/src/api/messaging/sendMessage.js +272 -0
  57. package/src/api/messaging/sendTypingIndicator.js +67 -0
  58. package/src/api/messaging/setMessageReaction.js +76 -0
  59. package/src/api/messaging/setTitle.js +119 -0
  60. package/src/{shareContact.js → api/messaging/shareContact.js} +49 -53
  61. package/src/api/messaging/threadColors.js +128 -0
  62. package/src/api/messaging/unsendMessage.js +81 -0
  63. package/src/api/messaging/uploadAttachment.js +94 -0
  64. package/src/api/socket/core/connectMqtt.js +255 -0
  65. package/src/api/socket/core/emitAuth.js +106 -0
  66. package/src/api/socket/core/getSeqID.js +40 -0
  67. package/src/api/socket/core/getTaskResponseData.js +22 -0
  68. package/src/api/socket/core/markDelivery.js +12 -0
  69. package/src/api/socket/core/parseDelta.js +391 -0
  70. package/src/api/socket/detail/buildStream.js +208 -0
  71. package/src/api/socket/detail/constants.js +24 -0
  72. package/src/api/socket/listenMqtt.js +364 -0
  73. package/src/api/socket/middleware/index.js +216 -0
  74. package/src/{getThreadHistory.js → api/threads/getThreadHistory.js} +664 -647
  75. package/src/api/threads/getThreadInfo.js +438 -0
  76. package/src/{getThreadList.js → api/threads/getThreadList.js} +293 -292
  77. package/src/{getThreadPictures.js → api/threads/getThreadPictures.js} +78 -79
  78. package/src/{getUserID.js → api/users/getUserID.js} +65 -66
  79. package/src/api/users/getUserInfo.js +327 -0
  80. package/src/api/users/getUserInfoV2.js +134 -0
  81. package/src/core/sendReqMqtt.js +96 -0
  82. package/src/database/models/index.js +87 -0
  83. package/src/database/models/thread.js +45 -0
  84. package/src/database/models/user.js +46 -0
  85. package/src/database/threadData.js +98 -0
  86. package/src/database/userData.js +89 -0
  87. package/src/utils/client.js +320 -0
  88. package/src/utils/constants.js +23 -0
  89. package/{utils.js → src/utils/format.js} +1115 -1447
  90. package/src/utils/headers.js +115 -0
  91. package/src/utils/request.js +305 -0
  92. package/.travis.yml +0 -6
  93. package/src/addExternalModule.js +0 -23
  94. package/src/addUserToGroup.js +0 -113
  95. package/src/changeAdminStatus.js +0 -95
  96. package/src/changeApprovalMode.js +0 -79
  97. package/src/changeArchivedStatus.js +0 -55
  98. package/src/changeBlockedStatus.js +0 -47
  99. package/src/changeBlockedStatusMqtt.js +0 -86
  100. package/src/changeGroupImage.js +0 -133
  101. package/src/changeNickname.js +0 -59
  102. package/src/changeThreadColor.js +0 -71
  103. package/src/changeThreadEmoji.js +0 -55
  104. package/src/createPoll.js +0 -130
  105. package/src/editMessage.js +0 -63
  106. package/src/forwardAttachment.js +0 -60
  107. package/src/forwardMessage.js +0 -63
  108. package/src/getGroupsList.js +0 -83
  109. package/src/getMarketplace.js +0 -84
  110. package/src/getNotifications.js +0 -86
  111. package/src/getPagesList.js +0 -83
  112. package/src/getStories.js +0 -88
  113. package/src/getThreadInfo.js +0 -222
  114. package/src/getUserInfo.js +0 -128
  115. package/src/handleMessageRequest.js +0 -65
  116. package/src/httpGet.js +0 -58
  117. package/src/httpPost.js +0 -58
  118. package/src/listenMqtt.js +0 -1018
  119. package/src/logout.js +0 -75
  120. package/src/markAsSeen.js +0 -61
  121. package/src/pinMessage.js +0 -61
  122. package/src/removeUserFromGroup.js +0 -79
  123. package/src/searchUsers.js +0 -89
  124. package/src/sendComment.js +0 -161
  125. package/src/sendMessage.js +0 -457
  126. package/src/sendTypingIndicator.js +0 -179
  127. package/src/setBio.js +0 -86
  128. package/src/setMessageReaction.js +0 -186
  129. package/src/setPostReaction.js +0 -71
  130. package/src/setTheme.js +0 -313
  131. package/src/setTitle.js +0 -90
  132. package/src/shareLink.js +0 -62
  133. package/src/threadColors.js +0 -57
  134. package/src/unfriend.js +0 -53
  135. package/src/unsendMessage.js +0 -104
package/src/createPoll.js DELETED
@@ -1,130 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
- var log = require("npmlog");
5
- const { generateOfflineThreadingID } = require("../utils");
6
-
7
- module.exports = function (defaultFuncs, api, ctx) {
8
- function createPollNoMqtt(title, threadID, options, callback) {
9
- var resolveFunc = function () {};
10
- var rejectFunc = function () {};
11
- var returnPromise = new Promise(function (resolve, reject) {
12
- resolveFunc = resolve;
13
- rejectFunc = reject;
14
- });
15
-
16
- if (!callback) {
17
- if (utils.getType(options) == "Function") {
18
- callback = options;
19
- options = null;
20
- } else {
21
- callback = function (err) {
22
- if (err) {
23
- return rejectFunc(err);
24
- }
25
- resolveFunc();
26
- };
27
- }
28
- }
29
- if (!options) {
30
- options = {}; // Initial poll options are optional
31
- }
32
-
33
- var form = {
34
- target_id: threadID,
35
- question_text: title,
36
- };
37
-
38
- // Set fields for options (and whether they are selected initially by the posting user)
39
- var ind = 0;
40
- for (var opt in options) {
41
- // eslint-disable-next-line no-prototype-builtins
42
- if (options.hasOwnProperty(opt)) {
43
- form["option_text_array[" + ind + "]"] = opt;
44
- form["option_is_selected_array[" + ind + "]"] = options[opt]
45
- ? "1"
46
- : "0";
47
- ind++;
48
- }
49
- }
50
-
51
- defaultFuncs
52
- .post(
53
- "https://www.facebook.com/messaging/group_polling/create_poll/?dpr=1",
54
- ctx.jar,
55
- form,
56
- )
57
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
58
- .then(function (resData) {
59
- if (resData.payload.status != "success") {
60
- throw resData;
61
- }
62
-
63
- return callback();
64
- })
65
- .catch(function (err) {
66
- log.error("createPoll", err);
67
- return callback(err);
68
- });
69
-
70
- return returnPromise;
71
- }
72
-
73
- function createPollMqtt(title, options, threadID, callback) {
74
- if (!ctx.mqttClient) {
75
- throw new Error("Not connected to MQTT");
76
- }
77
-
78
- ctx.wsReqNumber += 1;
79
- ctx.wsTaskNumber += 1;
80
-
81
- const taskPayload = {
82
- question_text: title,
83
- thread_key: threadID,
84
- options: options,
85
- sync_group: 1,
86
- };
87
-
88
- const task = {
89
- failure_count: null,
90
- label: "163",
91
- payload: JSON.stringify(taskPayload),
92
- queue_name: "poll_creation",
93
- task_id: ctx.wsTaskNumber,
94
- };
95
-
96
- const content = {
97
- app_id: "2220391788200892",
98
- payload: JSON.stringify({
99
- data_trace_id: null,
100
- epoch_id: parseInt(generateOfflineThreadingID()),
101
- tasks: [task],
102
- version_id: "7158486590867448",
103
- }),
104
- request_id: ctx.wsReqNumber,
105
- type: 3,
106
- };
107
-
108
- // if (isCallable(callback)) {
109
- // // to be implemented
110
- // }
111
-
112
- ctx.mqttClient.publish("/ls_req", JSON.stringify(content), {
113
- qos: 1,
114
- retain: false,
115
- });
116
- }
117
-
118
- return function createPoll(title, threadID, options, callback) {
119
- if (ctx.mqttClient) {
120
- try {
121
- createPollMqtt(reaction, messageID, threadID, callback);
122
- callback();
123
- } catch (e) {
124
- createPollNoMqtt(title, threadID, options, callback);
125
- }
126
- } else {
127
- return createPollNoMqtt(title, threadID, options, callback);
128
- }
129
- };
130
- };
@@ -1,63 +0,0 @@
1
- "use_strict";
2
-
3
- const { generateOfflineThreadingID } = require("../utils");
4
-
5
- function isCallable(func) {
6
- try {
7
- Reflect.apply(func, null, []);
8
- return true;
9
- } catch (error) {
10
- return false;
11
- }
12
- }
13
-
14
- module.exports = function (defaultFuncs, api, ctx) {
15
- return function editMessage(text, messageID, callback) {
16
- if (!ctx.mqttClient) {
17
- throw new Error("Not connected to MQTT");
18
- }
19
-
20
- ctx.wsReqNumber += 1;
21
- let taskNumber = ++ctx.wsTaskNumber;
22
-
23
- const taskPayload = {
24
- message_id: messageID,
25
- text: text,
26
- };
27
-
28
- const task = {
29
- failure_count: null,
30
- label: "742",
31
- payload: JSON.stringify(taskPayload),
32
- queue_name: "edit_message",
33
- task_id: taskNumber,
34
- };
35
-
36
- const content = {
37
- app_id: "2220391788200892",
38
- payload: {
39
- data_trace_id: null,
40
- epoch_id: parseInt(generateOfflineThreadingID()),
41
- tasks: [],
42
- version_id: "6903494529735864",
43
- },
44
- request_id: ctx.wsReqNumber,
45
- type: 3,
46
- };
47
-
48
- content.payload.tasks.push(task);
49
- content.payload = JSON.stringify(content.payload);
50
-
51
- if (isCallable(callback)) {
52
- ctx["tasks"].set(taskNumber, {
53
- type: "edit_message",
54
- callback: callback,
55
- });
56
- }
57
-
58
- ctx.mqttClient.publish("/ls_req", JSON.stringify(content), {
59
- qos: 1,
60
- retain: false,
61
- });
62
- };
63
- };
@@ -1,60 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
- var log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function forwardAttachment(attachmentID, userOrUsers, callback) {
8
- var resolveFunc = function () {};
9
- var rejectFunc = function () {};
10
- var returnPromise = new Promise(function (resolve, reject) {
11
- resolveFunc = resolve;
12
- rejectFunc = reject;
13
- });
14
- if (!callback) {
15
- callback = function (err) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
19
- resolveFunc();
20
- };
21
- }
22
-
23
- var form = {
24
- attachment_id: attachmentID,
25
- };
26
-
27
- if (utils.getType(userOrUsers) !== "Array") {
28
- userOrUsers = [userOrUsers];
29
- }
30
-
31
- var timestamp = Math.floor(Date.now() / 1000);
32
-
33
- for (var i = 0; i < userOrUsers.length; i++) {
34
- //That's good, the key of the array is really timestmap in seconds + index
35
- //Probably time when the attachment will be sent?
36
- form["recipient_map[" + (timestamp + i) + "]"] = userOrUsers[i];
37
- }
38
-
39
- defaultFuncs
40
- .post(
41
- "https://www.facebook.com/mercury/attachments/forward/",
42
- ctx.jar,
43
- form,
44
- )
45
- .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs))
46
- .then(function (resData) {
47
- if (resData.error) {
48
- throw resData;
49
- }
50
-
51
- return callback();
52
- })
53
- .catch(function (err) {
54
- log.error("forwardAttachment", err);
55
- return callback(err);
56
- });
57
-
58
- return returnPromise;
59
- };
60
- };
@@ -1,63 +0,0 @@
1
- "use strict";
2
-
3
- const { generateOfflineThreadingID, getCurrentTimestamp } = require("../utils");
4
-
5
- function isCallable(func) {
6
- try {
7
- Reflect.apply(func, null, []);
8
- return true;
9
- } catch (error) {
10
- return false;
11
- }
12
- }
13
-
14
- module.exports = function (defaultFuncs, api, ctx) {
15
- return function forwardMessage(messageID, threadID, callback) {
16
- if (!ctx.mqttClient) {
17
- throw new Error("Not connected to MQTT");
18
- }
19
-
20
- ctx.wsReqNumber += 1;
21
- ctx.wsTaskNumber += 1;
22
-
23
- const taskPayload = {
24
- thread_id: threadID,
25
- otid: parseInt(generateOfflineThreadingID()),
26
- source: 65544,
27
- send_type: 5,
28
- sync_group: 1,
29
- forwarded_msg_id: messageID,
30
- strip_forwarded_msg_caption: 0,
31
- initiating_source: 1,
32
- };
33
-
34
- const task = {
35
- failure_count: null,
36
- label: "46",
37
- payload: JSON.stringify(taskPayload),
38
- queue_name: `${threadID}`,
39
- task_id: ctx.wsTaskNumber,
40
- };
41
-
42
- const content = {
43
- app_id: "2220391788200892",
44
- payload: JSON.stringify({
45
- data_trace_id: null,
46
- epoch_id: parseInt(generateOfflineThreadingID()),
47
- tasks: [task],
48
- version_id: "25095469420099952",
49
- }),
50
- request_id: ctx.wsReqNumber,
51
- type: 3,
52
- };
53
-
54
- if (isCallable(callback)) {
55
- // to be implemented
56
- }
57
-
58
- ctx.mqttClient.publish("/ls_req", JSON.stringify(content), {
59
- qos: 1,
60
- retain: false,
61
- });
62
- };
63
- };
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
- var log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- /**
8
- * Get list of groups user belongs to
9
- * @param {number} limit - Number of groups to fetch
10
- * @param {function} callback - Callback function
11
- */
12
- return function getGroupsList(limit, callback) {
13
- var resolveFunc = function () {};
14
- var rejectFunc = function () {};
15
- var returnPromise = new Promise(function (resolve, reject) {
16
- resolveFunc = resolve;
17
- rejectFunc = reject;
18
- });
19
-
20
- if (!callback) {
21
- if (utils.getType(limit) == "Function") {
22
- callback = limit;
23
- limit = 20;
24
- } else {
25
- callback = function (err, data) {
26
- if (err) {
27
- return rejectFunc(err);
28
- }
29
- resolveFunc(data);
30
- };
31
- }
32
- }
33
-
34
- if (utils.getType(limit) != "Number") {
35
- limit = 20;
36
- }
37
-
38
- var form = {
39
- av: ctx.userID,
40
- fb_api_caller_class: "RelayModern",
41
- fb_api_req_friendly_name: "GroupsListQuery",
42
- doc_id: "7214102258676893",
43
- variables: JSON.stringify({
44
- first: limit,
45
- }),
46
- };
47
-
48
- defaultFuncs
49
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
- .then(function (resData) {
52
- if (resData.errors) {
53
- throw resData;
54
- }
55
-
56
- var groups = [];
57
- if (
58
- resData.data &&
59
- resData.data.viewer &&
60
- resData.data.viewer.groups &&
61
- resData.data.viewer.groups.edges
62
- ) {
63
- groups = resData.data.viewer.groups.edges.map(function (edge) {
64
- return {
65
- id: edge.node.id,
66
- name: edge.node.name,
67
- memberCount: edge.node.member_count,
68
- url: edge.node.url,
69
- };
70
- });
71
- }
72
-
73
- log.info("getGroupsList", "Fetched " + groups.length + " groups");
74
- return callback(null, groups);
75
- })
76
- .catch(function (err) {
77
- log.error("getGroupsList", err);
78
- return callback(err);
79
- });
80
-
81
- return returnPromise;
82
- };
83
- };
@@ -1,84 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
- var log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- /**
8
- * Get marketplace listings
9
- * @param {number} limit - Number of listings to fetch
10
- * @param {function} callback - Callback function
11
- */
12
- return function getMarketplace(limit, callback) {
13
- var resolveFunc = function () {};
14
- var rejectFunc = function () {};
15
- var returnPromise = new Promise(function (resolve, reject) {
16
- resolveFunc = resolve;
17
- rejectFunc = reject;
18
- });
19
-
20
- if (!callback) {
21
- if (utils.getType(limit) == "Function") {
22
- callback = limit;
23
- limit = 20;
24
- } else {
25
- callback = function (err, data) {
26
- if (err) {
27
- return rejectFunc(err);
28
- }
29
- resolveFunc(data);
30
- };
31
- }
32
- }
33
-
34
- if (utils.getType(limit) != "Number") {
35
- limit = 20;
36
- }
37
-
38
- var form = {
39
- av: ctx.userID,
40
- fb_api_caller_class: "RelayModern",
41
- fb_api_req_friendly_name: "MarketplaceQuery",
42
- doc_id: "25393437286970779",
43
- variables: JSON.stringify({
44
- first: limit,
45
- }),
46
- };
47
-
48
- defaultFuncs
49
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
- .then(function (resData) {
52
- if (resData.errors) {
53
- throw resData;
54
- }
55
-
56
- var listings = [];
57
- if (
58
- resData.data &&
59
- resData.data.marketplace &&
60
- resData.data.marketplace.listings
61
- ) {
62
- listings = resData.data.marketplace.listings.map(function (item) {
63
- return {
64
- id: item.id,
65
- title: item.title,
66
- price: item.price,
67
- location: item.location,
68
- url: item.url,
69
- imageUrl: item.image ? item.image.uri : null,
70
- };
71
- });
72
- }
73
-
74
- log.info("getMarketplace", "Fetched " + listings.length + " listings");
75
- return callback(null, listings);
76
- })
77
- .catch(function (err) {
78
- log.error("getMarketplace", err);
79
- return callback(err);
80
- });
81
-
82
- return returnPromise;
83
- };
84
- };
@@ -1,86 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
- var log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- /**
8
- * Get user notifications
9
- * @param {number} limit - Number of notifications to fetch
10
- * @param {function} callback - Callback function
11
- */
12
- return function getNotifications(limit, callback) {
13
- var resolveFunc = function () {};
14
- var rejectFunc = function () {};
15
- var returnPromise = new Promise(function (resolve, reject) {
16
- resolveFunc = resolve;
17
- rejectFunc = reject;
18
- });
19
-
20
- if (!callback) {
21
- if (utils.getType(limit) == "Function") {
22
- callback = limit;
23
- limit = 20;
24
- } else {
25
- callback = function (err, data) {
26
- if (err) {
27
- return rejectFunc(err);
28
- }
29
- resolveFunc(data);
30
- };
31
- }
32
- }
33
-
34
- if (utils.getType(limit) != "Number") {
35
- limit = 20;
36
- }
37
-
38
- var form = {
39
- av: ctx.userID,
40
- fb_api_caller_class: "RelayModern",
41
- fb_api_req_friendly_name: "NotificationsQuery",
42
- doc_id: "24804310205905615",
43
- variables: JSON.stringify({
44
- first: limit,
45
- }),
46
- };
47
-
48
- defaultFuncs
49
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
- .then(function (resData) {
52
- if (resData.errors) {
53
- throw resData;
54
- }
55
-
56
- var notifications = [];
57
- if (
58
- resData.data &&
59
- resData.data.viewer &&
60
- resData.data.viewer.notifications &&
61
- resData.data.viewer.notifications.edges
62
- ) {
63
- notifications = resData.data.viewer.notifications.edges.map(
64
- function (edge) {
65
- return {
66
- id: edge.node.id,
67
- text: edge.node.body ? edge.node.body.text : "",
68
- timestamp: edge.node.timestamp,
69
- isRead: edge.node.is_read,
70
- icon: edge.node.icon ? edge.node.icon.uri : null,
71
- };
72
- }
73
- );
74
- }
75
-
76
- log.info("getNotifications", "Fetched " + notifications.length + " notifications");
77
- return callback(null, notifications);
78
- })
79
- .catch(function (err) {
80
- log.error("getNotifications", err);
81
- return callback(err);
82
- });
83
-
84
- return returnPromise;
85
- };
86
- };
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
- var log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- /**
8
- * Get list of pages user manages
9
- * @param {number} limit - Number of pages to fetch
10
- * @param {function} callback - Callback function
11
- */
12
- return function getPagesList(limit, callback) {
13
- var resolveFunc = function () {};
14
- var rejectFunc = function () {};
15
- var returnPromise = new Promise(function (resolve, reject) {
16
- resolveFunc = resolve;
17
- rejectFunc = reject;
18
- });
19
-
20
- if (!callback) {
21
- if (utils.getType(limit) == "Function") {
22
- callback = limit;
23
- limit = 20;
24
- } else {
25
- callback = function (err, data) {
26
- if (err) {
27
- return rejectFunc(err);
28
- }
29
- resolveFunc(data);
30
- };
31
- }
32
- }
33
-
34
- if (utils.getType(limit) != "Number") {
35
- limit = 20;
36
- }
37
-
38
- var form = {
39
- av: ctx.userID,
40
- fb_api_caller_class: "RelayModern",
41
- fb_api_req_friendly_name: "PagesListQuery",
42
- doc_id: "25909428212080747",
43
- variables: JSON.stringify({
44
- first: limit,
45
- }),
46
- };
47
-
48
- defaultFuncs
49
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
- .then(function (resData) {
52
- if (resData.errors) {
53
- throw resData;
54
- }
55
-
56
- var pages = [];
57
- if (
58
- resData.data &&
59
- resData.data.viewer &&
60
- resData.data.viewer.managed_pages &&
61
- resData.data.viewer.managed_pages.edges
62
- ) {
63
- pages = resData.data.viewer.managed_pages.edges.map(function (edge) {
64
- return {
65
- id: edge.node.id,
66
- name: edge.node.name,
67
- url: edge.node.url,
68
- fanCount: edge.node.fan_count,
69
- };
70
- });
71
- }
72
-
73
- log.info("getPagesList", "Fetched " + pages.length + " pages");
74
- return callback(null, pages);
75
- })
76
- .catch(function (err) {
77
- log.error("getPagesList", err);
78
- return callback(err);
79
- });
80
-
81
- return returnPromise;
82
- };
83
- };