@hsaadawy/ngx-chat
Version:
86 lines • 13.4 kB
JavaScript
import { __awaiter } from "tslib";
import { xml } from '@xmpp/client';
import { BehaviorSubject } from 'rxjs';
import { AbstractXmppPlugin } from './abstract-xmpp-plugin';
/**
* XEP-0191: Blocking Command
* https://xmpp.org/extensions/xep-0191.html
*/
export class BlockPlugin extends AbstractXmppPlugin {
constructor(xmppChatAdapter, serviceDiscoveryPlugin) {
super();
this.xmppChatAdapter = xmppChatAdapter;
this.serviceDiscoveryPlugin = serviceDiscoveryPlugin;
this.supportsBlock$ = new BehaviorSubject('unknown');
}
onBeforeOnline() {
return __awaiter(this, void 0, void 0, function* () {
const supportsBlock = yield this.determineSupportForBlock();
this.supportsBlock$.next(supportsBlock);
if (supportsBlock) {
yield this.requestBlockedJids();
}
});
}
determineSupportForBlock() {
return __awaiter(this, void 0, void 0, function* () {
try {
return yield this.serviceDiscoveryPlugin.supportsFeature(this.xmppChatAdapter.chatConnectionService.userJid.domain, 'urn:xmpp:blocking');
}
catch (e) {
return false;
}
});
}
onOffline() {
this.supportsBlock$.next('unknown');
this.xmppChatAdapter.blockedContactIds$.next(new Set());
}
blockJid(jid) {
return this.xmppChatAdapter.chatConnectionService.sendIq(xml('iq', { type: 'set' }, xml('block', { xmlns: 'urn:xmpp:blocking' }, xml('item', { jid }))));
}
unblockJid(jid) {
return this.xmppChatAdapter.chatConnectionService.sendIq(xml('iq', { type: 'set' }, xml('unblock', { xmlns: 'urn:xmpp:blocking' }, xml('item', { jid }))));
}
requestBlockedJids() {
return __awaiter(this, void 0, void 0, function* () {
const blockListResponse = yield this.xmppChatAdapter.chatConnectionService.sendIq(xml('iq', { type: 'get' }, xml('blocklist', { xmlns: 'urn:xmpp:blocking' })));
const blockedJids = blockListResponse
.getChild('blocklist')
.getChildren('item')
.map(e => e.attrs.jid);
this.xmppChatAdapter.blockedContactIds$.next(new Set(blockedJids));
});
}
handleStanza(stanza) {
var _a;
const { from } = stanza.attrs;
if (from && from === ((_a = this.xmppChatAdapter.chatConnectionService.userJid) === null || _a === void 0 ? void 0 : _a.bare().toString())) {
const blockPush = stanza.getChild('block', 'urn:xmpp:blocking');
const unblockPush = stanza.getChild('unblock', 'urn:xmpp:blocking');
const blockList = this.xmppChatAdapter.blockedContactIds$.getValue();
if (blockPush) {
blockPush.getChildren('item')
.map(e => e.attrs.jid)
.forEach(jid => blockList.add(jid));
this.xmppChatAdapter.blockedContactIds$.next(blockList);
return true;
}
else if (unblockPush) {
const jidsToUnblock = unblockPush.getChildren('item').map(e => e.attrs.jid);
if (jidsToUnblock.length === 0) {
// unblock everyone
blockList.clear();
}
else {
// unblock individually
jidsToUnblock.forEach(jid => blockList.delete(jid));
}
this.xmppChatAdapter.blockedContactIds$.next(blockList);
return true;
}
}
return false;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2sucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF6em5ldHdvcmsvbmd4LWNoYXQvc3JjL2xpYi9zZXJ2aWNlcy9hZGFwdGVycy94bXBwL3BsdWdpbnMvYmxvY2sucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxrQkFBa0I7SUFJL0MsWUFDWSxlQUFnQyxFQUNoQyxzQkFBOEM7UUFFdEQsS0FBSyxFQUFFLENBQUM7UUFIQSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUpuRCxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFzQixTQUFTLENBQUMsQ0FBQztJQU81RSxDQUFDO0lBRUssY0FBYzs7WUFDaEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN4QyxJQUFJLGFBQWEsRUFBRTtnQkFDZixNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQ25DO1FBQ0wsQ0FBQztLQUFBO0lBRWEsd0JBQXdCOztZQUNsQyxJQUFJO2dCQUNBLE9BQU8sTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQ3pELG1CQUFtQixDQUFDLENBQUM7YUFDNUI7WUFBQyxPQUFPLENB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Q3hELE9BQU8sSUFBSSxDQUFDO2FBQ2Y7aUJBQU0sSUFBSSxXQUFXLEVBQUU7Z0JBQ3BCLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFhLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDNUIsbUJBQW1CO29CQUNuQixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3JCO3FCQUFNO29CQUNILHVCQUF1QjtvQkFDdkIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDdkQ7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sSUFBSSxDQUFDO2FBQ2Y7U0FDSjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHhtbCB9IGZyb20gJ0B4bXBwL2NsaWVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdGFuemEgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0YW56YSc7XHJcbmltcG9ydCB7IFhtcHBDaGF0QWRhcHRlciB9IGZyb20gJy4uL3htcHAtY2hhdC1hZGFwdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdFhtcHBQbHVnaW4gfSBmcm9tICcuL2Fic3RyYWN0LXhtcHAtcGx1Z2luJztcclxuaW1wb3J0IHsgU2VydmljZURpc2NvdmVyeVBsdWdpbiB9IGZyb20gJy4vc2VydmljZS1kaXNjb3ZlcnkucGx1Z2luJztcclxuXHJcbi8qKlxyXG4gKiBYRVAtMDE5MTogQmxvY2tpbmcgQ29tbWFuZFxyXG4gKiBodHRwczovL3htcHAub3JnL2V4dGVuc2lvbnMveGVwLTAxOTEuaHRtbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEJsb2NrUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RYbXBwUGx1Z2luIHtcclxuXHJcbiAgICBwdWJsaWMgc3VwcG9ydHNCbG9jayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4gfCAndW5rbm93bic+KCd1bmtub3duJyk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSB4bXBwQ2hhdEFkYXB0ZXI6IFhtcHBDaGF0QWRhcHRlcixcclxuICAgICAgICBwcml2YXRlIHNlcnZpY2VEaXNjb3ZlcnlQbHVnaW46IFNlcnZpY2VEaXNjb3ZlcnlQbHVnaW4sXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uQmVmb3JlT25saW5lKCkge1xyXG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQmxvY2sgPSBhd2FpdCB0aGlzLmRldGVybWluZVN1cHBvcnRGb3JCbG9jaygpO1xyXG4gICAgICAgIHRoaXMuc3VwcG9ydHNCbG9jayQubmV4dChzdXBwb3J0c0Jsb2NrKTtcclxuICAgICAgICBpZiAoc3VwcG9ydHNCbG9jaykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlcXVlc3RCbG9ja2VkSmlkcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGRldGVybWluZVN1cHBvcnRGb3JCbG9jaygpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXJ2aWNlRGlzY292ZXJ5UGx1Z2luLnN1cHBvcnRzRmVhdHVyZShcclxuICAgICAgICAgICAgICAgIHRoaXMueG1wcENoYXRBZGFwdGVyLmNoYXRDb25uZWN0aW9uU2VydmljZS51c2VySmlkLmRvbWFpbixcclxuICAgICAgICAgICAgICAgICd1cm46eG1wcDpibG9ja2luZycpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbk9mZmxpbmUoKSB7XHJcbiAgICAgICAgdGhpcy5zdXBwb3J0c0Jsb2NrJC5uZXh0KCd1bmtub3duJyk7XHJcbiAgICAgICAgdGhpcy54bXBwQ2hhdEFkYXB0ZXIuYmxvY2tlZENvbnRhY3RJZHMkLm5leHQobmV3IFNldDxzdHJpbmc+KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGJsb2NrSmlkKGppZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMueG1wcENoYXRBZGFwdGVyLmNoYXRDb25uZWN0aW9uU2VydmljZS5zZW5kSXEoXHJcbiAgICAgICAgICAgIHhtbCgnaXEnLCB7dHlwZTogJ3NldCd9LFxyXG4gICAgICAgICAgICAgICAgeG1sKCdibG9jaycsIHt4bWxuczogJ3Vybjp4bXBwOmJsb2NraW5nJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgeG1sKCdpdGVtJywge2ppZH0pKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHVuYmxvY2tKaWQoamlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy54bXBwQ2hhdEFkYXB0ZXIuY2hhdENvbm5lY3Rpb25TZXJ2aWNlLnNlbmRJcShcclxuICAgICAgICAgICAgeG1sKCdpcScsIHt0eXBlOiAnc2V0J30sXHJcbiAgICAgICAgICAgICAgICB4bWwoJ3VuYmxvY2snLCB7eG1sbnM6ICd1cm46eG1wcDpibG9ja2luZyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIHhtbCgnaXRlbScsIHtqaWR9KSkpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIHJlcXVlc3RCbG9ja2VkSmlkcygpIHtcclxuICAgICAgICBjb25zdCBibG9ja0xpc3RSZXNwb25zZSA9IGF3YWl0IHRoaXMueG1wcENoYXRBZGFwdGVyLmNoYXRDb25uZWN0aW9uU2VydmljZS5zZW5kSXEoXHJcbiAgICAgICAgICAgIHhtbCgnaXEnLCB7dHlwZTogJ2dldCd9LFxyXG4gICAgICAgICAgICAgICAgeG1sKCdibG9ja2xpc3QnLCB7eG1sbnM6ICd1cm46eG1wcDpibG9ja2luZyd9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgYmxvY2tlZEppZHMgPSBibG9ja0xpc3RSZXNwb25zZVxyXG4gICAgICAgICAgICAuZ2V0Q2hpbGQoJ2Jsb2NrbGlzdCcpXHJcbiAgICAgICAgICAgIC5nZXRDaGlsZHJlbignaXRlbScpXHJcbiAgICAgICAgICAgIC5tYXAoZSA9PiBlLmF0dHJzLmppZCk7XHJcblxyXG4gICAgICAgIHRoaXMueG1wcENoYXRBZGFwdGVyLmJsb2NrZWRDb250YWN0SWRzJC5uZXh0KG5ldyBTZXQ8c3RyaW5nPihibG9ja2VkSmlkcykpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVN0YW56YShzdGFuemE6IFN0YW56YSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHtmcm9tfSA9IHN0YW56YS5hdHRycztcclxuICAgICAgICBpZiAoZnJvbSAmJiBmcm9tID09PSB0aGlzLnhtcHBDaGF0QWRhcHRlci5jaGF0Q29ubmVjdGlvblNlcnZpY2UudXNlckppZD8uYmFyZSgpLnRvU3RyaW5nKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgYmxvY2tQdXNoID0gc3RhbnphLmdldENoaWxkKCdibG9jaycsICd1cm46eG1wcDpibG9ja2luZycpO1xyXG4gICAgICAgICAgICBjb25zdCB1bmJsb2NrUHVzaCA9IHN0YW56YS5nZXRDaGlsZCgndW5ibG9jaycsICd1cm46eG1wcDpibG9ja2luZycpO1xyXG4gICAgICAgICAgICBjb25zdCBibG9ja0xpc3QgPSB0aGlzLnhtcHBDaGF0QWRhcHRlci5ibG9ja2VkQ29udGFjdElkcyQuZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgaWYgKGJsb2NrUHVzaCkge1xyXG4gICAgICAgICAgICAgICAgYmxvY2tQdXNoLmdldENoaWxkcmVuKCdpdGVtJylcclxuICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZS5hdHRycy5qaWQgYXMgc3RyaW5nKVxyXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGppZCA9PiBibG9ja0xpc3QuYWRkKGppZCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy54bXBwQ2hhdEFkYXB0ZXIuYmxvY2tlZENvbnRhY3RJZHMkLm5leHQoYmxvY2tMaXN0KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHVuYmxvY2tQdXNoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqaWRzVG9VbmJsb2NrID0gdW5ibG9ja1B1c2guZ2V0Q2hpbGRyZW4oJ2l0ZW0nKS5tYXAoZSA9PiBlLmF0dHJzLmppZCBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGppZHNUb1VuYmxvY2subGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdW5ibG9jayBldmVyeW9uZVxyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrTGlzdC5jbGVhcigpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB1bmJsb2NrIGluZGl2aWR1YWxseVxyXG4gICAgICAgICAgICAgICAgICAgIGppZHNUb1VuYmxvY2suZm9yRWFjaChqaWQgPT4gYmxvY2tMaXN0LmRlbGV0ZShqaWQpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMueG1wcENoYXRBZGFwdGVyLmJsb2NrZWRDb250YWN0SWRzJC5uZXh0KGJsb2NrTGlzdCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==