@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.
- package/.gitattributes +2 -0
- package/.github/workflows/nodejs.yml +26 -0
- package/.github/workflows/npmpublish.yml +30 -0
- package/.travis.yml +6 -0
- package/CHANGELOG.md +2 -0
- package/DOCS.md +1932 -0
- package/LICENSE-MIT +21 -0
- package/README.md +198 -0
- package/jest.config.js +10 -0
- package/package.json +86 -0
- package/pnpm-workspace.yaml +3 -0
- package/src/actions/addExternalModule.js +34 -0
- package/src/actions/addUserToGroup.js +113 -0
- package/src/actions/changeAdminStatus.js +79 -0
- package/src/actions/changeArchivedStatus.js +55 -0
- package/src/actions/changeBio.js +77 -0
- package/src/actions/changeBlockedStatus.js +47 -0
- package/src/actions/changeGroupImage.js +129 -0
- package/src/actions/changeNickname.js +59 -0
- package/src/actions/changeThreadColor.js +71 -0
- package/src/actions/changeThreadEmoji.js +55 -0
- package/src/actions/createNewGroup.js +86 -0
- package/src/actions/createPoll.js +71 -0
- package/src/actions/deleteMessage.js +56 -0
- package/src/actions/deleteThread.js +56 -0
- package/src/actions/editMessage.js +81 -0
- package/src/actions/forwardAttachment.js +60 -0
- package/src/actions/getAvatarUser.js +77 -0
- package/src/actions/getCurrentUserID.js +11 -0
- package/src/actions/getEmojiUrl.js +37 -0
- package/src/actions/getFriendsList.js +84 -0
- package/src/actions/getMessage.js +833 -0
- package/src/actions/getRegion.js +11 -0
- package/src/actions/getThreadHistory.js +702 -0
- package/src/actions/getThreadHistoryDeprecated.js +93 -0
- package/src/actions/getThreadInfo.js +265 -0
- package/src/actions/getThreadInfoDeprecated.js +80 -0
- package/src/actions/getThreadList.js +274 -0
- package/src/actions/getThreadListDeprecated.js +91 -0
- package/src/actions/getThreadPictures.js +79 -0
- package/src/actions/getUserID.js +66 -0
- package/src/actions/getUserInfo.js +92 -0
- package/src/actions/handleFriendRequest.js +61 -0
- package/src/actions/handleMessageRequest.js +65 -0
- package/src/actions/httpGet.js +70 -0
- package/src/actions/httpPost.js +70 -0
- package/src/actions/index.js +69 -0
- package/src/actions/listenMqtt.js +818 -0
- package/src/actions/logout.js +136 -0
- package/src/actions/markAsDelivered.js +58 -0
- package/src/actions/markAsRead.js +92 -0
- package/src/actions/markAsReadAll.js +50 -0
- package/src/actions/markAsSeen.js +59 -0
- package/src/actions/muteThread.js +52 -0
- package/src/actions/pinMessage.js +86 -0
- package/src/actions/refreshFb_dtsg.js +89 -0
- package/src/actions/removeUserFromGroup.js +79 -0
- package/src/actions/resolvePhotoUrl.js +45 -0
- package/src/actions/searchForThread.js +53 -0
- package/src/actions/searchStickers.js +53 -0
- package/src/actions/sendMessage.js +490 -0
- package/src/actions/sendMessageMqtt.js +235 -0
- package/src/actions/sendTypingIndicator.js +59 -0
- package/src/actions/setMessageReaction.js +140 -0
- package/src/actions/setMessageReactionMqtt.js +72 -0
- package/src/actions/setPostReaction.js +76 -0
- package/src/actions/setTitle.js +86 -0
- package/src/actions/stopListenMqtt.js +63 -0
- package/src/actions/threadColors.js +57 -0
- package/src/actions/unfriend.js +52 -0
- package/src/actions/unsendMessage.js +61 -0
- package/src/index.js +659 -0
- package/src/service/uploadAttachment.js +318 -0
- package/src/utils/base-parts/auth.js +286 -0
- package/src/utils/base-parts/formatters.js +751 -0
- package/src/utils/base-parts/identity.js +169 -0
- package/src/utils/base-parts/network.js +159 -0
- package/src/utils/base-parts/parsing.js +53 -0
- package/src/utils/base-parts/type.js +9 -0
- package/src/utils/base.js +18 -0
- package/src/utils/defaults.js +10 -0
- package/src/utils/format-attachments.js +7 -0
- package/src/utils/format-core.js +8 -0
- package/src/utils/format-events.js +11 -0
- package/src/utils/format-messages.js +10 -0
- package/src/utils/format-presence.js +9 -0
- package/src/utils/format-threads.js +8 -0
- package/src/utils/formatters.js +18 -0
- package/src/utils/identity.js +12 -0
- package/src/utils/index.js +15 -0
- package/src/utils/network.js +12 -0
- package/src/utils/parsing.js +11 -0
- package/src/utils.js +3 -0
- package/test/config.env.example +30 -0
- package/test/data/shareAttach.js +146 -0
- package/test/data/something.mov +0 -0
- package/test/data/test.png +0 -0
- package/test/data/test.txt +7 -0
- package/test/example-appstate.txt +11 -0
- package/test/integration/actions.appstate.integration.test.js +233 -0
- package/test/integration/api.integration.test.js +387 -0
- package/test/integration/env-test-config.js +46 -0
- package/test/integration/login.appstate.integration.test.js +47 -0
- package/test/integration/page.integration.test.js +139 -0
- package/test/jest.setup.js +54 -0
- package/test/unit/actions/actions.basic.test.js +116 -0
- package/test/unit/actions/actions.registry.test.js +36 -0
- package/test/unit/index/index.test.js +109 -0
- package/test/unit/utils/base-parts/auth.test.js +92 -0
- package/test/unit/utils/base-parts/formatters.test.js +53 -0
- package/test/unit/utils/base-parts/identity.test.js +43 -0
- package/test/unit/utils/base-parts/parsing.test.js +38 -0
- package/test/unit/utils/base-parts/type.test.js +23 -0
- package/test/unit/utils/base.test.js +35 -0
- package/vangbanlanhat-fca-unofficial-1.4.2.tgz +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var log = require("npmlog");
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
module.exports = function (_defaultFuncs, _api, ctx) {
|
|
7
|
+
return function stopListenMqtt(callback) {
|
|
8
|
+
var userCallback = typeof callback === "function" ? callback : null;
|
|
9
|
+
|
|
10
|
+
var resolveFunc = function () {};
|
|
11
|
+
var rejectFunc = function () {};
|
|
12
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
13
|
+
resolveFunc = resolve;
|
|
14
|
+
rejectFunc = reject;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
function settle(err, data) {
|
|
18
|
+
if (userCallback) {
|
|
19
|
+
try {
|
|
20
|
+
var cbResult = userCallback(err, data);
|
|
21
|
+
if (cbResult && typeof cbResult.then === "function") {
|
|
22
|
+
cbResult.catch(function (cbErr) {
|
|
23
|
+
log.error("stopListenMqtt", cbErr);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
} catch (cbErr) {
|
|
27
|
+
log.error("stopListenMqtt", cbErr);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (err) {
|
|
32
|
+
rejectFunc(err);
|
|
33
|
+
} else {
|
|
34
|
+
resolveFunc(data);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (!ctx.mqttClient) {
|
|
39
|
+
settle(new Error("Not connected to MQTT"));
|
|
40
|
+
return returnPromise;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
ctx._stopListening = true;
|
|
44
|
+
log.info("stopListenMqtt", "Stopping...");
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
ctx.mqttClient.unsubscribe("/webrtc");
|
|
48
|
+
ctx.mqttClient.unsubscribe("/rtc_multi");
|
|
49
|
+
ctx.mqttClient.unsubscribe("/onevc");
|
|
50
|
+
ctx.mqttClient.publish("/browser_close", "{}");
|
|
51
|
+
} catch (_) {
|
|
52
|
+
// noop
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
ctx.mqttClient.end(false, function () {
|
|
56
|
+
log.info("stopListenMqtt", "Stopped");
|
|
57
|
+
ctx.mqttClient = null;
|
|
58
|
+
settle(null, true);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
return returnPromise;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
module.exports = function(_defaultFuncs, _api, _ctx) {
|
|
4
|
+
// Currently the only colors that can be passed to api.changeThreadColor(); may change if Facebook adds more
|
|
5
|
+
return {
|
|
6
|
+
//Old hex colors.
|
|
7
|
+
////MessengerBlue: null,
|
|
8
|
+
////Viking: "#44bec7",
|
|
9
|
+
////GoldenPoppy: "#ffc300",
|
|
10
|
+
////RadicalRed: "#fa3c4c",
|
|
11
|
+
////Shocking: "#d696bb",
|
|
12
|
+
////PictonBlue: "#6699cc",
|
|
13
|
+
////FreeSpeechGreen: "#13cf13",
|
|
14
|
+
////Pumpkin: "#ff7e29",
|
|
15
|
+
////LightCoral: "#e68585",
|
|
16
|
+
////MediumSlateBlue: "#7646ff",
|
|
17
|
+
////DeepSkyBlue: "#20cef5",
|
|
18
|
+
////Fern: "#67b868",
|
|
19
|
+
////Cameo: "#d4a88c",
|
|
20
|
+
////BrilliantRose: "#ff5ca1",
|
|
21
|
+
////BilobaFlower: "#a695c7"
|
|
22
|
+
|
|
23
|
+
//#region This part is for backward compatibly
|
|
24
|
+
//trying to match the color one-by-one. kill me plz
|
|
25
|
+
MessengerBlue: "196241301102133", //DefaultBlue
|
|
26
|
+
Viking: "1928399724138152", //TealBlue
|
|
27
|
+
GoldenPoppy: "174636906462322", //Yellow
|
|
28
|
+
RadicalRed: "2129984390566328", //Red
|
|
29
|
+
Shocking: "2058653964378557", //LavenderPurple
|
|
30
|
+
FreeSpeechGreen: "2136751179887052", //Green
|
|
31
|
+
Pumpkin: "175615189761153", //Orange
|
|
32
|
+
LightCoral: "980963458735625", //CoralPink
|
|
33
|
+
MediumSlateBlue: "234137870477637", //BrightPurple
|
|
34
|
+
DeepSkyBlue: "2442142322678320", //AquaBlue
|
|
35
|
+
BrilliantRose: "169463077092846", //HotPink
|
|
36
|
+
//i've tried my best, everything else can't be mapped. (or is it?) -UIRI 2020
|
|
37
|
+
//#endregion
|
|
38
|
+
|
|
39
|
+
DefaultBlue: "196241301102133",
|
|
40
|
+
HotPink: "169463077092846",
|
|
41
|
+
AquaBlue: "2442142322678320",
|
|
42
|
+
BrightPurple: "234137870477637",
|
|
43
|
+
CoralPink: "980963458735625",
|
|
44
|
+
Orange: "175615189761153",
|
|
45
|
+
Green: "2136751179887052",
|
|
46
|
+
LavenderPurple: "2058653964378557",
|
|
47
|
+
Red: "2129984390566328",
|
|
48
|
+
Yellow: "174636906462322",
|
|
49
|
+
TealBlue: "1928399724138152",
|
|
50
|
+
Aqua: "417639218648241",
|
|
51
|
+
Mango: "930060997172551",
|
|
52
|
+
Berry: "164535220883264",
|
|
53
|
+
Citrus: "370940413392601",
|
|
54
|
+
Candy: "205488546921017",
|
|
55
|
+
//StarWars: "809305022860427" Removed.
|
|
56
|
+
};
|
|
57
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
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(userID, 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 form = {
|
|
25
|
+
uid: userID,
|
|
26
|
+
unref: "bd_friends_tab",
|
|
27
|
+
floc: "friends_tab",
|
|
28
|
+
"nctr[_mod]": "pagelet_timeline_app_collection_" + ctx.userID + ":2356318349:2"
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
defaultFuncs
|
|
32
|
+
.post(
|
|
33
|
+
"https://www.facebook.com/ajax/profile/removefriendconfirm.php",
|
|
34
|
+
ctx.jar,
|
|
35
|
+
form
|
|
36
|
+
)
|
|
37
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
38
|
+
.then(function(resData) {
|
|
39
|
+
if (resData.error) {
|
|
40
|
+
throw resData;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return callback();
|
|
44
|
+
})
|
|
45
|
+
.catch(function(err) {
|
|
46
|
+
log.error("unfriend", err);
|
|
47
|
+
return callback(err);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
return returnPromise;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
|
8
|
+
return function unsendMessage(messageID, callback, threadID) {
|
|
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 (utils.getType(callback) === "String" && !threadID) {
|
|
17
|
+
threadID = callback;
|
|
18
|
+
callback = null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (utils.getType(messageID) === "Object") {
|
|
22
|
+
threadID = messageID.chatJid || messageID.threadID || threadID;
|
|
23
|
+
messageID = messageID.messageID || messageID.id;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (!callback) {
|
|
27
|
+
callback = function (err, friendList) {
|
|
28
|
+
if (err) {
|
|
29
|
+
return rejectFunc(err);
|
|
30
|
+
}
|
|
31
|
+
resolveFunc(friendList);
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
var form = {
|
|
37
|
+
message_id: messageID
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
defaultFuncs
|
|
41
|
+
.post(
|
|
42
|
+
"https://www.facebook.com/messaging/unsend_message/",
|
|
43
|
+
ctx.jar,
|
|
44
|
+
form
|
|
45
|
+
)
|
|
46
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
47
|
+
.then(function(resData) {
|
|
48
|
+
if (resData.error) {
|
|
49
|
+
throw resData;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return callback();
|
|
53
|
+
})
|
|
54
|
+
.catch(function(err) {
|
|
55
|
+
log.error("unsendMessage", err);
|
|
56
|
+
return callback(err);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
return returnPromise;
|
|
60
|
+
};
|
|
61
|
+
};
|