UNPKG

@hsaadawy/ngx-chat

Version:
27 lines 4.74 kB
import { xml } from '@xmpp/client'; import { id } from '../../../../core/id-generator'; import { AbstractXmppPlugin } from './abstract-xmpp-plugin'; /** * https://xmpp.org/extensions/xep-0359.html */ export class MessageUuidPlugin extends AbstractXmppPlugin { static extractIdFromStanza(messageStanza) { const originIdElement = messageStanza.getChild('origin-id'); const stanzaIdElement = messageStanza.getChild('stanza-id'); return messageStanza.attrs.id || (originIdElement && originIdElement.attrs.id) || (stanzaIdElement && stanzaIdElement.attrs.id); } beforeSendMessage(messageStanza, message) { const generatedId = id(); messageStanza.children.push(xml('origin-id', { xmlns: 'urn:xmpp:sid:0', id: generatedId })); if (message) { message.id = generatedId; } } afterSendMessage(message, messageStanza) { message.id = MessageUuidPlugin.extractIdFromStanza(messageStanza); } afterReceiveMessage(message, messageStanza) { message.id = MessageUuidPlugin.extractIdFromStanza(messageStanza); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS11dWlkLnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BhenpuZXR3b3JrL25neC1jaGF0L3NyYy9saWIvc2VydmljZXMvYWRhcHRlcnMveG1wcC9wbHVnaW5zL21lc3NhZ2UtdXVpZC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsa0JBQWtCO0lBRTlDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxhQUFzQjtRQUNwRCxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELGlCQUFpQixDQUFDLGFBQXNCLEVBQUUsT0FBZ0I7UUFDdEQsTUFBTSxXQUFXLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDekIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFGLElBQUksT0FBTyxFQUFFO1lBQ1QsT0FBTyxDQUFDLEVBQUUsR0FBRyxXQUFXLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZ0IsRUFBRSxhQUFzQjtRQUNyRCxPQUFPLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFnQixFQUFFLGFBQW9DO1FBQ3RFLE9BQU8sQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeG1sIH0gZnJvbSAnQHhtcHAvY2xpZW50JztcclxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gJ2x0eCc7XHJcbmltcG9ydCB7IGlkIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9pZC1nZW5lcmF0b3InO1xyXG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9tZXNzYWdlJztcclxuaW1wb3J0IHsgTWVzc2FnZVdpdGhCb2R5U3RhbnphIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdGFuemEnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdFhtcHBQbHVnaW4gfSBmcm9tICcuL2Fic3RyYWN0LXhtcHAtcGx1Z2luJztcclxuXHJcbi8qKlxyXG4gKiBodHRwczovL3htcHAub3JnL2V4dGVuc2lvbnMveGVwLTAzNTkuaHRtbFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VVdWlkUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RYbXBwUGx1Z2luIHtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGV4dHJhY3RJZEZyb21TdGFuemEobWVzc2FnZVN0YW56YTogRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbklkRWxlbWVudCA9IG1lc3NhZ2VTdGFuemEuZ2V0Q2hpbGQoJ29yaWdpbi1pZCcpO1xyXG4gICAgICAgIGNvbnN0IHN0YW56YUlkRWxlbWVudCA9IG1lc3NhZ2VTdGFuemEuZ2V0Q2hpbGQoJ3N0YW56YS1pZCcpO1xyXG4gICAgICAgIHJldHVybiBtZXNzYWdlU3RhbnphLmF0dHJzLmlkIHx8IChvcmlnaW5JZEVsZW1lbnQgJiYgb3JpZ2luSWRFbGVtZW50LmF0dHJzLmlkKSB8fCAoc3RhbnphSWRFbGVtZW50ICYmIHN0YW56YUlkRWxlbWVudC5hdHRycy5pZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYmVmb3JlU2VuZE1lc3NhZ2UobWVzc2FnZVN0YW56YTogRWxlbWVudCwgbWVzc2FnZTogTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGdlbmVyYXRlZElkID0gaWQoKTtcclxuICAgICAgICBtZXNzYWdlU3RhbnphLmNoaWxkcmVuLnB1c2goeG1sKCdvcmlnaW4taWQnLCB7eG1sbnM6ICd1cm46eG1wcDpzaWQ6MCcsIGlkOiBnZW5lcmF0ZWRJZH0pKTtcclxuICAgICAgICBpZiAobWVzc2FnZSkge1xyXG4gICAgICAgICAgICBtZXNzYWdlLmlkID0gZ2VuZXJhdGVkSWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFmdGVyU2VuZE1lc3NhZ2UobWVzc2FnZTogTWVzc2FnZSwgbWVzc2FnZVN0YW56YTogRWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIG1lc3NhZ2UuaWQgPSBNZXNzYWdlVXVpZFBsdWdpbi5leHRyYWN0SWRGcm9tU3RhbnphKG1lc3NhZ2VTdGFuemEpO1xyXG4gICAgfVxyXG5cclxuICAgIGFmdGVyUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZTogTWVzc2FnZSwgbWVzc2FnZVN0YW56YTogTWVzc2FnZVdpdGhCb2R5U3RhbnphKSB7XHJcbiAgICAgICAgbWVzc2FnZS5pZCA9IE1lc3NhZ2VVdWlkUGx1Z2luLmV4dHJhY3RJZEZyb21TdGFuemEobWVzc2FnZVN0YW56YSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==