node-ainzfb-new 1.6.0 → 1.6.30-test

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 (76) hide show
  1. package/.gitattributes +0 -0
  2. package/.github/dependabot.yml +0 -0
  3. package/.github/workflows/nodejs.yml +0 -0
  4. package/.github/workflows/npmpublish.yml +0 -0
  5. package/DOCS.md +0 -0
  6. package/Extra/Database/index.js +0 -0
  7. package/Extra/Database/methods.js +0 -0
  8. package/Extra/ExtraAddons.js +0 -0
  9. package/Extra/ExtraGetThread.js +0 -0
  10. package/Extra/ExtraUptimeRobot.js +0 -0
  11. package/Extra/PM2/ecosystem.config.js +0 -0
  12. package/Extra/Src/Last-Run.js +0 -0
  13. package/LICENSE-MIT +0 -0
  14. package/Language/index.json +0 -0
  15. package/README.md +0 -0
  16. package/StateCrypt.js +0 -0
  17. package/broadcast.js +0 -0
  18. package/index.js +0 -0
  19. package/logger.js +0 -0
  20. package/package.json +2 -4
  21. package/src/addExternalModule.js +13 -6
  22. package/src/addUserToGroup.js +35 -12
  23. package/src/changeAdminStatus.js +32 -16
  24. package/src/changeArchivedStatus.js +15 -9
  25. package/src/changeAvt.js +91 -0
  26. package/src/changeBio.js +12 -8
  27. package/src/changeBlockedStatus.js +14 -8
  28. package/src/changeGroupImage.js +27 -13
  29. package/src/changeNickname.js +19 -10
  30. package/src/changeThreadColor.js +15 -10
  31. package/src/changeThreadEmoji.js +17 -9
  32. package/src/createNewGroup.js +18 -10
  33. package/src/createPoll.js +16 -11
  34. package/src/deleteMessage.js +16 -10
  35. package/src/deleteThread.js +16 -10
  36. package/src/forwardAttachment.js +14 -9
  37. package/src/getAccessToken.js +0 -0
  38. package/src/getCurrentUserID.js +1 -1
  39. package/src/getEmojiUrl.js +3 -2
  40. package/src/getFriendsList.js +18 -10
  41. package/src/getMessage.js +52 -48
  42. package/src/getThreadHistory.js +156 -59
  43. package/src/getThreadHistoryDeprecated.js +26 -15
  44. package/src/getThreadInfo.js +0 -0
  45. package/src/getThreadInfoDeprecated.js +25 -13
  46. package/src/getThreadList.js +112 -53
  47. package/src/getThreadListDeprecated.js +30 -12
  48. package/src/getThreadPictures.js +25 -13
  49. package/src/getUserID.js +8 -7
  50. package/src/getUserInfo.js +12 -9
  51. package/src/getUserInfoV2.js +0 -0
  52. package/src/handleFriendRequest.js +10 -9
  53. package/src/handleMessageRequest.js +16 -10
  54. package/src/httpGet.js +18 -13
  55. package/src/httpPost.js +18 -13
  56. package/src/httpPostFormData.js +14 -9
  57. package/src/listenMqtt.js +1218 -571
  58. package/src/logout.js +18 -13
  59. package/src/markAsDelivered.js +16 -10
  60. package/src/markAsRead.js +36 -24
  61. package/src/markAsReadAll.js +14 -10
  62. package/src/markAsSeen.js +18 -11
  63. package/src/muteThread.js +12 -8
  64. package/src/removeUserFromGroup.js +33 -10
  65. package/src/resolvePhotoUrl.js +8 -6
  66. package/src/searchForThread.js +13 -8
  67. package/src/sendMessage.js +172 -78
  68. package/src/sendTypingIndicator.js +29 -14
  69. package/src/setMessageReaction.js +13 -8
  70. package/src/setPostReaction.js +97 -95
  71. package/src/setTitle.js +18 -12
  72. package/src/threadColors.js +17 -17
  73. package/src/unfriend.js +14 -9
  74. package/src/unsendMessage.js +7 -7
  75. package/utils.js +12 -13
  76. package/CHANGELOG.md +0 -2
