@pubby/sdk
Version:
Pubby Development Kit
69 lines (66 loc) • 2.88 kB
JavaScript
import { __extends, __spread } from 'tslib';
import '../../lib/streams/operators/index.js';
import { PubbyModule } from '../../module.js';
import '../../websocket/incoming/index.js';
import '../../websocket/outgoing/index.js';
import { RoomModule } from '../room/index.js';
import { PubbyMessage } from './message.js';
import { ChatMessageResponse } from '../../websocket/incoming/chat-message.event.js';
import { filter } from '../../lib/streams/operators/filter.js';
import { ChatMessageRemoveRequest } from '../../websocket/outgoing/chat-message-remove.event.js';
import { ChatMessageRequest } from '../../websocket/outgoing/chat-message.event.js';
var ChatModule = /** @class */ (function (_super) {
__extends(ChatModule, _super);
function ChatModule(pubby) {
var _this = _super.call(this, pubby) || this;
// Importa módulo de sala
pubby.use(RoomModule);
// Exporta o módulo de chat
pubby.chat = _this;
return _this;
}
ChatModule.prototype.init = function () {
var _this = this;
this.onUpdate$ = this.pubby.ws.listen(ChatMessageResponse);
this.onMessage$ = this.onUpdate$.pipe(filter(function (_a) {
var message = _a.message;
return message.fromId && message.fromId !== _this.pubby.auth.user.id;
}));
// Message Event
this.onUpdate$.createEvent("update", this, function (data) { return _this.createMessage(data.message); });
this.onMessage$.createEvent("message", this, function (data) { return _this.createMessage(data.message); });
};
ChatModule.prototype.createMessage = function (message) {
return new PubbyMessage(message, this);
};
ChatModule.prototype.remove = function (messageId) {
return this.pubby.ws.addAsync(new ChatMessageRemoveRequest(messageId));
};
ChatModule.prototype.send = function (messageOrText) {
var _this = this;
return new Promise(function (resolve) {
var text;
var replyId;
if (messageOrText instanceof PubbyMessage) {
text = messageOrText.text;
replyId = messageOrText.replyId;
}
else {
text = messageOrText;
}
_this.pubby.ws
.addAsync(new ChatMessageRequest(text, replyId))
.then(function (msg) { return _this.createMessage(msg); })
.then(resolve);
});
};
ChatModule.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, __spread([event], listeners));
};
return ChatModule;
}(PubbyModule));
export { ChatModule };