UNPKG

rocket.chat.mqtt

Version:

It's a MQTT Server, using redis to scale horizontally.

39 lines (25 loc) 1.18 kB
'use strict'; var _rocketChat = require('rocket.chat.proto'); var _publish = require('../Routes/publish'); var _publish2 = _interopRequireDefault(_publish); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } const decodeUserpresence = (0, _rocketChat.decoder)('userpresence'); const encodeUserpresence = (0, _rocketChat.encoder)('userpresence'); const statusAllowed = [0, 1, 2]; _publish2.default.add('userpresence', ({ user }, packet) => { if (!user || !user._id) { return false; } const _decodeUserpresence = decodeUserpresence(packet.payload), { status } = _decodeUserpresence, args = _objectWithoutProperties(_decodeUserpresence, ['status']); if (!statusAllowed.includes(status) || Object.keys(args).length) { return false; } packet.qos = 0; packet.retain = true; packet.payload = encodeUserpresence({ status }); packet.topic = `userpresence/${user._id}`; return true; });