@@ -29,10 +29,10 @@ function formatAttachmentsGraphQLResponse(attachment) {
29
29
  // @Undocumented
30
30
  attributionApp: attachment.attribution_app
31
31
  ? {
32
- attributionAppID: attachment.attribution_app.id,
33
- name: attachment.attribution_app.name,
34
- logo: attachment.attribution_app.square_logo
35
- }
32
+ attributionAppID: attachment.attribution_app.id,
33
+ name: attachment.attribution_app.name,
34
+ logo: attachment.attribution_app.square_logo
35
+ }
36
36
  : null
37
37
 
38
38
  // @TODO No idea what this is, should we expose it?
@@ -78,10 +78,10 @@ function formatAttachmentsGraphQLResponse(attachment) {
78
78
  // @Undocumented
79
79
  attributionApp: attachment.attribution_app
80
80
  ? {
81
- attributionAppID: attachment.attribution_app.id,
82
- name: attachment.attribution_app.name,
83
- logo: attachment.attribution_app.square_logo
84
- }
81
+ attributionAppID: attachment.attribution_app.id,
82
+ name: attachment.attribution_app.name,
83
+ logo: attachment.attribution_app.square_logo
84
+ }
85
85
  : null
86
86
  };
87
87
  case "MessageVideo":
@@ -144,15 +144,56 @@ function formatExtensibleAttachment(attachment) {
144
144
  url: attachment.story_attachment.url,
145
145
 
146
146
  title: attachment.story_attachment.title_with_entities.text,
147
- description: attachment.story_attachment.description && attachment.story_attachment.description.text,
148
- source: attachment.story_attachment.source == null ? null : attachment.story_attachment.source.text,
149
-
150
- image: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).uri,
151
- width: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).width,
152
- height: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).height,
153
- playable: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.is_playable,
154
- duration: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.playable_duration_in_ms,
155
- playableUrl: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.playable_url,
147
+ description:
148
+ attachment.story_attachment.description &&
149
+ attachment.story_attachment.description.text,
150
+ source:
151
+ attachment.story_attachment.source == null
152
+ ? null
153
+ : attachment.story_attachment.source.text,
154
+
155
+ image:
156
+ attachment.story_attachment.media == null
157
+ ? null
158
+ : attachment.story_attachment.media.animated_image == null &&
159
+ attachment.story_attachment.media.image == null
160
+ ? null
161
+ : (
162
+ attachment.story_attachment.media.animated_image ||
163
+ attachment.story_attachment.media.image
164
+ ).uri,
165
+ width:
166
+ attachment.story_attachment.media == null
167
+ ? null
168
+ : attachment.story_attachment.media.animated_image == null &&
169
+ attachment.story_attachment.media.image == null
170
+ ? null
171
+ : (
172
+ attachment.story_attachment.media.animated_image ||
173
+ attachment.story_attachment.media.image
174
+ ).width,
175
+ height:
176
+ attachment.story_attachment.media == null
177
+ ? null
178
+ : attachment.story_attachment.media.animated_image == null &&
179
+ attachment.story_attachment.media.image == null
180
+ ? null
181
+ : (
182
+ attachment.story_attachment.media.animated_image ||
183
+ attachment.story_attachment.media.image
184
+ ).height,
185
+ playable:
186
+ attachment.story_attachment.media == null
187
+ ? null
188
+ : attachment.story_attachment.media.is_playable,
189
+ duration:
190
+ attachment.story_attachment.media == null
191
+ ? null
192
+ : attachment.story_attachment.media.playable_duration_in_ms,
193
+ playableUrl:
194
+ attachment.story_attachment.media == null
195
+ ? null
196
+ : attachment.story_attachment.media.playable_url,
156
197
 
157
198
  subattachments: attachment.story_attachment.subattachments,
