@vangbanlanhat/fca-unofficial 1.4.2

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 (115) hide show
  1. package/.gitattributes +2 -0
  2. package/.github/workflows/nodejs.yml +26 -0
  3. package/.github/workflows/npmpublish.yml +30 -0
  4. package/.travis.yml +6 -0
  5. package/CHANGELOG.md +2 -0
  6. package/DOCS.md +1932 -0
  7. package/LICENSE-MIT +21 -0
  8. package/README.md +198 -0
  9. package/jest.config.js +10 -0
  10. package/package.json +86 -0
  11. package/pnpm-workspace.yaml +3 -0
  12. package/src/actions/addExternalModule.js +34 -0
  13. package/src/actions/addUserToGroup.js +113 -0
  14. package/src/actions/changeAdminStatus.js +79 -0
  15. package/src/actions/changeArchivedStatus.js +55 -0
  16. package/src/actions/changeBio.js +77 -0
  17. package/src/actions/changeBlockedStatus.js +47 -0
  18. package/src/actions/changeGroupImage.js +129 -0
  19. package/src/actions/changeNickname.js +59 -0
  20. package/src/actions/changeThreadColor.js +71 -0
  21. package/src/actions/changeThreadEmoji.js +55 -0
  22. package/src/actions/createNewGroup.js +86 -0
  23. package/src/actions/createPoll.js +71 -0
  24. package/src/actions/deleteMessage.js +56 -0
  25. package/src/actions/deleteThread.js +56 -0
  26. package/src/actions/editMessage.js +81 -0
  27. package/src/actions/forwardAttachment.js +60 -0
  28. package/src/actions/getAvatarUser.js +77 -0
  29. package/src/actions/getCurrentUserID.js +11 -0
  30. package/src/actions/getEmojiUrl.js +37 -0
  31. package/src/actions/getFriendsList.js +84 -0
  32. package/src/actions/getMessage.js +833 -0
  33. package/src/actions/getRegion.js +11 -0
  34. package/src/actions/getThreadHistory.js +702 -0
  35. package/src/actions/getThreadHistoryDeprecated.js +93 -0
  36. package/src/actions/getThreadInfo.js +265 -0
  37. package/src/actions/getThreadInfoDeprecated.js +80 -0
  38. package/src/actions/getThreadList.js +274 -0
  39. package/src/actions/getThreadListDeprecated.js +91 -0
  40. package/src/actions/getThreadPictures.js +79 -0
  41. package/src/actions/getUserID.js +66 -0
  42. package/src/actions/getUserInfo.js +92 -0
  43. package/src/actions/handleFriendRequest.js +61 -0
  44. package/src/actions/handleMessageRequest.js +65 -0
  45. package/src/actions/httpGet.js +70 -0
  46. package/src/actions/httpPost.js +70 -0
  47. package/src/actions/index.js +69 -0
  48. package/src/actions/listenMqtt.js +818 -0
  49. package/src/actions/logout.js +136 -0
  50. package/src/actions/markAsDelivered.js +58 -0
  51. package/src/actions/markAsRead.js +92 -0
  52. package/src/actions/markAsReadAll.js +50 -0
  53. package/src/actions/markAsSeen.js +59 -0
  54. package/src/actions/muteThread.js +52 -0
  55. package/src/actions/pinMessage.js +86 -0
  56. package/src/actions/refreshFb_dtsg.js +89 -0
  57. package/src/actions/removeUserFromGroup.js +79 -0
  58. package/src/actions/resolvePhotoUrl.js +45 -0
  59. package/src/actions/searchForThread.js +53 -0
  60. package/src/actions/searchStickers.js +53 -0
  61. package/src/actions/sendMessage.js +490 -0
  62. package/src/actions/sendMessageMqtt.js +235 -0
  63. package/src/actions/sendTypingIndicator.js +59 -0
  64. package/src/actions/setMessageReaction.js +140 -0
  65. package/src/actions/setMessageReactionMqtt.js +72 -0
  66. package/src/actions/setPostReaction.js +76 -0
  67. package/src/actions/setTitle.js +86 -0
  68. package/src/actions/stopListenMqtt.js +63 -0
  69. package/src/actions/threadColors.js +57 -0
  70. package/src/actions/unfriend.js +52 -0
  71. package/src/actions/unsendMessage.js +61 -0
  72. package/src/index.js +659 -0
  73. package/src/service/uploadAttachment.js +318 -0
  74. package/src/utils/base-parts/auth.js +286 -0
  75. package/src/utils/base-parts/formatters.js +751 -0
  76. package/src/utils/base-parts/identity.js +169 -0
  77. package/src/utils/base-parts/network.js +159 -0
  78. package/src/utils/base-parts/parsing.js +53 -0
  79. package/src/utils/base-parts/type.js +9 -0
  80. package/src/utils/base.js +18 -0
  81. package/src/utils/defaults.js +10 -0
  82. package/src/utils/format-attachments.js +7 -0
  83. package/src/utils/format-core.js +8 -0
  84. package/src/utils/format-events.js +11 -0
  85. package/src/utils/format-messages.js +10 -0
  86. package/src/utils/format-presence.js +9 -0
  87. package/src/utils/format-threads.js +8 -0
  88. package/src/utils/formatters.js +18 -0
  89. package/src/utils/identity.js +12 -0
  90. package/src/utils/index.js +15 -0
  91. package/src/utils/network.js +12 -0
  92. package/src/utils/parsing.js +11 -0
  93. package/src/utils.js +3 -0
  94. package/test/config.env.example +30 -0
  95. package/test/data/shareAttach.js +146 -0
  96. package/test/data/something.mov +0 -0
  97. package/test/data/test.png +0 -0
  98. package/test/data/test.txt +7 -0
  99. package/test/example-appstate.txt +11 -0
  100. package/test/integration/actions.appstate.integration.test.js +233 -0
  101. package/test/integration/api.integration.test.js +387 -0
  102. package/test/integration/env-test-config.js +46 -0
  103. package/test/integration/login.appstate.integration.test.js +47 -0
  104. package/test/integration/page.integration.test.js +139 -0
  105. package/test/jest.setup.js +54 -0
  106. package/test/unit/actions/actions.basic.test.js +116 -0
  107. package/test/unit/actions/actions.registry.test.js +36 -0
  108. package/test/unit/index/index.test.js +109 -0
  109. package/test/unit/utils/base-parts/auth.test.js +92 -0
  110. package/test/unit/utils/base-parts/formatters.test.js +53 -0
  111. package/test/unit/utils/base-parts/identity.test.js +43 -0
  112. package/test/unit/utils/base-parts/parsing.test.js +38 -0
  113. package/test/unit/utils/base-parts/type.test.js +23 -0
  114. package/test/unit/utils/base.test.js +35 -0
  115. package/vangbanlanhat-fca-unofficial-1.4.2.tgz +0 -0
