UNPKG

aminul-remake-fca

Version:

Aminul's remake of ws3-fca — next-generation Facebook Chat API fork

63 lines (51 loc) 1.48 kB
'use strict'; const { generateOfflineThreadingID } = require('../utils'); function isCallable(func) { try { Reflect.apply(func, null, []); return true; } catch (error) { return false; } } module.exports = function (defaultFuncs, api, ctx) { return function setMessageReactionMqtt(reaction, messageID, threadID, callback) { if (!ctx.mqttClient) { throw new Error('Not connected to MQTT'); } ctx.wsReqNumber += 1; ctx.wsTaskNumber += 1; const taskPayload = { thread_key: threadID, timestamp_ms: Date.now(), message_id: messageID, reaction: reaction, actor_id: ctx.userID, reaction_style: null, sync_group: 1, send_attribution: Math.random() < 0.5 ? 65537 : 524289 }; const task = { failure_count: null, label: '29', payload: JSON.stringify(taskPayload), queue_name: JSON.stringify(['reaction', messageID]), task_id: ctx.wsTaskNumber, }; const content = { app_id: '2220391788200892', payload: JSON.stringify({ data_trace_id: null, epoch_id: parseInt(generateOfflineThreadingID()), tasks: [task], version_id: '7158486590867448', }), request_id: ctx.wsReqNumber, type: 3, }; if (isCallable(callback)) { ctx.reqCallbacks[ctx.wsReqNumber] = callback; } ctx.mqttClient.publish('/ls_req', JSON.stringify(content), { qos: 1, retain: false }); }; };