158
199
 
@@ -169,22 +210,52 @@ function formatExtensibleAttachment(attachment) {
169
210
  // width: "1280"
170
211
  // }
171
212
  //
172
- properties: attachment.story_attachment.properties.reduce(function (obj, cur) {
213
+ properties: attachment.story_attachment.properties.reduce(function(
214
+ obj,
215
+ cur
216
+ ) {
173
217
  obj[cur.key] = cur.value.text;
174
218
  return obj;
175
- }, {}),
219
+ },
220
+ {}),
176
221
 
177
222
  // Deprecated fields
178
223
  animatedImageSize: "", // @Legacy
179
224
  facebookUrl: "", // @Legacy
180
225
  styleList: "", // @Legacy
181
226
  target: "", // @Legacy
182
- thumbnailUrl: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).uri, // @Legacy
183
- thumbnailWidth: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).width, // @Legacy
184
- thumbnailHeight: attachment.story_attachment.media == null ? null : attachment.story_attachment.media.animated_image == null && attachment.story_attachment.media.image == null ? null : (attachment.story_attachment.media.animated_image || attachment.story_attachment.media.image).height // @Legacy
227
+ thumbnailUrl:
228
+ attachment.story_attachment.media == null
229
+ ? null
230
+ : attachment.story_attachment.media.animated_image == null &&
231
+ attachment.story_attachment.media.image == null
232
+ ? null
233
+ : (
234
+ attachment.story_attachment.media.animated_image ||
235
+ attachment.story_attachment.media.image
236
+ ).uri, // @Legacy
237
+ thumbnailWidth:
238
+ attachment.story_attachment.media == null
239
+ ? null
240
+ : attachment.story_attachment.media.animated_image == null &&
241
+ attachment.story_attachment.media.image == null
242
+ ? null
243
+ : (
244
+ attachment.story_attachment.media.animated_image ||
245
+ attachment.story_attachment.media.image
246
+ ).width, // @Legacy
247
+ thumbnailHeight:
248
+ attachment.story_attachment.media == null
249
+ ? null
250
+ : attachment.story_attachment.media.animated_image == null &&
251
+ attachment.story_attachment.media.image == null
252
+ ? null
253
+ : (
254
+ attachment.story_attachment.media.animated_image ||
255
+ attachment.story_attachment.media.image
256
+ ).height // @Legacy
185
257
  };
186
- }
187
- else return { error: "Don't know what to do with extensible_attachment." };
258
+ } else return { error: "Don't know what to do with extensible_attachment." };
188
259
  }
189
260
 
