| | "use strict"; |
| |
|
| | const utils = require("../utils"); |
| | const log = require("npmlog"); |
| |
|
| | module.exports = function (defaultFuncs, api, ctx) { |
| | return async function markAsRead(threadID, read, callback) { |
| | if (utils.getType(read) === 'Function' || utils.getType(read) === 'AsyncFunction') { |
| | callback = read; |
| | read = true; |
| | } |
| | if (read == undefined) { |
| | read = true; |
| | } |
| |
|
| | if (!callback) { |
| | callback = () => { }; |
| | } |
| |
|
| | const form = {}; |
| |
|
| | if (typeof ctx.globalOptions.pageID !== 'undefined') { |
| | form["source"] = "PagesManagerMessagesInterface"; |
| | form["request_user_id"] = ctx.globalOptions.pageID; |
| | form["ids[" + threadID + "]"] = read; |
| | form["watermarkTimestamp"] = new Date().getTime(); |
| | form["shouldSendReadReceipt"] = true; |
| | form["commerce_last_message_type"] = ""; |
| | |
| |
|
| | let resData; |
| | try { |
| | resData = await ( |
| | defaultFuncs |
| | .post( |
| | "https://www.facebook.com/ajax/mercury/change_read_status.php", |
| | ctx.jar, |
| | form |
| | ) |
| | .then(utils.saveCookies(ctx.jar)) |
| | .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) |
| | ); |
| | } catch (e) { |
| | callback(e); |
| | return e; |
| | } |
| |
|
| | if (resData.error) { |
| | const err = resData.error; |
| | log.error("markAsRead", err); |
| | if (utils.getType(err) == "Object" && err.error === "Not logged in.") { |
| | ctx.loggedIn = false; |
| | } |
| | callback(err); |
| | return err; |
| | } |
| |
|
| | callback(); |
| | return null; |
| | } else { |
| | try { |
| | if (ctx.mqttClient) { |
| | const err = await new Promise(r => ctx.mqttClient.publish("/mark_thread", JSON.stringify({ |
| | threadID, |
| | mark: "read", |
| | state: read |
| | }), { qos: 1, retain: false }, r)); |
| | if (err) throw err; |
| | } else { |
| | throw { |
| | error: "You can only use this function after you start listening." |
| | }; |
| | } |
| | } catch (e) { |
| | callback(e); |
| | return e; |
| | } |
| | } |
| | }; |
| | }; |
| |
|