@pubby/sdk
Version:
Pubby Development Kit
111 lines (106 loc) • 4.45 kB
JavaScript
;
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;