190
261
  function formatReactionsGraphQL(reaction) {
@@ -195,7 +266,7 @@ function formatReactionsGraphQL(reaction) {
195
266
  }
196
267
 
197
268
  function formatEventData(event) {
198
- if (event == null) return {}
269
+ if (event == null) return {};
199
270
 
200
271
  switch (event.__typename) {
201
272
  case "ThemeColorExtensibleMessageAdminText":
@@ -209,7 +280,7 @@ function formatEventData(event) {
209
280
  return { threadIcon: event.thread_icon };
210
281
  case "InstantGameUpdateExtensibleMessageAdminText":
211
282
  return {
212
- gameID: (event.game == null ? null : event.game.id),
283
+ gameID: event.game == null ? null : event.game.id,
213
284
  update_type: event.update_type,
214
285
  collapsed_text: event.collapsed_text,
215
286
  expanded_text: event.expanded_text,
@@ -264,15 +335,19 @@ function formatEventData(event) {
264
335
  case "LightweightEventDeleteExtensibleMessageAdminText":
265
336
  return {};
266
337
  default:
267
- return { error: "Don't know what to with event data type " + event.__typename };
338
+ return {
339
+ error: "Don't know what to with event data type " + event.__typename
340
+ };
268
341
  }
269
342
  }
270
343
 
271
344
  function formatMessagesGraphQLResponse(data) {
272
345
  var messageThread = data.o0.data.message_thread;
273
- var threadID = messageThread.thread_key.thread_fbid ? messageThread.thread_key.thread_fbid : messageThread.thread_key.other_user_id;
346
+ var threadID = messageThread.thread_key.thread_fbid
347
+ ? messageThread.thread_key.thread_fbid
348
+ : messageThread.thread_key.other_user_id;
274
349
 
275
- var messages = messageThread.messages.nodes.map(function (d) {
350
+ var messages = messageThread.messages.nodes.map(function(d) {
276
351
  switch (d.__typename) {
277
352
  case "UserMessage":
278
353
  // Give priority to stickers. They're seen as normal messages but we've
@@ -308,7 +383,13 @@ function formatMessagesGraphQLResponse(data) {
308
383
 
309
384
  var mentionsObj = {};
310
385
  if (d.message !== null) {
311
- d.message.ranges.forEach(e => mentionsObj[e.entity.id] = d.message.text.substr(e.offset, e.length));
386
+ d.message.ranges.forEach(
387
+ e =>
388
+ (mentionsObj[e.entity.id] = d.message.text.substr(
389
+ e.offset,
390
+ e.length
391
+ ))
392
+ );
312
393
  }
313
394
 
314
395
  return {
@@ -320,7 +401,7 @@ function formatMessagesGraphQLResponse(data) {
320
401
  : d.extensible_attachment
321
402
  ? [formatExtensibleAttachment(d.extensible_attachment)]
322
403
  : [],
323
- body: d.message !== null ? d.message.text : '',
404
+ body: d.message !== null ? d.message.text : "",
324
405
  isGroup: messageThread.thread_type === "GROUP",
325
406
  messageID: d.message_id,
326
407
  senderID: d.message_sender.id,
@@ -331,7 +412,9 @@ function formatMessagesGraphQLResponse(data) {
331
412
  isUnread: d.unread,
332
413
 
333
414
  // New
334
- messageReactions: d.message_reactions ? d.message_reactions.map(formatReactionsGraphQL) : null,
415
+ messageReactions: d.message_reactions
416
+ ? d.message_reactions.map(formatReactionsGraphQL)
417
+ : null,
335
418
  isSponsored: d.is_sponsored,
336
419
  snippet: d.snippet
337
420
  };
@@ -362,21 +445,26 @@ function formatMessagesGraphQLResponse(data) {
362
445
  timestamp: d.timestamp_precise,
363
446
  eventType: "change_thread_image",
364
447
  snippet: d.snippet,
365
- eventData: d.image_with_metadata == null
366
- ? {} /* removed image */
367
- : {
368
- /* image added */
369
- threadImage: {
370
- attachmentID: d.image_with_metadata.legacy_attachment_id,
371
- width: d.image_with_metadata.original_dimensions.x,
372
- height: d.image_with_metadata.original_dimensions.y,
373
- url: d.image_with_metadata.preview.uri
374
- }
375
- },
448
+ eventData:
449
+ d.image_with_metadata == null
450
+ ? {} /* removed image */
451
+ : {
452
+ /* image added */
453
+ threadImage: {
454
+ attachmentID: d.image_with_metadata.legacy_attachment_id,
455
+ width: d.image_with_metadata.original_dimensions.x,
456
+ height: d.image_with_metadata.original_dimensions.y,
457
+ url: d.image_with_metadata.preview.uri
458
+ }
459
+ },
376
460
 
377
461
  // @Legacy
378
462
  logMessageType: "log:thread-icon",
379
- logMessageData: { thread_icon: d.image_with_metadata ? d.image_with_metadata.preview.uri : null }
463
+ logMessageData: {
464
+ thread_icon: d.image_with_metadata
465
+ ? d.image_with_metadata.preview.uri
466
+ : null
467
+ }
380
468
  };
381
469
  case "ParticipantLeftMessage":
382
470
  return {
@@ -390,7 +478,7 @@ function formatMessagesGraphQLResponse(data) {
390
478
  snippet: d.snippet,
391
479
  eventData: {
392
480
  // Array of IDs.
393
- participantsRemoved: d.participants_removed.map(function (p) {
481
+ participantsRemoved: d.participants_removed.map(function(p) {
394
482
  return p.id;
395
483
  })
396
484
  },
@@ -398,7 +486,7 @@ function formatMessagesGraphQLResponse(data) {
398
486
  // @Legacy
399
487
  logMessageType: "log:unsubscribe",
400
488
  logMessageData: {
401
- leftParticipantFbId: d.participants_removed.map(function (p) {
489
+ leftParticipantFbId: d.participants_removed.map(function(p) {
402
490
  return p.id;
403
491
  })
404
492
  }
@@ -415,7 +503,7 @@ function formatMessagesGraphQLResponse(data) {
415
503
  snippet: d.snippet,
416
504
  eventData: {
417
505
  // Array of IDs.
418
- participantsAdded: d.participants_added.map(function (p) {
506
+ participantsAdded: d.participants_added.map(function(p) {
419
507
  return p.id;
420
508
  })
421
509
  },
@@ -423,7 +511,7 @@ function formatMessagesGraphQLResponse(data) {
423
511
  // @Legacy
424
512
  logMessageType: "log:subscribe",
425
513
  logMessageData: {
426
- addedParticipants: d.participants_added.map(function (p) {
514
+ addedParticipants: d.participants_added.map(function(p) {
427
515
  return p.id;
428
516
  })
429
517
  }
@@ -481,17 +569,22 @@ function formatMessagesGraphQLResponse(data) {
481
569
  return messages;
482
570
  }
483
571
 
484
- module.exports = function (defaultFuncs, api, ctx) {
485
- return function getThreadHistoryGraphQL(threadID, amount, timestamp, callback) {
486
- var resolveFunc = function () { };
487
- var rejectFunc = function () { };
488
- var returnPromise = new Promise(function (resolve, reject) {
572
+ module.exports = function(defaultFuncs, api, ctx) {
573
+ return function getThreadHistoryGraphQL(
574
+ threadID,
575
+ amount,
576
+ timestamp,
577
+ callback
578
+ ) {
579
+ var resolveFunc = function() {};
580
+ var rejectFunc = function() {};
581
+ var returnPromise = new Promise(function(resolve, reject) {
489
582
  resolveFunc = resolve;
490
583
  rejectFunc = reject;
491
584
  });
492
585
 
493
586
  if (!callback) {
494
- callback = function (err, data) {
587
+ callback = function(err, data) {
495
588
  if (err) return rejectFunc(err);
496
589
  resolveFunc(data);
497
590
  };
@@ -500,7 +593,7 @@ module.exports = function (defaultFuncs, api, ctx) {
500
593
  // `queries` has to be a string. I couldn't tell from the dev console. This
501
594
  // took me a really long time to figure out. I deserve a cookie for this.
502
595
  var form = {
503
- "av": ctx.globalOptions.pageID,
596
+ av: ctx.globalOptions.pageID,
504
597
  queries: JSON.stringify({
505
598
  o0: {
506
599
  // This doc_id was valid on February 2nd 2017.
@@ -519,16 +612,20 @@ module.exports = function (defaultFuncs, api, ctx) {
519
612
  defaultFuncs
520
613
  .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
521
614
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
522
- .then(function (resData) {
615
+ .then(function(resData) {
523
616
  if (resData.error) throw resData;
524
617
  // This returns us an array of things. The last one is the success /
525
618
  // failure one.
526
619
  // @TODO What do we do in this case?
527
- if (resData[resData.length - 1].error_results !== 0) throw new Error("There was an error_result.");
620
+ if (resData[resData.length - 1].error_results !== 0)
621
+ throw new Error("There was an error_result.");
528
622
  callback(null, formatMessagesGraphQLResponse(resData[0]));
529
623
  })
530
- .catch(function (err) {
531
- log.error("getThreadHistoryGraphQL", "Lỗi getThreadHistoryGraphQL Có Thể Do Bạn Spam Quá Nhiều, Hãy Thử Lại !");
624
+ .catch(function(err) {
625
+ log.error(
626
+ "getThreadHistoryGraphQL",
627
+ "Lỗi getThreadHistoryGraphQL Có Thể Do Bạn Spam Quá Nhiều, Hãy Thử Lại !"
628
+ );
532
629
  return callback(err);
533
630
  });
534
631
 
@@ -3,17 +3,17 @@
3
3
  var utils = require("../utils");
4
4
  var log = require("npmlog");
5
5
 
6
- module.exports = function (defaultFuncs, api, ctx) {
6
+ module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function getThreadHistory(threadID, amount, timestamp, callback) {
8
- var resolveFunc = function () { };
9
- var rejectFunc = function () { };
10
- var returnPromise = new Promise(function (resolve, reject) {
8
+ var resolveFunc = function() {};
9
+ var rejectFunc = function() {};
10
+ var returnPromise = new Promise(function(resolve, reject) {
11
11
  resolveFunc = resolve;
12
12
  rejectFunc = reject;
13
13
  });
14
14
 
15
15
  if (!callback) {
16
- callback = function (err, threadInfo) {
16
+ callback = function(err, threadInfo) {
17
17
  if (err) return rejectFunc(err);
18
18
  resolveFunc(threadInfo);
19
19
  };
@@ -24,33 +24,41 @@ module.exports = function (defaultFuncs, api, ctx) {
24
24
  client: "mercury"
25
25
  };
26
26
 
27
- api.getUserInfo(threadID, function (err, res) {
27
+ api.getUserInfo(threadID, function(err, res) {
28
28
  if (err) return callback(err);
29
29
  var key = Object.keys(res).length > 0 ? "user_ids" : "thread_fbids";
30
30
  form["messages[" + key + "][" + threadID + "][offset]"] = 0;
31
31
  form["messages[" + key + "][" + threadID + "][timestamp]"] = timestamp;
32
32
  form["messages[" + key + "][" + threadID + "][limit]"] = amount;
33
33
 
34
- if (ctx.globalOptions.pageID) form.request_user_id = ctx.globalOptions.pageID;
34
+ if (ctx.globalOptions.pageID)
35
+ form.request_user_id = ctx.globalOptions.pageID;
35
36
 
36
37
  defaultFuncs
37
- .post("https://www.facebook.com/ajax/mercury/thread_info.php", ctx.jar, form)
38
+ .post(
39
+ "https://www.facebook.com/ajax/mercury/thread_info.php",
40
+ ctx.jar,
41
+ form
42
+ )
38
43
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
39
- .then(function (resData) {
44
+ .then(function(resData) {
40
45
  if (resData.error) throw resData;
41
- else if (!resData.payload) throw { error: "Could not retrieve thread history." };
46
+ else if (!resData.payload)
47
+ throw { error: "Could not retrieve thread history." };
42
48
 
43
49
  // Asking for message history from a thread with no message history
44
50
  // will return undefined for actions here
45
51
  if (!resData.payload.actions) resData.payload.actions = [];
46
52
 
47
53
  var userIDs = {};
48
- resData.payload.actions.forEach(v => userIDs[v.author.split(":").pop()] = "");
54
+ resData.payload.actions.forEach(
55
+ v => (userIDs[v.author.split(":").pop()] = "")
56
+ );
49
57
 
50
- api.getUserInfo(Object.keys(userIDs), function (err, data) {
58
+ api.getUserInfo(Object.keys(userIDs), function(err, data) {
51
59
  if (err) return callback(err); //callback({error: "Could not retrieve user information in getThreadHistory."});
52
60
 
53
- resData.payload.actions.forEach(function (v) {
61
+ resData.payload.actions.forEach(function(v) {
54
62
  var sender = data[v.author.split(":").pop()];
55
63
  if (sender) v.sender_name = sender.name;
56
64
  else v.sender_name = "Facebook User";
@@ -58,10 +66,13 @@ module.exports = function (defaultFuncs, api, ctx) {
58
66
  delete v.author;
59
67
  });
60
68
 
61
- callback(null, resData.payload.actions.map(utils.formatHistoryMessage));
69
+ callback(
70
+ null,
71
+ resData.payload.actions.map(utils.formatHistoryMessage)
72
+ );
62
73
  });
63
74
  })
64
- .catch(function (err) {
75
+ .catch(function(err) {
65
76
  log.error("getThreadHistory", err);
66
77
  return callback(err);
67
78
  });
File without changes
@@ -3,17 +3,17 @@
3
3
  var utils = require("../utils");
4
4
  var log = require("npmlog");
5
5
 
6
- module.exports = function (defaultFuncs, api, ctx) {
6
+ module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function getThreadInfo(threadID, callback) {
8
- var resolveFunc = function () { };
9
- var rejectFunc = function () { };
10
- var returnPromise = new Promise(function (resolve, reject) {
8
+ var resolveFunc = function() {};
9
+ var rejectFunc = function() {};
10
+ var returnPromise = new Promise(function(resolve, reject) {
11
11
  resolveFunc = resolve;
12
12
  rejectFunc = reject;
13
13
  });
14
14
 
15
15
  if (!callback) {
16
- callback = function (err, data) {
16
+ callback = function(err, data) {
17
17
  if (err) return rejectFunc(err);
18
18
  resolveFunc(data);
19
19
  };
@@ -23,30 +23,42 @@ module.exports = function (defaultFuncs, api, ctx) {
23
23
  client: "mercury"
24
24
  };
25
25
 
26
- api.getUserInfo(threadID, function (err, userRes) {
26
+ api.getUserInfo(threadID, function(err, userRes) {
27
27
  if (err) return callback(err);
28
28
  var key = Object.keys(userRes).length > 0 ? "user_ids" : "thread_fbids";
29
29
  form["threads[" + key + "][0]"] = threadID;
30
30
 
31
- if (ctx.globalOptions.pageId) form.request_user_id = ctx.globalOptions.pageId;
31
+ if (ctx.globalOptions.pageId)
32
+ form.request_user_id = ctx.globalOptions.pageId;
32
33
 
33
34
  defaultFuncs
34
- .post("https://www.facebook.com/ajax/mercury/thread_info.php", ctx.jar, form)
35
+ .post(
36
+ "https://www.facebook.com/ajax/mercury/thread_info.php",
37
+ ctx.jar,
38
+ form
39
+ )
35
40
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
36
- .then(function (resData) {
41
+ .then(function(resData) {
37
42
  if (resData.error) throw resData;
38
- else if (!resData.payload) throw { error: "Could not retrieve thread Info." };
43
+ else if (!resData.payload)
44
+ throw { error: "Could not retrieve thread Info." };
39
45
 
40
46
  var threadData = resData.payload.threads[0];
41
47
  var userData = userRes[threadID];
42
48
 
43
49
  if (threadData == null) throw { error: "ThreadData is null" };
44
50
 
45
- threadData.name = userData != null && userData.name != null ? userData.name : threadData.name;
46
- threadData.image_src = userData != null && userData.thumbSrc != null ? userData.thumbSrc : threadData.image_src;
51
+ threadData.name =
52
+ userData != null && userData.name != null
53
+ ? userData.name
54
+ : threadData.name;
55
+ threadData.image_src =
56
+ userData != null && userData.thumbSrc != null
57
+ ? userData.thumbSrc
58
+ : threadData.image_src;
47
59
  callback(null, utils.formatThread(threadData));
48
60
  })
49
- .catch(function (err) {
61
+ .catch(function(err) {
50
62
  log.error("getThreadInfo", err);
51
63
  return callback(err);
52
64
  });