fca-prjvt 3.0.2 → 3.0.3

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 (2) hide show
  1. package/package.json +2 -2
  2. package/src/listenMqtt.js +58 -37
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fca-prjvt",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "Facebook-chat-api protect and deploy by Kanzu and HZI Team",
5
5
  "main": "Index.js",
6
6
  "scripts": {
@@ -23,7 +23,7 @@
23
23
  "ansi-to-html": "latest",
24
24
  "assert": "latest",
25
25
  "better-sqlite3": "7.6.2",
26
- "bluebird": "latest",
26
+ "bluebird": "^3.7.2",
27
27
  "chalk": "4.1.2",
28
28
  "cheerio": "latest",
29
29
  "crypto-js": "latest",
package/src/listenMqtt.js CHANGED
@@ -698,46 +698,58 @@ function markDelivery(ctx, api, threadID, messageID) {
698
698
  }
699
699
 
700
700
  module.exports = function (defaultFuncs, api, ctx) {
701
+ var EventEmitter = require('events');
701
702
  var globalCallback = identity;
702
- getSeqID = function getSeqID() {
703
+ var form;
704
+
705
+ async function getSeqID() {
703
706
  ctx.t_mqttCalled = false;
704
- defaultFuncs
705
- .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
706
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
707
- .then((resData) => {
708
- if (utils.getType(resData) != "Array") {
709
- if (global.Fca.Require.FastConfig.AutoLogin) {
710
- return global.Fca.Require.logger.Warning(global.Fca.Require.Language.Index.AutoLogin, function() {
711
- return global.Fca.Action('AutoLogin');
712
- });
713
- }
714
- else if (!global.Fca.Require.FastConfig.AutoLogin) {
715
- return global.Fca.Require.logger.Error(global.Fca.Require.Language.Index.ErrAppState);
716
- }
717
- return;
707
+
708
+ try {
709
+ const resData = await defaultFuncs.post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form);
710
+ await utils.parseAndCheckLogin(ctx, defaultFuncs)(resData);
711
+
712
+ if (utils.getType(resData) !== "Array") {
713
+ if (global.Fca.Require.FastConfig.AutoLogin) {
714
+ return global.Fca.Require.logger.Warning(global.Fca.Require.Language.Index.AutoLogin, function() {
715
+ return global.Fca.Action('AutoLogin');
716
+ });
717
+ } else if (!global.Fca.Require.FastConfig.AutoLogin) {
718
+ return global.Fca.Require.logger.Error(global.Fca.Require.Language.Index.ErrAppState);
718
719
  }
719
- else {
720
- if (resData && resData[resData.length - 1].error_results > 0) throw resData[0].o0.errors;
721
- if (resData[resData.length - 1].successful_results === 0) throw { error: "getSeqId: there was no successful_results", res: resData };
722
- if (resData[0].o0.data.viewer.message_threads.sync_sequence_id) {
723
- ctx.lastSeqId = resData[0].o0.data.viewer.message_threads.sync_sequence_id;
724
- listenMqtt(defaultFuncs, api, ctx, globalCallback);
725
- }
726
- else throw { error: "getSeqId: no sync_sequence_id found.", res: resData };
720
+ } else {
721
+ if (resData && resData[resData.length - 1].error_results > 0) {
722
+ throw resData[0].o0.errors;
727
723
  }
728
- })
729
- .catch((err) => {
730
- log.error("getSeqId", err);
731
- if (utils.getType(err) == "Object" && err.error === global.Fca.Require.Language.Index.ErrAppState) ctx.loggedIn = false;
732
- return globalCallback(err);
733
- });
734
- };
724
+
725
+ if (resData[resData.length - 1].successful_results === 0) {
726
+ throw { error: "getSeqId: there was no successful_results", res: resData };
727
+ }
728
+
729
+ if (resData[0].o0.data.viewer.message_threads.sync_sequence_id) {
730
+ ctx.lastSeqId = resData[0].o0.data.viewer.message_threads.sync_sequence_id;
731
+ listenMqtt(defaultFuncs, api, ctx, globalCallback);
732
+ } else {
733
+ throw { error: "getSeqId: no sync_sequence_id found.", res: resData };
734
+ }
735
+ }
736
+ } catch (err) {
737
+ log.error("getSeqId", err);
738
+
739
+ if (utils.getType(err) === "Object" && err.error === global.Fca.Require.Language.Index.ErrAppState) {
740
+ ctx.loggedIn = false;
741
+ }
742
+
743
+ return globalCallback(err);
744
+ }
745
+ }
735
746
 
736
747
  return function (callback) {
737
748
  class MessageEmitter extends EventEmitter {
738
749
  stopListening(callback) {
739
- callback = callback || (() => { });
750
+ callback = callback || (() => {});
740
751
  globalCallback = identity;
752
+
741
753
  if (ctx.mqttClient) {
742
754
  ctx.mqttClient.unsubscribe("/webrtc");
743
755
  ctx.mqttClient.unsubscribe("/rtc_multi");
@@ -747,6 +759,7 @@ module.exports = function (defaultFuncs, api, ctx) {
747
759
  ctx.mqttClient = undefined;
748
760
  });
749
761
  }
762
+
750
763
  global.Fca.Data.StopListening = true;
751
764
  }
752
765
  }
@@ -757,12 +770,14 @@ module.exports = function (defaultFuncs, api, ctx) {
757
770
  msgEmitter.emit("message", message);
758
771
  });
759
772
 
760
- //Reset some stuff
761
- if (!ctx.firstListen) ctx.lastSeqId = null;
773
+ // Reset some stuff
774
+ if (!ctx.firstListen) {
775
+ ctx.lastSeqId = null;
776
+ }
762
777
  ctx.syncToken = undefined;
763
778
  ctx.t_mqttCalled = false;
764
779
 
765
- //Same request as getThreadList
780
+ // Same request as getThreadList
766
781
  form = {
767
782
  "av": ctx.globalOptions.pageID,
768
783
  "queries": JSON.stringify({
@@ -779,9 +794,15 @@ module.exports = function (defaultFuncs, api, ctx) {
779
794
  })
780
795
  };
781
796
 
782
- if (!ctx.firstListen || !ctx.lastSeqId) getSeqID();
783
- else listenMqtt(defaultFuncs, api, ctx, globalCallback);
784
- ctx.firstListen = false;
797
+ (async () => {
798
+ if (!ctx.firstListen || !ctx.lastSeqId) {
799
+ await getSeqID();
800
+ } else {
801
+ listenMqtt(defaultFuncs, api, ctx, globalCallback);
802
+ }
803
+ ctx.firstListen = false;
804
+ })();
805
+
785
806
  return msgEmitter;
786
807
  };
787
808
  };