@cexy/hoonfca 1.0.4 → 1.0.5

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 +222 -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 +34 -0
  10. package/module/login.js +136 -0
  11. package/module/loginHelper.js +1034 -0
  12. package/module/options.js +45 -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/setBio.js DELETED
@@ -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
- * Set user bio with enhanced options
9
- * @param {string} bio - Bio text
10
- * @param {object} options - Optional settings
11
- * @param {function} callback - Callback function
12
- */
13
- return function setBio(bio, options, callback) {
14
- var resolveFunc = function () {};
15
- var rejectFunc = function () {};
16
- var returnPromise = new Promise(function (resolve, reject) {
17
- resolveFunc = resolve;
18
- rejectFunc = reject;
19
- });
20
-
21
- if (!callback) {
22
- if (
23
- utils.getType(options) == "Function" ||
24
- utils.getType(options) == "AsyncFunction"
25
- ) {
26
- callback = options;
27
- options = {};
28
- } else {
29
- callback = function (err) {
30
- if (err) {
31
- return rejectFunc(err);
32
- }
33
- resolveFunc();
34
- };
35
- }
36
- }
37
-
38
- options = options || {};
39
-
40
- if (utils.getType(bio) != "String") {
41
- return callback({ error: "Bio must be a string" });
42
- }
43
-
44
- var form = {
45
- av: ctx.userID,
46
- fb_api_caller_class: "RelayModern",
47
- fb_api_req_friendly_name: "ProfileCometSetBioMutation",
48
- doc_id: "2725043627607610",
49
- variables: JSON.stringify({
50
- input: {
51
- bio: bio,
52
- change_type: options.changeType || "ADD",
53
- should_update_bio_in_basic_info: true,
54
- source: "profile_comet",
55
- },
56
- }),
57
- };
58
-
59
- defaultFuncs
60
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
61
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
62
- .then(function (resData) {
63
- if (resData.errors) {
64
- throw resData;
65
- }
66
-
67
- var bioData = null;
68
- if (
69
- resData.data &&
70
- resData.data.profile_intro_card_set &&
71
- resData.data.profile_intro_card_set.profile_intro_card
72
- ) {
73
- bioData = resData.data.profile_intro_card_set.profile_intro_card;
74
- }
75
-
76
- log.info("setBio", "Bio updated successfully");
77
- return callback(null, bioData);
78
- })
79
- .catch(function (err) {
80
- log.error("setBio", err);
81
- return callback(err);
82
- });
83
-
84
- return returnPromise;
85
- };
86
- };
@@ -1,186 +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 setMessageReactionNoMqtt(
9
- reaction,
10
- messageID,
11
- callback,
12
- forceCustomReaction,
13
- ) {
14
- var resolveFunc = function () {};
15
- var rejectFunc = function () {};
16
- var returnPromise = new Promise(function (resolve, reject) {
17
- resolveFunc = resolve;
18
- rejectFunc = reject;
19
- });
20
-
21
- if (!callback) {
22
- callback = function (err, friendList) {
23
- if (err) {
24
- return rejectFunc(err);
25
- }
26
- resolveFunc(friendList);
27
- };
28
- }
29
-
30
- switch (reaction) {
31
- case "\uD83D\uDE0D": //:heart_eyes:
32
- case "\uD83D\uDE06": //:laughing:
33
- case "\uD83D\uDE2E": //:open_mouth:
34
- case "\uD83D\uDE22": //:cry:
35
- case "\uD83D\uDE20": //:angry:
36
- case "\uD83D\uDC4D": //:thumbsup:
37
- case "\uD83D\uDC4E": //:thumbsdown:
38
- case "\u2764": //:heart:
39
- case "\uD83D\uDC97": //:glowingheart:
40
- case "":
41
- //valid
42
- break;
43
- case ":heart_eyes:":
44
- case ":love:":
45
- reaction = "\uD83D\uDE0D";
46
- break;
47
- case ":laughing:":
48
- case ":haha:":
49
- reaction = "\uD83D\uDE06";
50
- break;
51
- case ":open_mouth:":
52
- case ":wow:":
53
- reaction = "\uD83D\uDE2E";
54
- break;
55
- case ":cry:":
56
- case ":sad:":
57
- reaction = "\uD83D\uDE22";
58
- break;
59
- case ":angry:":
60
- reaction = "\uD83D\uDE20";
61
- break;
62
- case ":thumbsup:":
63
- case ":like:":
64
- reaction = "\uD83D\uDC4D";
65
- break;
66
- case ":thumbsdown:":
67
- case ":dislike:":
68
- reaction = "\uD83D\uDC4E";
69
- break;
70
- case ":heart:":
71
- reaction = "\u2764";
72
- break;
73
- case ":glowingheart:":
74
- reaction = "\uD83D\uDC97";
75
- break;
76
- default:
77
- if (forceCustomReaction) {
78
- break;
79
- }
80
- return callback({ error: "Reaction is not a valid emoji." });
81
- }
82
-
83
- var variables = {
84
- data: {
85
- client_mutation_id: ctx.clientMutationId++,
86
- actor_id: ctx.userID,
87
- action: reaction == "" ? "REMOVE_REACTION" : "ADD_REACTION",
88
- message_id: messageID,
89
- reaction: reaction,
90
- },
91
- };
92
-
93
- var qs = {
94
- doc_id: "1491398900900362",
95
- variables: JSON.stringify(variables),
96
- dpr: 1,
97
- };
98
-
99
- defaultFuncs
100
- .postFormData(
101
- "https://www.facebook.com/webgraphql/mutation/",
102
- ctx.jar,
103
- {},
104
- qs,
105
- )
106
- .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs))
107
- .then(function (resData) {
108
- if (!resData) {
109
- throw { error: "setReaction returned empty object." };
110
- }
111
- if (resData.error) {
112
- throw resData;
113
- }
114
- callback(null);
115
- })
116
- .catch(function (err) {
117
- log.error("setReaction", err);
118
- return callback(err);
119
- });
120
-
121
- return returnPromise;
122
- }
123
- function setMessageReactionMqtt(reaction, messageID, threadID, callback) {
124
- if (!ctx.mqttClient) {
125
- throw new Error("Not connected to MQTT");
126
- }
127
-
128
- ctx.wsReqNumber += 1;
129
- let taskNumber = ++ctx.wsTaskNumber;
130
-
131
- const taskPayload = {
132
- thread_key: threadID,
133
- timestamp_ms: getCurrentTimestamp(),
134
- message_id: messageID,
135
- reaction: reaction,
136
- actor_id: ctx.userID,
137
- reaction_style: null,
138
- sync_group: 1,
139
- send_attribution: Math.random() < 0.5 ? 65537 : 524289,
140
- };
141
-
142
- const task = {
143
- failure_count: null,
144
- label: "29",
145
- payload: JSON.stringify(taskPayload),
146
- queue_name: JSON.stringify(["reaction", messageID]),
147
- task_id: taskNumber,
148
- };
149
-
150
- const content = {
151
- app_id: "2220391788200892",
152
- payload: JSON.stringify({
153
- data_trace_id: null,
154
- epoch_id: parseInt(generateOfflineThreadingID()),
155
- tasks: [task],
156
- version_id: "7158486590867448",
157
- }),
158
- request_id: ctx.wsReqNumber,
159
- type: 3,
160
- };
161
-
162
- if (typeof callback === "function") {
163
- ctx["tasks"].set(taskNumber, {
164
- type: "set_message_reaction",
165
- callback: callback,
166
- });
167
- }
168
- ctx.mqttClient.publish("/ls_req", JSON.stringify(content), {
169
- qos: 1,
170
- retain: false,
171
- });
172
- }
173
-
174
- return function setMessageReaction(reaction, messageID, threadID, callback) {
175
- if (ctx.mqttClient) {
176
- try {
177
- setMessageReactionMqtt(reaction, messageID, threadID, callback);
178
- callback();
179
- } catch (e) {
180
- setMessageReactionNoMqtt(reaction, messageID, callback, true);
181
- }
182
- } else {
183
- setMessageReactionNoMqtt(reaction, messageID, callback, true);
184
- }
185
- };
186
- };
@@ -1,71 +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 unsendMessage(postID, type, 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
-
15
- if (!callback) {
16
- callback = function (err, friendList) {
17
- if (err) {
18
- return rejectFunc(err);
19
- }
20
- resolveFunc(friendList);
21
- };
22
- }
23
-
24
- var map = {
25
- like: 1,
26
- heart: 2,
27
- wow: 3,
28
- haha: 4,
29
- sad: 7,
30
- angry: 8,
31
- };
32
- if (typeof type != "number") {
33
- type = map[type.toLocaleLowerCase()];
34
- if (!type) {
35
- type = 1;
36
- }
37
- }
38
- var form = {
39
- av: ctx.userID,
40
- fb_api_caller_class: "RelayModern",
41
- fb_api_req_friendly_name: "UFI2FeedbackReactMutation",
42
- //This doc_id is valid as of January 17th, 2020
43
- doc_id: "2580813318646067",
44
- variables: JSON.stringify({
45
- input: {
46
- client_mutation_id: "7",
47
- actor_id: ctx.userID,
48
- feedback_reaction: type,
49
- },
50
- useDefaultActor: true,
51
- }),
52
- };
53
-
54
- defaultFuncs
55
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
56
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
57
- .then(function (resData) {
58
- if (resData.error) {
59
- throw resData;
60
- }
61
-
62
- return callback();
63
- })
64
- .catch(function (err) {
65
- log.error("setPostReaction", err);
66
- return callback(err);
67
- });
68
-
69
- return returnPromise;
70
- };
71
- };
package/src/setTheme.js DELETED
@@ -1,313 +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
- const themes = [
15
- {
16
- id: "3650637715209675",
17
- name: "Besties",
18
- },
19
- {
20
- id: "769656934577391",
21
- name: "Women's History Month",
22
- },
23
- {
24
- id: "702099018755409",
25
- name: "Dune: Part Two",
26
- },
27
- {
28
- id: "1480404512543552",
29
- name: "Avatar: The Last Airbender",
30
- },
31
- {
32
- id: "952656233130616",
33
- name: "J.Lo",
34
- },
35
- {
36
- id: "741311439775765",
37
- name: "Love",
38
- },
39
- {
40
- id: "215565958307259",
41
- name: "Bob Marley: One Love",
42
- },
43
- {
44
- id: "194982117007866",
45
- name: "Football",
46
- },
47
- {
48
- id: "1743641112805218",
49
- name: "Soccer",
50
- },
51
- {
52
- id: "730357905262632",
53
- name: "Mean Girls",
54
- },
55
- {
56
- id: "1270466356981452",
57
- name: "Wonka",
58
- },
59
- {
60
- id: "704702021720552",
61
- name: "Pizza",
62
- },
63
- {
64
- id: "1013083536414851",
65
- name: "Wish",
66
- },
67
- {
68
- id: "359537246600743",
69
- name: "Trolls",
70
- },
71
- {
72
- id: "173976782455615",
73
- name: "The Marvels",
74
- },
75
- {
76
- id: "2317258455139234",
77
- name: "One Piece",
78
- },
79
- {
80
- id: "6685081604943977",
81
- name: "1989",
82
- },
83
- {
84
- id: "1508524016651271",
85
- name: "Avocado",
86
- },
87
- {
88
- id: "265997946276694",
89
- name: "Loki Season 2",
90
- },
91
- {
92
- id: "6584393768293861",
93
- name: "olivia rodrigo",
94
- },
95
- {
96
- id: "845097890371902",
97
- name: "Baseball",
98
- },
99
- {
100
- id: "292955489929680",
101
- name: "Lollipop",
102
- },
103
- {
104
- id: "976389323536938",
105
- name: "Loops",
106
- },
107
- {
108
- id: "810978360551741",
109
- name: "Parenthood",
110
- },
111
- {
112
- id: "195296273246380",
113
- name: "Bubble Tea",
114
- },
115
- {
116
- id: "6026716157422736",
117
- name: "Basketball",
118
- },
119
- {
120
- id: "693996545771691",
121
- name: "Elephants & Flowers",
122
- },
123
- {
124
- id: "390127158985345",
125
- name: "Chill",
126
- },
127
- {
128
- id: "365557122117011",
129
- name: "Support",
130
- },
131
- {
132
- id: "339021464972092",
133
- name: "Music",
134
- },
135
- {
136
- id: "1060619084701625",
137
- name: "Lo-Fi",
138
- },
139
- {
140
- id: "3190514984517598",
141
- name: "Sky",
142
- },
143
- {
144
- id: "627144732056021",
145
- name: "Celebration",
146
- },
147
- {
148
- id: "275041734441112",
149
- name: "Care",
150
- },
151
- {
152
- id: "3082966625307060",
153
- name: "Astrology",
154
- },
155
- {
156
- id: "539927563794799",
157
- name: "Cottagecore",
158
- },
159
- {
160
- id: "527564631955494",
161
- name: "Ocean",
162
- },
163
- {
164
- id: "230032715012014",
165
- name: "Tie-Dye",
166
- },
167
- {
168
- id: "788274591712841",
169
- name: "Monochrome",
170
- },
171
- {
172
- id: "3259963564026002",
173
- name: "Default",
174
- },
175
- {
176
- id: "724096885023603",
177
- name: "Berry",
178
- },
179
- {
180
- id: "624266884847972",
181
- name: "Candy",
182
- },
183
- {
184
- id: "273728810607574",
185
- name: "Unicorn",
186
- },
187
- {
188
- id: "262191918210707",
189
- name: "Tropical",
190
- },
191
- {
192
- id: "2533652183614000",
193
- name: "Maple",
194
- },
195
- {
196
- id: "909695489504566",
197
- name: "Sushi",
198
- },
199
- {
200
- id: "582065306070020",
201
- name: "Rocket",
202
- },
203
- {
204
- id: "557344741607350",
205
- name: "Citrus",
206
- },
207
- {
208
- id: "280333826736184",
209
- name: "Lollipop",
210
- },
211
- {
212
- id: "271607034185782",
213
- name: "Shadow",
214
- },
215
- {
216
- id: "1257453361255152",
217
- name: "Rose",
218
- },
219
- {
220
- id: "571193503540759",
221
- name: "Lavender",
222
- },
223
- {
224
- id: "2873642949430623",
225
- name: "Tulip",
226
- },
227
- {
228
- id: "3273938616164733",
229
- name: "Classic",
230
- },
231
- {
232
- id: "403422283881973",
233
- name: "Apple",
234
- },
235
- {
236
- id: "3022526817824329",
237
- name: "Peach",
238
- },
239
- {
240
- id: "672058580051520",
241
- name: "Honey",
242
- },
243
- {
244
- id: "3151463484918004",
245
- name: "Kiwi",
246
- },
247
- {
248
- id: "736591620215564",
249
- name: "Ocean",
250
- },
251
- {
252
- id: "193497045377796",
253
- name: "Grape",
254
- },
255
- ];
256
-
257
- module.exports = function (defaultFuncs, api, ctx) {
258
- return function setTheme(themeID, threadID, callback) {
259
- if (!ctx.mqttClient) {
260
- throw new Error("Not connected to MQTT");
261
- }
262
-
263
- ctx.wsReqNumber += 1;
264
- ctx.wsTaskNumber += 1;
265
-
266
- let selectedThemeID;
267
-
268
- if (!themeID) {
269
- // If no theme ID is provided, select a random theme from the themes array
270
- const randomIndex = Math.floor(Math.random() * themes.length);
271
- selectedThemeID = themes[randomIndex].id;
272
- } else {
273
- selectedThemeID = themeID;
274
- }
275
-
276
- const taskPayload = {
277
- thread_key: threadID,
278
- theme_fbid: selectedThemeID,
279
- source: null,
280
- sync_group: 1,
281
- payload: null,
282
- };
283
-
284
- const task = {
285
- failure_count: null,
286
- label: "43",
287
- payload: JSON.stringify(taskPayload),
288
- queue_name: "thread_theme",
289
- task_id: ctx.wsTaskNumber,
290
- };
291
-
292
- const content = {
293
- app_id: "2220391788200892",
294
- payload: JSON.stringify({
295
- data_trace_id: null,
296
- epoch_id: parseInt(generateOfflineThreadingID()),
297
- tasks: [task],
298
- version_id: "25095469420099952",
299
- }),
300
- request_id: ctx.wsReqNumber,
301
- type: 3,
302
- };
303
-
304
- if (isCallable(callback)) {
305
- // to be implemented
306
- }
307
-
308
- ctx.mqttClient.publish("/ls_req", JSON.stringify(content), {
309
- qos: 1,
310
- retain: false,
311
- });
312
- };
313
- };