UNPKG

@pubby/sdk

Version:
111 lines (106 loc) 4.45 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib = require('tslib'); var module$1 = require('../../module.js'); require('../../websocket/incoming/index.js'); require('../../websocket/outgoing/index.js'); var index = require('../room/index.js'); var queueUpdate_event = require('../../websocket/incoming/queue-update.event.js'); var queueAdd_event = require('../../websocket/incoming/queue-add.event.js'); var queueJoin_event = require('../../websocket/outgoing/queue-join.event.js'); var queueRemove_event = require('../../websocket/outgoing/queue-remove.event.js'); var queueMove_event = require('../../websocket/outgoing/queue-move.event.js'); var QueueModule = /** @class */ (function (_super) { tslib.__extends(QueueModule, _super); function QueueModule(client) { var _this = _super.call(this, client) || this; _this.state = new Set(); // Importa websocket client.use(index.RoomModule); client.queue = _this; _this.update$ = client.ws.listen(queueUpdate_event.QueueUpdateResponse); _this.add$ = client.ws.listen(queueAdd_event.QueueAddResponse); return _this; } Object.defineProperty(QueueModule.prototype, "usersId", { get: function () { return Array.from(this.state); }, enumerable: false, configurable: true }); Object.defineProperty(QueueModule.prototype, "users", { get: function () { var _this = this; return this.usersId.map(function (userId) { return _this.pubby.room.state.users.get(userId); }); }, enumerable: false, configurable: true }); Object.defineProperty(QueueModule.prototype, "next", { get: function () { var _a = tslib.__read(this.usersId, 1), userId = _a[0]; return this.pubby.room.state.users.get(userId); }, enumerable: false, configurable: true }); QueueModule.prototype.init = function () { var _this = this; this.update$.subscribe(function (_a) { var e_1, _b; var queue = _a.queue; var old = new Set(_this.state); _this.state = new Set(queue); _this.emit("update", _this.users, old); try { for (var old_1 = tslib.__values(old), old_1_1 = old_1.next(); !old_1_1.done; old_1_1 = old_1.next()) { var userId = old_1_1.value; if (!_this.state.has(userId)) { _this.emit("user-leave", userId); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (old_1_1 && !old_1_1.done && (_b = old_1.return)) _b.call(old_1); } finally { if (e_1) throw e_1.error; } } }); this.add$.subscribe(function (_a) { var userId = _a.userId, addedUserId = _a.addedUserId; _this.state.add(addedUserId); var addedUser = _this.pubby.room.state.users.get(addedUserId); var user = userId ? _this.pubby.room.state.users.get(userId) : null; _this.emit("user-join", addedUser, user); }); }; QueueModule.prototype.join = function (userId) { return this.pubby.ws.addAsync(new queueJoin_event.QueueJoinRequest(userId)); }; QueueModule.prototype.leave = function (userId) { return this.pubby.ws.addAsync(new queueRemove_event.QueueRemoveRequest(userId)); }; QueueModule.prototype.move = function (userId, position) { var user = this.users[position - 1]; if (user !== undefined && user.id !== userId) { this.pubby.ws.add(new queueMove_event.QueueMoveRequest(userId, user.id)); } }; QueueModule.prototype.has = function (userId) { return this.state.has(userId); }; QueueModule.prototype.on = function (event) { var listeners = []; for (var _i = 1; _i < arguments.length; _i++) { listeners[_i - 1] = arguments[_i]; } return _super.prototype.on.apply(this, tslib.__spread([event], listeners)); }; return QueueModule; }(module$1.PubbyModule)); exports.QueueModule = QueueModule;