rapido-fca 0.0.10 → 1.0.0
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.
Potentially problematic release.
This version of rapido-fca might be problematic. Click here for more details.
- package/LICENSE +21 -0
- package/index.js +4 -4
- package/package.json +15 -16
- package/readme.md +237 -39
- package/src/Screenshot.js +83 -0
- package/src/addExternalModule.js +19 -23
- package/src/addUserToGroup.js +99 -97
- package/src/changeAdminStatus.js +86 -62
- package/src/changeArchivedStatus.js +49 -49
- package/src/changeAvatar.js +118 -108
- package/src/changeBio.js +63 -64
- package/src/changeBlockedStatus.js +40 -38
- package/src/changeGroupImage.js +129 -126
- package/src/changeNickname.js +49 -49
- package/src/changeThreadColor.js +53 -53
- package/src/changeThreadEmoji.js +45 -45
- package/src/createNewGroup.js +74 -72
- package/src/createPoll.js +59 -59
- package/src/deleteMessage.js +50 -50
- package/src/deleteThread.js +50 -50
- package/src/editMessage.js +51 -49
- package/src/forwardAttachment.js +54 -54
- package/src/getCurrentUserID.js +3 -3
- package/src/getEmojiUrl.js +17 -17
- package/src/getFriendsList.js +67 -67
- package/src/getMessage.js +806 -767
- package/src/getThreadHistory.js +656 -642
- package/src/getThreadInfo.js +1 -1
- package/src/getThreadList.js +199 -227
- package/src/getThreadPictures.js +51 -71
- package/src/getUserID.js +53 -58
- package/src/getUserInfo.js +52 -60
- package/src/handleFriendRequest.js +41 -65
- package/src/handleMessageRequest.js +42 -60
- package/src/httpGet.js +49 -57
- package/src/httpPost.js +48 -57
- package/src/listenMqtt.js +827 -827
- package/src/listenMqtt.txt +827 -0
- package/src/logout.js +61 -61
- package/src/markAsDelivered.js +42 -53
- package/src/markAsRead.js +59 -69
- package/src/markAsReadAll.js +32 -42
- package/src/markAsSeen.js +43 -54
- package/src/muteThread.js +40 -47
- package/src/postFormData.txt +46 -0
- package/src/refreshFb_dtsg.js +77 -69
- package/src/removeUserFromGroup.js +67 -67
- package/src/resolvePhotoUrl.js +34 -34
- package/src/searchForThread.js +43 -43
- package/src/sendMessage.js +80 -228
- package/src/sendTypingIndicator.js +86 -88
- package/src/setPostReaction.js +90 -87
- package/src/setTitle.js +76 -72
- package/src/threadColors.js +121 -121
- package/src/unfriend.js +43 -43
- package/src/unsendMessage.js +34 -38
- package/src/uploadAttachment.js +80 -81
- package/src/httpPostFormData.js +0 -63
- package/src/setEmojiReaction.js +0 -59
- package/src/videoAttachment.js +0 -76
package/src/logout.js
CHANGED
|
@@ -1,75 +1,75 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
const utils = require("../utils");
|
|
4
|
-
|
|
4
|
+
// @NethWs3Dev
|
|
5
5
|
|
|
6
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
return function logout(callback) {
|
|
8
|
+
let resolveFunc = function () {};
|
|
9
|
+
let rejectFunc = function () {};
|
|
10
|
+
const returnPromise = new Promise(function (resolve, reject) {
|
|
11
|
+
resolveFunc = resolve;
|
|
12
|
+
rejectFunc = reject;
|
|
13
|
+
});
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
if (!callback) {
|
|
16
|
+
callback = function (err, friendList) {
|
|
17
|
+
if (err) {
|
|
18
|
+
return rejectFunc(err);
|
|
19
|
+
}
|
|
20
|
+
resolveFunc(friendList);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const form = {
|
|
25
|
+
pmid: "0",
|
|
26
|
+
};
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
defaultFuncs
|
|
29
|
+
.post(
|
|
30
|
+
"https://www.facebook.com/bluebar/modern_settings_menu/?help_type=364455653583099&show_contextual_help=1",
|
|
31
|
+
ctx.jar,
|
|
32
|
+
form,
|
|
33
|
+
)
|
|
34
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
35
|
+
.then(function (resData) {
|
|
36
|
+
const elem = resData.jsmods.instances[0][2][0].filter(function (v) {
|
|
37
|
+
return v.value === "logout";
|
|
38
|
+
})[0];
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const html = resData.jsmods.markup.filter(function (v) {
|
|
41
|
+
return v[0] === elem.markup.__m;
|
|
42
|
+
})[0][1].__html;
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
const form = {
|
|
45
|
+
fb_dtsg: utils.getFrom(html, '"fb_dtsg" value="', '"'),
|
|
46
|
+
ref: utils.getFrom(html, '"ref" value="', '"'),
|
|
47
|
+
h: utils.getFrom(html, '"h" value="', '"'),
|
|
48
|
+
};
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
return defaultFuncs
|
|
51
|
+
.post("https://www.facebook.com/logout.php", ctx.jar, form)
|
|
52
|
+
.then(utils.saveCookies(ctx.jar));
|
|
53
|
+
})
|
|
54
|
+
.then(function (res) {
|
|
55
|
+
if (!res.headers) {
|
|
56
|
+
throw { error: "An error occurred when logging out." };
|
|
57
|
+
}
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
59
|
+
return defaultFuncs
|
|
60
|
+
.get(res.headers.location, ctx.jar)
|
|
61
|
+
.then(utils.saveCookies(ctx.jar));
|
|
62
|
+
})
|
|
63
|
+
.then(function () {
|
|
64
|
+
ctx.loggedIn = false;
|
|
65
|
+
console.log("logout", "Logged out successfully.");
|
|
66
|
+
callback();
|
|
67
|
+
})
|
|
68
|
+
.catch(function (err) {
|
|
69
|
+
console.error("logout", err);
|
|
70
|
+
return callback(err);
|
|
71
|
+
});
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
return returnPromise;
|
|
74
|
+
};
|
|
75
75
|
};
|
package/src/markAsDelivered.js
CHANGED
|
@@ -1,58 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
5
|
|
|
6
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
})
|
|
48
|
-
.catch(function (err) {
|
|
49
|
-
log.error("markAsDelivered", err);
|
|
50
|
-
if (utils.getType(err) == "Object" && err.error === "Not logged in.") {
|
|
51
|
-
ctx.loggedIn = false;
|
|
52
|
-
}
|
|
53
|
-
return callback(err);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
return returnPromise;
|
|
57
|
-
};
|
|
7
|
+
return function markAsDelivered(threadID, messageID, 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, data) {
|
|
17
|
+
if (err) return rejectFunc(err);
|
|
18
|
+
|
|
19
|
+
resolveFunc(data);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (!threadID || !messageID) return callback("Error: messageID or threadID is not defined");
|
|
24
|
+
|
|
25
|
+
var form = {};
|
|
26
|
+
form["message_ids[0]"] = messageID;
|
|
27
|
+
form["thread_ids[" + threadID + "][0]"] = messageID;
|
|
28
|
+
|
|
29
|
+
defaultFuncs
|
|
30
|
+
.post("https://www.facebook.com/ajax/mercury/delivery_receipts.php", ctx.jar, form)
|
|
31
|
+
.then(utils.saveCookies(ctx.jar))
|
|
32
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
33
|
+
.then(function (resData) {
|
|
34
|
+
if (resData.error) throw resData;
|
|
35
|
+
|
|
36
|
+
return callback();
|
|
37
|
+
})
|
|
38
|
+
.catch(function (err) {
|
|
39
|
+
log.error("markAsDelivered", err);
|
|
40
|
+
if (utils.getType(err) == "Object" && err.error === "Not logged in.") ctx.loggedIn = false;
|
|
41
|
+
|
|
42
|
+
return callback(err);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
return returnPromise;
|
|
46
|
+
};
|
|
58
47
|
};
|
package/src/markAsRead.js
CHANGED
|
@@ -1,80 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
5
|
|
|
6
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
read = true;
|
|
14
|
-
}
|
|
7
|
+
return async function markAsRead(threadID, read, callback) {
|
|
8
|
+
if (utils.getType(read) === 'Function' || utils.getType(read) === 'AsyncFunction') {
|
|
9
|
+
callback = read;
|
|
10
|
+
read = true;
|
|
11
|
+
}
|
|
12
|
+
if (read == undefined) read = true;
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
callback = () => { };
|
|
18
|
-
}
|
|
14
|
+
if (!callback) callback = () => { };
|
|
19
15
|
|
|
20
|
-
|
|
16
|
+
var form = {};
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
if (typeof ctx.globalOptions.pageID !== 'undefined') {
|
|
19
|
+
form["source"] = "PagesManagerMessagesInterface";
|
|
20
|
+
form["request_user_id"] = ctx.globalOptions.pageID;
|
|
21
|
+
form["ids[" + threadID + "]"] = read;
|
|
22
|
+
form["watermarkTimestamp"] = new Date().getTime();
|
|
23
|
+
form["shouldSendReadReceipt"] = true;
|
|
24
|
+
form["commerce_last_message_type"] = "";
|
|
25
|
+
//form["titanOriginatedThreadId"] = utils.generateThreadingID(ctx.clientID);
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
callback(e);
|
|
45
|
-
return e;
|
|
46
|
-
}
|
|
27
|
+
let resData;
|
|
28
|
+
try {
|
|
29
|
+
resData = await (
|
|
30
|
+
defaultFuncs
|
|
31
|
+
.post("https://www.facebook.com/ajax/mercury/change_read_status.php", ctx.jar, form)
|
|
32
|
+
.then(utils.saveCookies(ctx.jar))
|
|
33
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
callback(e);
|
|
38
|
+
return e;
|
|
39
|
+
}
|
|
47
40
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return err;
|
|
56
|
-
}
|
|
41
|
+
if (resData.error) {
|
|
42
|
+
let err = resData.error;
|
|
43
|
+
log.error("markAsRead", err);
|
|
44
|
+
if (utils.getType(err) == "Object" && err.error === "Not logged in.") ctx.loggedIn = false;
|
|
45
|
+
callback(err);
|
|
46
|
+
return err;
|
|
47
|
+
}
|
|
57
48
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
};
|
|
49
|
+
callback();
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
try {
|
|
54
|
+
if (ctx.mqttClient) {
|
|
55
|
+
let err = await new Promise(r => ctx.mqttClient.publish("/mark_thread", JSON.stringify({
|
|
56
|
+
threadID,
|
|
57
|
+
mark: "read",
|
|
58
|
+
state: read
|
|
59
|
+
}), { qos: 1, retain: false }, r));
|
|
60
|
+
if (err) throw err;
|
|
61
|
+
}
|
|
62
|
+
else throw { error: "You can only use this function after you start listening." };
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
callback(e);
|
|
66
|
+
return e;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
80
70
|
};
|
package/src/markAsReadAll.js
CHANGED
|
@@ -1,50 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
5
|
|
|
6
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
return function markAsReadAll(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
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
};
|
|
22
|
-
}
|
|
15
|
+
if (!callback) {
|
|
16
|
+
callback = function (err, data) {
|
|
17
|
+
if (err) return rejectFunc(err);
|
|
18
|
+
resolveFunc(data);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
var form = {
|
|
23
|
+
folder: 'inbox'
|
|
24
|
+
};
|
|
27
25
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
})
|
|
43
|
-
.catch(function (err) {
|
|
44
|
-
log.error("markAsReadAll", err);
|
|
45
|
-
return callback(err);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
return returnPromise;
|
|
49
|
-
};
|
|
26
|
+
defaultFuncs
|
|
27
|
+
.post("https://www.facebook.com/ajax/mercury/mark_folder_as_read.php", ctx.jar, form)
|
|
28
|
+
.then(utils.saveCookies(ctx.jar))
|
|
29
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
30
|
+
.then(function (resData) {
|
|
31
|
+
if (resData.error) throw resData;
|
|
32
|
+
return callback();
|
|
33
|
+
})
|
|
34
|
+
.catch(function (err) {
|
|
35
|
+
log.error("markAsReadAll", err);
|
|
36
|
+
return callback(err);
|
|
37
|
+
});
|
|
38
|
+
return returnPromise;
|
|
39
|
+
};
|
|
50
40
|
};
|
package/src/markAsSeen.js
CHANGED
|
@@ -1,59 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
5
|
|
|
6
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
})
|
|
49
|
-
.catch(function (err) {
|
|
50
|
-
log.error("markAsSeen", err);
|
|
51
|
-
if (utils.getType(err) == "Object" && err.error === "Not logged in.") {
|
|
52
|
-
ctx.loggedIn = false;
|
|
53
|
-
}
|
|
54
|
-
return callback(err);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
return returnPromise;
|
|
58
|
-
};
|
|
7
|
+
return function markAsRead(seen_timestamp, callback) {
|
|
8
|
+
if (utils.getType(seen_timestamp) == "Function" ||
|
|
9
|
+
utils.getType(seen_timestamp) == "AsyncFunction") {
|
|
10
|
+
callback = seen_timestamp;
|
|
11
|
+
seen_timestamp = Date.now();
|
|
12
|
+
}
|
|
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, data) {
|
|
23
|
+
if (err) return rejectFunc(err);
|
|
24
|
+
|
|
25
|
+
resolveFunc(data);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var form = {
|
|
30
|
+
seen_timestamp: seen_timestamp
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
defaultFuncs
|
|
34
|
+
.post("https://www.facebook.com/ajax/mercury/mark_seen.php", ctx.jar, form)
|
|
35
|
+
.then(utils.saveCookies(ctx.jar))
|
|
36
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
37
|
+
.then(function (resData) {
|
|
38
|
+
if (resData.error) throw resData;
|
|
39
|
+
return callback();
|
|
40
|
+
})
|
|
41
|
+
.catch(function (err) {
|
|
42
|
+
log.error("markAsSeen", err);
|
|
43
|
+
if (utils.getType(err) == "Object" && err.error === "Not logged in.") ctx.loggedIn = false;
|
|
44
|
+
return callback(err);
|
|
45
|
+
});
|
|
46
|
+
return returnPromise;
|
|
47
|
+
};
|
|
59
48
|
};
|
package/src/muteThread.js
CHANGED
|
@@ -1,52 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
5
|
|
|
6
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
.catch(function (err) {
|
|
46
|
-
log.error("muteThread", err);
|
|
47
|
-
return callback(err);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
return returnPromise;
|
|
51
|
-
};
|
|
7
|
+
// muteSecond: -1=permanent mute, 0=unmute, 60=one minute, 3600=one hour, etc.
|
|
8
|
+
return function muteThread(threadID, muteSeconds, callback) {
|
|
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 (!callback) {
|
|
17
|
+
callback = function (err, data) {
|
|
18
|
+
if (err) return rejectFunc(err);
|
|
19
|
+
|
|
20
|
+
resolveFunc(data);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var form = {
|
|
25
|
+
thread_fbid: threadID,
|
|
26
|
+
mute_settings: muteSeconds
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
defaultFuncs
|
|
30
|
+
.post("https://www.facebook.com/ajax/mercury/change_mute_thread.php", ctx.jar, form)
|
|
31
|
+
.then(utils.saveCookies(ctx.jar))
|
|
32
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
33
|
+
.then(function (resData) {
|
|
34
|
+
if (resData.error) throw resData;
|
|
35
|
+
|
|
36
|
+
return callback();
|
|
37
|
+
})
|
|
38
|
+
.catch(function (err) {
|
|
39
|
+
log.error("muteThread", err);
|
|
40
|
+
return callback(err);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
return returnPromise;
|
|
44
|
+
};
|
|
52
45
|
};
|