@@ -0,0 +1,833 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @author https://github.com/Schmavery/facebook-chat-api/pull/865
5
+ */
6
+
7
+ const utils = require("../utils");
8
+
9
+ function formatMessage(threadID, data) {
10
+ switch (data.__typename) {
11
+ case "ThreadNameMessage":
12
+ return {
13
+ type: "event",
14
+ threadID: threadID,
15
+ messageID: data.message_id,
16
+ logMessageType: "log:thread-name",
17
+ logMessageData: {
18
+ name: data.thread_name,
19
+ },
20
+ logMessageBody: data.snippet,
21
+ timestamp: data.timestamp_precise,
22
+ author: data.message_sender.id,
23
+ };
24
+ case "ThreadImageMessage":
25
+ const metadata = data.image_with_metadata;
26
+ return {
27
+ type: "event",
28
+ threadID: threadID,
29
+ messageID: data.message_id,
30
+ logMessageType: "log:thread-image",
31
+ logMessageData: metadata
32
+ ? {
33
+ attachmentID: metadata.legacy_attachment_id,
34
+ width: metadata.original_dimensions.x,
35
+ height: metadata.original_dimensions.y,
36
+ url: metadata.preview.uri,
37
+ }
38
+ : {
39
+ attachmentID: null,
40
+ width: null,
41
+ height: null,
42
+ url: null,
43
+ },
44
+ logMessageBody: data.snippet,
45
+ timestamp: data.timestamp_precise,
46
+ author: data.message_sender.id,
47
+ };
48
+ case "GenericAdminTextMessage":
49
+ switch (data.extensible_message_admin_text_type) {
50
+ case "CHANGE_THREAD_THEME":
51
+ return {
52
+ type: "event",
53
+ threadID: threadID,
54
+ messageID: data.message_id,
55
+ logMessageType: "log:thread-color",
56
+ logMessageData: colors.find(
57
+ (color) =>
58
+ color.theme_color ===
59
+ data.extensible_message_admin_text.theme_color,
60
+ ) || {
61
+ theme_color: data.extensible_message_admin_text.theme_color,
62
+ theme_id: null,
63
+ theme_emoji: null,
64
+ gradient: null,
65
+ should_show_icon: null,
66
+ theme_name_with_subtitle: null,
67
+ },
68
+ logMessageBody: data.snippet,
69
+ timestamp: data.timestamp_precise,
70
+ author: data.message_sender.id,
71
+ };
72
+ case "CHANGE_THREAD_ICON":
73
+ const thread_icon = data.extensible_message_admin_text.thread_icon;
74
+ return {
75
+ type: "event",
76
+ threadID: threadID,
77
+ messageID: data.message_id,
78
+ logMessageType: "log:thread-icon",
79
+ logMessageData: {
80
+ thread_icon_url: `https://static.xx.fbcdn.net/images/emoji.php/v9/t3c/1/16/${thread_icon
81
+ .codePointAt(0)
82
+ .toString(16)}.png`,
83
+ thread_icon: thread_icon,
84
+ },
85
+ logMessageBody: data.snippet,
86
+ timestamp: data.timestamp_precise,
87
+ author: data.message_sender.id,
88
+ };
89
+ case "CHANGE_THREAD_NICKNAME":
90
+ return {
91
+ type: "event",
92
+ threadID: threadID,
93
+ messageID: data.message_id,
94
+ logMessageType: "log:user-nickname",
95
+ logMessageData: {
96
+ nickname: data.extensible_message_admin_text.nickname,
97
+ participant_id: data.extensible_message_admin_text.participant_id,
98
+ },
99
+ logMessageBody: data.snippet,
100
+ timestamp: data.timestamp_precise,
101
+ author: data.message_sender.id,
102
+ };
103
+ case "GROUP_POLL":
104
+ const question = data.extensible_message_admin_text.question;
105
+ return {
106
+ type: "event",
107
+ threadID: threadID,
108
+ messageID: data.message_id,
109
+ logMessageType: "log:thread-poll",
110
+ logMessageData: {
111
+ question_json: JSON.stringify({
112
+ id: question.id,
113
+ text: question.text,
114
+ total_count: data.extensible_message_admin_text.total_count,
115
+ viewer_has_voted: question.viewer_has_voted,
116
+ question_type: "",
117
+ creator_id: data.message_sender.id,
118
+ options: question.options.nodes.map((option) => ({
119
+ id: option.id,
120
+ text: option.text,
121
+ total_count: option.voters.nodes.length,
122
+ viewer_has_voted: option.viewer_has_voted,
123
+ voters: option.voters.nodes.map((voter) => voter.id),
124
+ })),
125
+ }),
126
+ event_type:
127
+ data.extensible_message_admin_text.event_type.toLowerCase(),
128
+ question_id: question.id,
129
+ },
130
+ logMessageBody: data.snippet,
131
+ timestamp: data.timestamp_precise,
132
+ author: data.message_sender.id,
133
+ };
134
+ default:
135
+ throw new Error(
136
+ `Unknown admin text type: "${data.extensible_message_admin_text_type}", if this happens to you let me know when it happens. Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.`,
137
+ );
138
+ }
139
+ case "UserMessage":
140
+ return {
141
+ senderID: data.message_sender.id,
142
+ body: data.message.text,
143
+ threadID: threadID,
144
+ messageID: data.message_id,
145
+ reactions: data.message_reactions.map((r) => ({
146
+ [r.user.id]: r.reaction,
147
+ })),
148
+ attachments:
149
+ data.blob_attachments && data.blob_attachments.length > 0
150
+ ? data.blob_attachments.map((att) => {
151
+ let x;
152
+ try {
153
+ x = utils._formatAttachment(att);
154
+ } catch (ex) {
155
+ x = att;
156
+ x.error = ex;
157
+ x.type = "unknown";
158
+ }
159
+ return x;
160
+ })
161
+ : data.extensible_attachment &&
162
+ Object.keys(data.extensible_attachment).length > 0
163
+ ? [
164
+ {
165
+ type: "share",
166
+ ID: data.extensible_attachment.legacy_attachment_id,
167
+ url: data.extensible_attachment.story_attachment.url,
168
+
169
+ title:
170
+ data.extensible_attachment.story_attachment
171
+ .title_with_entities.text,
172
+ description:
173
+ data.extensible_attachment.story_attachment.description
174
+ .text,
175
+ source: data.extensible_attachment.story_attachment.source,
176
+
177
+ image: (
178
+ (data.extensible_attachment.story_attachment.media || {})
179
+ .image || {}
180
+ ).uri,
181
+ width: (
182
+ (data.extensible_attachment.story_attachment.media || {})
183
+ .image || {}
184
+ ).width,
185
+ height: (
186
+ (data.extensible_attachment.story_attachment.media || {})
187
+ .image || {}
188
+ ).height,
189
+ playable:
190
+ (data.extensible_attachment.story_attachment.media || {})
191
+ .is_playable || false,
192
+ duration:
193
+ (data.extensible_attachment.story_attachment.media || {})
194
+ .playable_duration_in_ms || 0,
195
+
196
+ subattachments: data.extensible_attachment.subattachments,
197
+ properties:
198
+ data.extensible_attachment.story_attachment.properties,
199
+ },
200
+ ]
201
+ : [],
202
+ mentions: data.message.ranges.map((mention) => ({
203
+ [mention.entity.id]: data.message.text.substring(
204
+ mention.offset,
205
+ mention.offset + mention.length,
206
+ ),
207
+ })),
208
+ timestamp: data.timestamp_precise,
209
+ };
210
+ default:
211
+ throw new Error(
212
+ `Unknown message type: "${data.__typename}", if this happens to you let me know when it happens. Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.`,
213
+ );
214
+ // If this happens to you let me know when it happens
215
+ // Please open an issue at https://github.com/ntkhang03/fb-chat-api/issues.
216
+ // return Object.assign({ type: "unknown", data });
217
+ }
218
+ }
219
+
220
+ function parseDelta(threadID, delta) {
221
+ if (delta.replied_to_message) {
222
+ return Object.assign(
223
+ {
224
+ type: "message_reply",
225
+ },
226
+ formatMessage(threadID, delta),
227
+ {
228
+ messageReply: formatMessage(threadID, delta.replied_to_message.message),
229
+ },
230
+ );
231
+ } else {
232
+ return formatMessage(threadID, delta);
233
+ }
234
+ }
235
+
236
+ module.exports = function (defaultFuncs, api, ctx) {
237
+ return function getMessage(threadID, messageID, callback) {
238
+ let resolveFunc = function () {};
239
+ let rejectFunc = function () {};
240
+ const returnPromise = new Promise(function (resolve, reject) {
241
+ resolveFunc = resolve;
242
+ rejectFunc = reject;
243
+ });
244
+
245
+ if (!callback) {
246
+ callback = function (err, info) {
247
+ if (err) return rejectFunc(err);
248
+ resolveFunc(info);
249
+ };
250
+ }
251
+
252
+ if (!threadID || !messageID) {
253
+ return callback({ error: "getMessage: need threadID and messageID" });
254
+ }
255
+
256
+ const form = {
257
+ av: ctx.globalOptions.pageID,
258
+ queries: JSON.stringify({
259
+ o0: {
260
+ //This doc_id is valid as of ? (prob January 18, 2020)
261
+ doc_id: "1768656253222505",
262
+ query_params: {
263
+ thread_and_message_id: {
264
+ thread_id: threadID,
265
+ message_id: messageID,
266
+ },
267
+ },
268
+ },
269
+ }),
270
+ };
271
+
272
+ defaultFuncs
273
+ .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
274
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
275
+ .then((resData) => {
276
+ if (resData[resData.length - 1].error_results > 0) {
277
+ throw resData[0].o0.errors;
278
+ }
279
+
280
+ if (resData[resData.length - 1].successful_results === 0) {
281
+ throw {
282
+ error: "getMessage: there was no successful_results",
283
+ res: resData,
284
+ };
285
+ }
286
+
287
+ const fetchData = resData[0].o0.data.message;
288
+ if (fetchData) {
289
+ callback(null, parseDelta(threadID, fetchData));
290
+ } else {
291
+ throw fetchData;
292
+ }
293
+ })
294
+ .catch((err) => {
295
+ utils.error("getMessage", err);
296
+ callback(err);
297
+ });
298
+
299
+ return returnPromise;
300
+ };
301
+ };
302
+
303
+ const colors = [
304
+ {
305
+ theme_color: "FF000000",
306
+ theme_id: "788274591712841",
307
+ theme_emoji: "🖤",
308
+ gradient: '["FFF0F0F0"]',
309
+ should_show_icon: "",
310
+ theme_name_with_subtitle: "Monochrome",
311
+ },
312
+ {
313
+ theme_color: "FFFF5CA1",
314
+ theme_id: "169463077092846",
315
+ theme_emoji: null,
316
+ gradient: null,
317
+ should_show_icon: "1",
318
+ theme_name_with_subtitle: "Hot Pink",
319
+ },
320
+ {
321
+ theme_color: "FF2825B5",
322
+ theme_id: "271607034185782",
323
+ theme_emoji: null,
324
+ gradient: '["FF5E007E","FF331290","FF2825B5"]',
325
+ should_show_icon: "1",
326
+ theme_name_with_subtitle: "Shadow",
327
+ },
328
+ {
329
+ theme_color: "FFD9A900",
330
+ theme_id: "2533652183614000",
331
+ theme_emoji: null,
332
+ gradient: '["FF550029","FFAA3232","FFD9A900"]',
333
+ should_show_icon: "1",
334
+ theme_name_with_subtitle: "Maple",
335
+ },
336
+ {
337
+ theme_color: "FFFB45DE",
338
+ theme_id: "2873642949430623",
339
+ theme_emoji: null,
340
+ gradient: null,
341
+ should_show_icon: "1",
342
+ theme_name_with_subtitle: "Tulip",
343
+ },
344
+ {
345
+ theme_color: "FF5E007E",
346
+ theme_id: "193497045377796",
347
+ theme_emoji: null,
348
+ gradient: null,
349
+ should_show_icon: "1",
350
+ theme_name_with_subtitle: "Grape",
351
+ },
352
+ {
353
+ theme_color: "FF7AA286",
354
+ theme_id: "1455149831518874",
355
+ theme_emoji: "🌑",
356
+ gradient: '["FF25C0E1","FFCE832A"]',
357
+ should_show_icon: "",
358
+ theme_name_with_subtitle: "Dune",
359
+ },
360
+ {
361
+ theme_color: "FFFAAF00",
362
+ theme_id: "672058580051520",
363
+ theme_emoji: null,
364
+ gradient: null,
365
+ should_show_icon: "1",
366
+ theme_name_with_subtitle: "Honey",
367
+ },
368
+ {
369
+ theme_color: "FF0084FF",
370
+ theme_id: "196241301102133",
371
+ theme_emoji: null,
372
+ gradient: null,
373
+ should_show_icon: "1",
374
+ theme_name_with_subtitle: "Default Blue",
375
+ },
376
+ {
377
+ theme_color: "FFFFC300",
378
+ theme_id: "174636906462322",
379
+ theme_emoji: null,
380
+ gradient: null,
381
+ should_show_icon: "1",
382
+ theme_name_with_subtitle: "Yellow",
383
+ },
384
+ {
385
+ theme_color: "FF44BEC7",
386
+ theme_id: "1928399724138152",
387
+ theme_emoji: null,
388
+ gradient: null,
389
+ should_show_icon: "1",
390
+ theme_name_with_subtitle: "Teal Blue",
391
+ },
392
+ {
393
+ theme_color: "FF7646FF",
394
+ theme_id: "234137870477637",
395
+ theme_emoji: null,
396
+ gradient: null,
397
+ should_show_icon: "1",
398
+ theme_name_with_subtitle: "Bright Purple",
399
+ },
400
+ {
401
+ theme_color: "FFF25C54",
402
+ theme_id: "3022526817824329",
403
+ theme_emoji: null,
404
+ gradient: null,
405
+ should_show_icon: "1",
406
+ theme_name_with_subtitle: "Peach",
407
+ },
408
+ {
409
+ theme_color: "FFF01D6A",
410
+ theme_id: "724096885023603",
411
+ theme_emoji: null,
412
+ gradient: '["FF005FFF","FF9200FF","FFFF2E19"]',
413
+ should_show_icon: "1",
414
+ theme_name_with_subtitle: "Berry",
415
+ },
416
+ {
417
+ theme_color: "FFFF7CA8",
418
+ theme_id: "624266884847972",
419
+ theme_emoji: null,
420
+ gradient: '["FFFF8FB2","FFA797FF","FF00E5FF"]',
421
+ should_show_icon: "1",
422
+ theme_name_with_subtitle: "Candy",
423
+ },
424
+ {
425
+ theme_color: "FF6E5B04",
426
+ theme_id: "365557122117011",
427
+ theme_emoji: "💛",
428
+ gradient: '["FFED9F9A","FFED9F9A","FFED9F9A"]',
429
+ should_show_icon: "",
430
+ theme_name_with_subtitle: "Support",
431
+ },
432
+ {
433
+ theme_color: "FF0052CD",
434
+ theme_id: "230032715012014",
435
+ theme_emoji: "âœŒī¸",
436
+ gradient: '["FF0052CD","FF00A1E6","FF0052CD"]',
437
+ should_show_icon: "",
438
+ theme_name_with_subtitle: "Tie-Dye",
439
+ },
440
+ {
441
+ theme_color: "FF601DDD",
442
+ theme_id: "1060619084701625",
443
+ theme_emoji: "â˜ī¸",
444
+ gradient: '["FFCA34FF","FF302CFF","FFBA009C"]',
445
+ should_show_icon: "",
446
+ theme_name_with_subtitle: "Lo-Fi",
447
+ },
448
+ {
449
+ theme_color: "FF0099FF",
450
+ theme_id: "3273938616164733",
451
+ theme_emoji: null,
452
+ gradient: null,
453
+ should_show_icon: "1",
454
+ theme_name_with_subtitle: "Classic",
455
+ },
456
+ {
457
+ theme_color: "FF1ADB5B",
458
+ theme_id: "370940413392601",
459
+ theme_emoji: null,
460
+ gradient: '["FFFFD200","FF6EDF00","FF00DFBB"]',
461
+ should_show_icon: "1",
462
+ theme_name_with_subtitle: "Citrus",
463
+ },
464
+ {
465
+ theme_color: "FFD696BB",
466
+ theme_id: "2058653964378557",
467
+ theme_emoji: null,
468
+ gradient: null,
469
+ should_show_icon: "1",
470
+ theme_name_with_subtitle: "Lavender Purple",
471
+ },
472
+ {
473
+ theme_color: "FFC03232",
474
+ theme_id: "1059859811490132",
475
+ theme_emoji: "🙃",
476
+ gradient: '["FFDB4040","FFA32424"]',
477
+ should_show_icon: "",
478
+ theme_name_with_subtitle: "Stranger Things",
479
+ },
480
+ {
481
+ theme_color: "FFFA3C4C",
482
+ theme_id: "2129984390566328",
483
+ theme_emoji: null,
484
+ gradient: null,
485
+ should_show_icon: "1",
486
+ theme_name_with_subtitle: "Red",
487
+ },
488
+ {
489
+ theme_color: "FF13CF13",
490
+ theme_id: "2136751179887052",
491
+ theme_emoji: null,
492
+ gradient: null,
493
+ should_show_icon: "1",
494
+ theme_name_with_subtitle: "Green",
495
+ },
496
+ {
497
+ theme_color: "FFFF7E29",
498
+ theme_id: "175615189761153",
499
+ theme_emoji: null,
500
+ gradient: null,
501
+ should_show_icon: "1",
502
+ theme_name_with_subtitle: "Orange",
503
+ },
504
+ {
505
+ theme_color: "FFE68585",
506
+ theme_id: "980963458735625",
507
+ theme_emoji: null,
508
+ gradient: null,
509
+ should_show_icon: "1",
510
+ theme_name_with_subtitle: "Coral Pink",
511
+ },
512
+ {
513
+ theme_color: "FF20CEF5",
514
+ theme_id: "2442142322678320",
515
+ theme_emoji: null,
516
+ gradient: null,
517
+ should_show_icon: "1",
518
+ theme_name_with_subtitle: "Aqua Blue",
519
+ },
520
+ {
521
+ theme_color: "FF0EDCDE",
522
+ theme_id: "417639218648241",
523
+ theme_emoji: null,
524
+ gradient: '["FF19C9FF","FF00E6D2","FF0EE6B7"]',
525
+ should_show_icon: "1",
526
+ theme_name_with_subtitle: "Aqua",
527
+ },
528
+ {
529
+ theme_color: "FFFF9C19",
530
+ theme_id: "930060997172551",
531
+ theme_emoji: null,
532
+ gradient: '["FFFFDC2D","FFFF9616","FFFF4F00"]',
533
+ should_show_icon: "1",
534
+ theme_name_with_subtitle: "Mango",
535
+ },
536
+ {
537
+ theme_color: "FFF01D6A",
538
+ theme_id: "164535220883264",
539
+ theme_emoji: null,
540
+ gradient: '["FF005FFF","FF9200FF","FFFF2E19"]',
541
+ should_show_icon: "1",
542
+ theme_name_with_subtitle: "Berry",
543
+ },
544
+ {
545
+ theme_color: "FFFF7CA8",
546
+ theme_id: "205488546921017",
547
+ theme_emoji: null,
548
+ gradient: '["FFFF8FB2","FFA797FF","FF00E5FF"]',
549
+ should_show_icon: "1",
550
+ theme_name_with_subtitle: "Candy",
551
+ },
552
+ {
553
+ theme_color: "FFFF6F07",
554
+ theme_id: "1833559466821043",
555
+ theme_emoji: "🌎",
556
+ gradient: '["FFFF6F07"]',
557
+ should_show_icon: "",
558
+ theme_name_with_subtitle: "Earth",
559
+ },
560
+ {
561
+ theme_color: "FF0B0085",
562
+ theme_id: "339021464972092",
563
+ theme_emoji: "🔈",
564
+ gradient: '["FF2FA9E4","FF648FEB","FF9B73F2"]',
565
+ should_show_icon: "",
566
+ theme_name_with_subtitle: "Music",
567
+ },
568
+ {
569
+ theme_color: "FF8A39EF",
570
+ theme_id: "1652456634878319",
571
+ theme_emoji: "đŸŗī¸â€đŸŒˆ",
572
+ gradient:
573
+ '["FFFF0018","FFFF0417","FFFF310E","FFFF5D06","FFFF7A01","FFFF8701","FFFFB001","FFD9C507","FF79C718","FF01C92D","FF01BE69","FF01B3AA","FF0BA1DF","FF3F77E6","FF724CEC","FF8A39EF","FF8A39EF"]',
574
+ should_show_icon: "",
575
+ theme_name_with_subtitle: "Pride",
576
+ },
577
+ {
578
+ theme_color: "FF004D7C",
579
+ theme_id: "538280997628317",
580
+ theme_emoji: "🌀",
581
+ gradient: '["FF931410","FF931410","FF931410"]',
582
+ should_show_icon: "",
583
+ theme_name_with_subtitle: "Doctor Strange",
584
+ },
585
+ {
586
+ theme_color: "FF4F4DFF",
587
+ theme_id: "3190514984517598",
588
+ theme_emoji: "🌤",
589
+ gradient: '["FF0080FF","FF9F1AFF"]',
590
+ should_show_icon: "",
591
+ theme_name_with_subtitle: "Sky",
592
+ },
593
+ {
594
+ theme_color: "FFE84B28",
595
+ theme_id: "357833546030778",
596
+ theme_emoji: "đŸ¯",
597
+ gradient: '["FFF69500","FFDA0050"]',
598
+ should_show_icon: "1",
599
+ theme_name_with_subtitle: "Lunar New Year",
600
+ },
601
+ {
602
+ theme_color: "FFB24B77",
603
+ theme_id: "627144732056021",
604
+ theme_emoji: "đŸĨŗ",
605
+ gradient: '["FFF1614E","FF660F84"]',
606
+ should_show_icon: "",
607
+ theme_name_with_subtitle: "Celebration!",
608
+ },
609
+ {
610
+ theme_color: "FF66A9FF",
611
+ theme_id: "390127158985345",
612
+ theme_emoji: "đŸĨļ",
613
+ gradient: '["FF8CB3FF","FF409FFF"]',
614
+ should_show_icon: "",
615
+ theme_name_with_subtitle: "Chill",
616
+ },
617
+ {
618
+ theme_color: "FF5797FC",
619
+ theme_id: "275041734441112",
620
+ theme_emoji: "😌",
621
+ gradient: '["FF4AC9E4","FF5890FF","FF8C91FF"]',
622
+ should_show_icon: "",
623
+ theme_name_with_subtitle: "Care",
624
+ },
625
+ {
626
+ theme_color: "FFFF595C",
627
+ theme_id: "3082966625307060",
628
+ theme_emoji: "đŸ’Ģ",
629
+ gradient: '["FFFF239A","FFFF8C21"]',
630
+ should_show_icon: "",
631
+ theme_name_with_subtitle: "Astrology",
632
+ },
633
+ {
634
+ theme_color: "FF0171FF",
635
+ theme_id: "184305226956268",
636
+ theme_emoji: "â˜ī¸",
637
+ gradient: '["FF0026ee","FF00b2ff"]',
638
+ should_show_icon: "",
639
+ theme_name_with_subtitle: "J Balvin",
640
+ },
641
+ {
642
+ theme_color: "FFA033FF",
643
+ theme_id: "621630955405500",
644
+ theme_emoji: "🎉",
645
+ gradient: '["FFFF7061","FFFF5280","FFA033FF","FF0099FF"]',
646
+ should_show_icon: "",
647
+ theme_name_with_subtitle: "Birthday",
648
+ },
649
+ {
650
+ theme_color: "FF006528",
651
+ theme_id: "539927563794799",
652
+ theme_emoji: "🍄",
653
+ gradient: '["FF00d52f","FF006528"]',
654
+ should_show_icon: "",
655
+ theme_name_with_subtitle: "Cottagecore",
656
+ },
657
+ {
658
+ theme_color: "FF4D3EC2",
659
+ theme_id: "736591620215564",
660
+ theme_emoji: null,
661
+ gradient: null,
662
+ should_show_icon: "1",
663
+ theme_name_with_subtitle: "Ocean",
664
+ },
665
+ {
666
+ theme_color: "FF4e4bf5",
667
+ theme_id: "3259963564026002",
668
+ theme_emoji: null,
669
+ gradient: '["FFAA00FF","FF0080FF"]',
670
+ should_show_icon: "1",
671
+ theme_name_with_subtitle: "Default",
672
+ },
673
+ {
674
+ theme_color: "FF3A12FF",
675
+ theme_id: "582065306070020",
676
+ theme_emoji: null,
677
+ gradient: '["FFFAAF00","FFFF2E2E","FF3A12FF"]',
678
+ should_show_icon: "1",
679
+ theme_name_with_subtitle: "Rocket",
680
+ },
681
+ {
682
+ theme_color: "FF3A1D8A",
683
+ theme_id: "273728810607574",
684
+ theme_emoji: null,
685
+ gradient: '["FFFB45DE","FF841DD5","FF3A1D8A"]',
686
+ should_show_icon: "1",
687
+ theme_name_with_subtitle: "Unicorn",
688
+ },
689
+ {
690
+ theme_color: "FF9FD52D",
691
+ theme_id: "262191918210707",
692
+ theme_emoji: null,
693
+ gradient: '["FF2A7FE3","FF00BF91","FF9FD52D"]',
694
+ should_show_icon: "1",
695
+ theme_name_with_subtitle: "Tropical",
696
+ },
697
+ {
698
+ theme_color: "FFF7B267",
699
+ theme_id: "909695489504566",
700
+ theme_emoji: null,
701
+ gradient: '["FFF25C54","FFF4845F","FFF7B267"]',
702
+ should_show_icon: "1",
703
+ theme_name_with_subtitle: "Sushi",
704
+ },
705
+ {
706
+ theme_color: "FF1ADB5B",
707
+ theme_id: "557344741607350",
708
+ theme_emoji: null,
709
+ gradient: '["FFFFD200","FF6EDF00","FF00DFBB"]',
710
+ should_show_icon: "1",
711
+ theme_name_with_subtitle: "Citrus",
712
+ },
713
+ {
714
+ theme_color: "FF4D3EC2",
715
+ theme_id: "280333826736184",
716
+ theme_emoji: null,
717
+ gradient: '["FFFF625B","FFC532AD","FF4D3EC2"]',
718
+ should_show_icon: "1",
719
+ theme_name_with_subtitle: "Lollipop",
720
+ },
721
+ {
722
+ theme_color: "FFFF311E",
723
+ theme_id: "1257453361255152",
724
+ theme_emoji: null,
725
+ gradient: null,
726
+ should_show_icon: "1",
727
+ theme_name_with_subtitle: "Rose",
728
+ },
729
+ {
730
+ theme_color: "FFA797FF",
731
+ theme_id: "571193503540759",
732
+ theme_emoji: null,
733
+ gradient: null,
734
+ should_show_icon: "1",
735
+ theme_name_with_subtitle: "Lavender",
736
+ },
737
+ {
738
+ theme_color: "FF6EDF00",
739
+ theme_id: "3151463484918004",
740
+ theme_emoji: null,
741
+ gradient: null,
742
+ should_show_icon: "1",
743
+ theme_name_with_subtitle: "Kiwi",
744
+ },
745
+ {
746
+ theme_color: "FF9D59D2",
747
+ theme_id: "737761000603635",
748
+ theme_emoji: "💛",
749
+ gradient: '["FFFFD600","FFFCB37B","FF9D59D2","FF282828"]',
750
+ should_show_icon: "",
751
+ theme_name_with_subtitle: "Non-Binary",
752
+ },
753
+ {
754
+ theme_color: "FF57C39C",
755
+ theme_id: "1288506208402340",
756
+ theme_emoji: "💐",
757
+ gradient: '["FF57C39C","FF57C39C","FF57C39C"]',
758
+ should_show_icon: "",
759
+ theme_name_with_subtitle: "Mother's Day",
760
+ },
761
+ {
762
+ theme_color: "FFF65900",
763
+ theme_id: "121771470870245",
764
+ theme_emoji: "đŸ’Ĩ",
765
+ gradient: '["FFFF8328","FFFF7014","FFFF5C00"]',
766
+ should_show_icon: "",
767
+ theme_name_with_subtitle: "APAHM",
768
+ },
769
+ {
770
+ theme_color: "FF978E21",
771
+ theme_id: "810978360551741",
772
+ theme_emoji: "đŸĒē",
773
+ gradient: '["FF978E21","FF978E21","FF978E21"]',
774
+ should_show_icon: "",
775
+ theme_name_with_subtitle: "Parenthood",
776
+ },
777
+ {
778
+ theme_color: "FFDD8800",
779
+ theme_id: "1438011086532622",
780
+ theme_emoji: "✨",
781
+ gradient: '["FFEDAB00","FFCD6300"]',
782
+ should_show_icon: "",
783
+ theme_name_with_subtitle: "Star Wars",
784
+ },
785
+ {
786
+ theme_color: "FF7D09B9",
787
+ theme_id: "101275642962533",
788
+ theme_emoji: "🚀",
789
+ gradient: '["FF5C22D6","FF8F1EB5","FFC31B92"]',
790
+ should_show_icon: "",
791
+ theme_name_with_subtitle: "Guardians of the Galaxy",
792
+ },
793
+ {
794
+ theme_color: "FF61C500",
795
+ theme_id: "158263147151440",
796
+ theme_emoji: "🐝",
797
+ gradient: '["FF61C500","FF61C500","FF61C500"]',
798
+ should_show_icon: "",
799
+ theme_name_with_subtitle: "Bloom",
800
+ },
801
+ {
802
+ theme_color: "FF826044",
803
+ theme_id: "195296273246380",
804
+ theme_emoji: "🧋",
805
+ gradient: '["FF886546","FFA27F57","FFC6A26E"]',
806
+ should_show_icon: "",
807
+ theme_name_with_subtitle: "Bubble Tea",
808
+ },
809
+ {
810
+ theme_color: "FFB02501",
811
+ theme_id: "6026716157422736",
812
+ theme_emoji: "â›šī¸",
813
+ gradient: '["FFAC2503","FFB02501","FFB42400"]',
814
+ should_show_icon: "",
815
+ theme_name_with_subtitle: "Basketball",
816
+ },
817
+ {
818
+ theme_color: "FF574DC1",
819
+ theme_id: "693996545771691",
820
+ theme_emoji: "🖤",
821
+ gradient: '["FF4533FF","FF574AE0","FF6C64BE"]',
822
+ should_show_icon: "",
823
+ theme_name_with_subtitle: "Elephants&Flowers",
824
+ },
825
+ {
826
+ theme_color: "FFA8B8DA",
827
+ theme_id: "504518465021637",
828
+ theme_emoji: "đŸŗī¸â€âš§ī¸",
829
+ gradient: '["FF55D0FF","FF7597D7","FFFF9FB3","FFFF9FB3"]',
830
+ should_show_icon: "",
831
+ theme_name_with_subtitle: "Transgender",
832
+ },
833
+ ];