aminul-remake-fca
Version:
Aminul's remake of ws3-fca — next-generation Facebook Chat API fork
80 lines (69 loc) • 2.15 kB
JavaScript
"use_strict";
var utils = require("../utils");
module.exports = function(defaultFuncs, api, ctx) {
return function editMessage(text, messageID, callback) {
let reqID = ctx.wsReqNumber+1;
var resolveFunc = function() {};
var rejectFunc = function() {};
var returnPromise = new Promise(function (resolve, reject) {
resolveFunc = resolve;
rejectFunc = reject;
});
if (!callback) {
callback = function (err, data) {
if (err) {
return rejectFunc(err);
}
resolveFunc(data);
};
}
var form = {
message_id: messageID,
text: text,
};
var content = {
app_id: '2220391788200892',
payload: JSON.stringify({
data_trace_id: null,
epoch_id: parseInt(utils.generateOfflineThreadingID()),
tasks: [{
failure_count: null,
label: '742',
payload: JSON.stringify(form),
queue_name: 'edit_message',
task_id: ++ctx.wsTaskNumber,
}],
version_id: '6903494529735864',
}),
request_id: ++ctx.wsReqNumber,
type: 3
}
ctx.mqttClient.publish('/ls_req', JSON.stringify(content), {
qos: 1, retain: false
});
const handleRes = function (topic, message) {
if (topic === "/ls_resp") {
let jsonMsg = JSON.parse(message.toString());
jsonMsg.payload = JSON.parse(jsonMsg.payload);
if (jsonMsg.request_id != reqID) return;
ctx.mqttClient.removeListener('message', handleRes);
let msgID = jsonMsg.payload.step[1][2][2][1][2];
let msgReplace = jsonMsg.payload.step[1][2][2][1][4];
if (msgReplace != text) {
let err = {error: "The message is too old or not from you!"}
// utils.error("editMessage", err);
return callback(err, {
body: msgReplace,
messageID: msgID
});
}
return callback(undefined, {
body: msgReplace,
messageID: msgID
});
}
}
ctx.mqttClient.on('message', handleRes);
return returnPromise;
};
}