@banta/sdk 4.6.27 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/{esm2015/banta-sdk.js → esm2020/banta-sdk.mjs} +0 -0
- package/{esm2015/lib/attachment-scraper.js → esm2020/lib/attachment-scraper.mjs} +0 -0
- package/esm2020/lib/banta/banta.component.mjs +204 -0
- package/esm2020/lib/banta-logo.component.mjs +11 -0
- package/esm2020/lib/banta-sdk.module.mjs +144 -0
- package/esm2020/lib/chat/banta-chat/banta-chat.component.mjs +185 -0
- package/esm2020/lib/chat/chat-message/chat-message.component.mjs +62 -0
- package/esm2020/lib/chat/chat-view/chat-view.component.mjs +170 -0
- package/esm2020/lib/chat/chat.module.mjs +51 -0
- package/{esm2015/lib/chat/index.js → esm2020/lib/chat/index.mjs} +0 -0
- package/esm2020/lib/chat/live-chat-message.component.mjs +80 -0
- package/{esm2015/lib/chat-backend-base.js → esm2020/lib/chat-backend-base.mjs} +0 -0
- package/esm2020/lib/chat-backend.mjs +83 -0
- package/{esm2015/lib/chat-source-base.js → esm2020/lib/chat-source-base.mjs} +0 -0
- package/esm2020/lib/chat-source.mjs +169 -0
- package/esm2020/lib/comments/attachment-button/attachment-button.component.mjs +69 -0
- package/esm2020/lib/comments/attachment-scraper.directive.mjs +107 -0
- package/esm2020/lib/comments/banta-comments/banta-comments.component.mjs +666 -0
- package/esm2020/lib/comments/comment/comment.component.mjs +217 -0
- package/esm2020/lib/comments/comment-field/comment-field.component.mjs +377 -0
- package/esm2020/lib/comments/comment-sort/comment-sort.component.mjs +37 -0
- package/esm2020/lib/comments/comment-view/comment-view.component.mjs +379 -0
- package/esm2020/lib/comments/comments.module.mjs +111 -0
- package/{esm2015/lib/comments/index.js → esm2020/lib/comments/index.mjs} +0 -0
- package/esm2020/lib/comments/live-comment.component.mjs +80 -0
- package/esm2020/lib/comments/reply-send-options.directive.mjs +13 -0
- package/esm2020/lib/common/attachment/attachment.component.mjs +113 -0
- package/esm2020/lib/common/attachments/attachments.component.mjs +72 -0
- package/esm2020/lib/common/common.module.mjs +59 -0
- package/{esm2015/lib/common/index.js → esm2020/lib/common/index.mjs} +0 -0
- package/{esm2015/lib/common/lazy-connection.js → esm2020/lib/common/lazy-connection.mjs} +0 -0
- package/esm2020/lib/common/lightbox/lightbox.component.mjs +31 -0
- package/esm2020/lib/common/markdown-to-html.pipe.mjs +76 -0
- package/esm2020/lib/common/mention-linker.pipe.mjs +35 -0
- package/esm2020/lib/common/timestamp.component.mjs +113 -0
- package/esm2020/lib/common/trust-resource-url.pipe.mjs +22 -0
- package/esm2020/lib/emoji/emoji-selector-button.component.mjs +113 -0
- package/esm2020/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.mjs +88 -0
- package/esm2020/lib/emoji/emoji.module.mjs +55 -0
- package/{esm2015/lib/emoji/emojis.js → esm2020/lib/emoji/emojis.mjs} +0 -0
- package/{esm2015/lib/emoji/index.js → esm2020/lib/emoji/index.mjs} +0 -0
- package/esm2020/lib/giphy-attachments.mjs +16 -0
- package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
- package/esm2020/lib/live-message.component.mjs +96 -0
- package/{esm2015/lib/message-menu-item.js → esm2020/lib/message-menu-item.mjs} +0 -0
- package/{esm2015/lib/sdk-options.js → esm2020/lib/sdk-options.mjs} +0 -0
- package/esm2020/lib/tweet-attachments.mjs +13 -0
- package/esm2020/lib/url-attachments.mjs +42 -0
- package/esm2020/lib/youtube-attachments.mjs +22 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
- package/fesm2015/{banta-sdk.js → banta-sdk.mjs} +2559 -2239
- package/fesm2015/banta-sdk.mjs.map +1 -0
- package/fesm2020/banta-sdk.mjs +10490 -0
- package/fesm2020/banta-sdk.mjs.map +1 -0
- package/{banta-sdk.d.ts → index.d.ts} +1 -0
- package/lib/banta/banta.component.d.ts +3 -0
- package/lib/banta-logo.component.d.ts +3 -0
- package/lib/banta-sdk.module.d.ts +24 -0
- package/lib/chat/banta-chat/banta-chat.component.d.ts +3 -0
- package/lib/chat/chat-message/chat-message.component.d.ts +3 -0
- package/lib/chat/chat-view/chat-view.component.d.ts +3 -0
- package/lib/chat/chat.module.d.ts +13 -0
- package/lib/chat/live-chat-message.component.d.ts +3 -0
- package/lib/chat-backend.d.ts +3 -0
- package/lib/comments/attachment-button/attachment-button.component.d.ts +3 -0
- package/lib/comments/attachment-scraper.directive.d.ts +3 -0
- package/lib/comments/banta-comments/banta-comments.component.d.ts +3 -0
- package/lib/comments/comment/comment.component.d.ts +3 -0
- package/lib/comments/comment-field/comment-field.component.d.ts +3 -0
- package/lib/comments/comment-sort/comment-sort.component.d.ts +3 -0
- package/lib/comments/comment-view/comment-view.component.d.ts +3 -0
- package/lib/comments/comments.module.d.ts +28 -0
- package/lib/comments/live-comment.component.d.ts +3 -0
- package/lib/comments/reply-send-options.directive.d.ts +3 -0
- package/lib/common/attachment/attachment.component.d.ts +3 -0
- package/lib/common/attachments/attachments.component.d.ts +3 -0
- package/lib/common/common.module.d.ts +15 -0
- package/lib/common/lightbox/lightbox.component.d.ts +3 -0
- package/lib/common/markdown-to-html.pipe.d.ts +3 -0
- package/lib/common/mention-linker.pipe.d.ts +3 -0
- package/lib/common/timestamp.component.d.ts +3 -0
- package/lib/common/trust-resource-url.pipe.d.ts +3 -0
- package/lib/emoji/emoji-selector-button.component.d.ts +3 -0
- package/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.d.ts +3 -0
- package/lib/emoji/emoji.module.d.ts +14 -0
- package/lib/live-message.component.d.ts +3 -0
- package/lib/url-attachments.d.ts +3 -0
- package/package.json +22 -10
- package/banta-sdk.metadata.json +0 -1
- package/bundles/banta-sdk.umd.js +0 -11913
- package/bundles/banta-sdk.umd.js.map +0 -1
- package/esm2015/lib/banta/banta.component.js +0 -200
- package/esm2015/lib/banta-logo.component.js +0 -20
- package/esm2015/lib/banta-sdk.module.js +0 -98
- package/esm2015/lib/chat/banta-chat/banta-chat.component.js +0 -174
- package/esm2015/lib/chat/chat-message/chat-message.component.js +0 -56
- package/esm2015/lib/chat/chat-view/chat-view.component.js +0 -167
- package/esm2015/lib/chat/chat.module.js +0 -32
- package/esm2015/lib/chat/live-chat-message.component.js +0 -71
- package/esm2015/lib/chat-backend.js +0 -92
- package/esm2015/lib/chat-source.js +0 -199
- package/esm2015/lib/comments/attachment-button/attachment-button.component.js +0 -70
- package/esm2015/lib/comments/attachment-scraper.directive.js +0 -109
- package/esm2015/lib/comments/banta-comments/banta-comments.component.js +0 -678
- package/esm2015/lib/comments/comment/comment.component.js +0 -186
- package/esm2015/lib/comments/comment-field/comment-field.component.js +0 -350
- package/esm2015/lib/comments/comment-sort/comment-sort.component.js +0 -34
- package/esm2015/lib/comments/comment-view/comment-view.component.js +0 -364
- package/esm2015/lib/comments/comments.module.js +0 -62
- package/esm2015/lib/comments/live-comment.component.js +0 -71
- package/esm2015/lib/comments/reply-send-options.directive.js +0 -9
- package/esm2015/lib/common/attachment/attachment.component.js +0 -105
- package/esm2015/lib/common/attachments/attachments.component.js +0 -65
- package/esm2015/lib/common/common.module.js +0 -36
- package/esm2015/lib/common/lightbox/lightbox.component.js +0 -30
- package/esm2015/lib/common/markdown-to-html.pipe.js +0 -75
- package/esm2015/lib/common/mention-linker.pipe.js +0 -31
- package/esm2015/lib/common/timestamp.component.js +0 -106
- package/esm2015/lib/common/trust-resource-url.pipe.js +0 -21
- package/esm2015/lib/emoji/emoji-selector-button.component.js +0 -107
- package/esm2015/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.js +0 -86
- package/esm2015/lib/emoji/emoji.module.js +0 -34
- package/esm2015/lib/giphy-attachments.js +0 -20
- package/esm2015/lib/live-message.component.js +0 -74
- package/esm2015/lib/tweet-attachments.js +0 -16
- package/esm2015/lib/url-attachments.js +0 -46
- package/esm2015/lib/youtube-attachments.js +0 -25
- package/fesm2015/banta-sdk.js.map +0 -1
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output } from "@angular/core";
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
export class ChatMessageComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this._selected = new Subject();
|
|
6
|
-
this._reported = new Subject();
|
|
7
|
-
this._upvoted = new Subject();
|
|
8
|
-
this._userSelected = new Subject();
|
|
9
|
-
}
|
|
10
|
-
get userSelected() {
|
|
11
|
-
return this._userSelected;
|
|
12
|
-
}
|
|
13
|
-
get selected() {
|
|
14
|
-
return this._selected;
|
|
15
|
-
}
|
|
16
|
-
get reported() {
|
|
17
|
-
return this._reported;
|
|
18
|
-
}
|
|
19
|
-
get upvoted() {
|
|
20
|
-
return this._upvoted;
|
|
21
|
-
}
|
|
22
|
-
avatarForUser(user) {
|
|
23
|
-
if (user && user.avatarUrl) {
|
|
24
|
-
let url = user.avatarUrl;
|
|
25
|
-
return `url(${url})`;
|
|
26
|
-
}
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
upvote() {
|
|
30
|
-
this._upvoted.next();
|
|
31
|
-
}
|
|
32
|
-
report() {
|
|
33
|
-
this._reported.next();
|
|
34
|
-
}
|
|
35
|
-
select() {
|
|
36
|
-
this._selected.next();
|
|
37
|
-
}
|
|
38
|
-
selectUser() {
|
|
39
|
-
this._userSelected.next();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
ChatMessageComponent.decorators = [
|
|
43
|
-
{ type: Component, args: [{
|
|
44
|
-
selector: 'banta-chat-message',
|
|
45
|
-
template: "<div class=\"message-content\">\r\n <div class=\"user\" (click)=\"selectUser()\">\r\n <div class=\"avatar\" [style.background-image]=\"avatarForUser(message.user)\"></div>\r\n <label>{{message.user.username}}</label>\r\n </div>\r\n <div class=\"content\">\r\n <div (click)=\"select()\">\r\n {{message.message}}\r\n </div>\r\n <div class=\"status\">\r\n <div class=\"count-indicator\" *ngIf=\"message.likes > 0\">\r\n <mat-icon [inline]=\"true\">star</mat-icon> {{message.likes}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"actions\">\r\n <button mat-icon-button matTooltip=\"Upvote\" matTooltipPosition=\"below\" (click)=\"upvote()\">\r\n <mat-icon [inline]=\"true\">thumb_up</mat-icon>\r\n </button>\r\n <button mat-icon-button matTooltip=\"Report\" matTooltipPosition=\"below\" (click)=\"report()\">\r\n <mat-icon [inline]=\"true\">report</mat-icon>\r\n </button>\r\n</div>",
|
|
46
|
-
styles: [":host{display:flex;flex-direction:row;align-items:center;padding:0 1em;background-color:#fff;color:#000;transition:.4s background-color ease-out}:host .message-content .content{color:#111}:host:hover{background-color:#ddd}:host.highlight{background:#00121b}:host.highlight:hover{background:#01324d}:host:nth-child(2n){background-color:#eee}:host:nth-child(2n):hover{background:#ddd}:host:nth-child(2n) .message-content .content{color:#222}:host:nth-child(2n).highlight{background:#001a2a}:host:nth-child(2n).highlight:hover{background:#002b44}:host .message-content{display:flex;flex-direction:row;flex-grow:1;align-items:center}:host .message-content .content{display:flex;flex-direction:row;padding:5px 0}:host .message-content .content .status{display:flex;flex-direction:row;align-items:center;margin-left:1em}:host .message-content .content .status mat-icon{margin-left:.5em}:host .user{color:#999;font-weight:normal;text-align:right;margin-right:.25em;flex-shrink:0;display:flex;align-items:center}:host .user .avatar{background-position:center;background-size:cover;background-color:#333;border-radius:100%;flex-shrink:0;flex-grow:0;margin-right:1em;width:2em;height:2em}:host .user:after{content:\":\";margin-right:1em}:host .content{flex-grow:1}:host .actions{flex-shrink:0;white-space:nowrap;opacity:0;transition:.4s opacity ease-out}:host:hover .actions{opacity:1}.count-indicator{white-space:nowrap}:host-context(.mat-dark-theme){background-color:#000;color:#fff}:host-context(.mat-dark-theme) .message-content .content{color:#ddd}:host-context(.mat-dark-theme):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n).highlight{background:#001a2a}:host-context(.mat-dark-theme):nth-child(2n).highlight:hover{background:#002b44}:host-context(.mat-dark-theme):nth-child(2n):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n){background-color:#080808}:host-context(.mat-dark-theme):nth-child(2n) .message-content .content{color:#eee}label{margin:0}\n"]
|
|
47
|
-
},] }
|
|
48
|
-
];
|
|
49
|
-
ChatMessageComponent.propDecorators = {
|
|
50
|
-
message: [{ type: Input }],
|
|
51
|
-
userSelected: [{ type: Output }],
|
|
52
|
-
selected: [{ type: Output }],
|
|
53
|
-
reported: [{ type: Output }],
|
|
54
|
-
upvoted: [{ type: Output }]
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NoYXQvY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPL0IsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1ZLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQy9CLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQWtEaEQsQ0FBQztJQTdDRyxJQUNJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFXO1FBQ3JCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6QixPQUFPLE9BQU8sR0FBRyxHQUFHLENBQUM7U0FDeEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7O1lBekRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixzZ0NBQTRDOzthQUUvQzs7O3NCQU9JLEtBQUs7MkJBR0wsTUFBTTt1QkFLTixNQUFNO3VCQUtOLE1BQU07c0JBS04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFVzZXIsIENoYXRNZXNzYWdlIH0gZnJvbSAnQGJhbnRhL2NvbW1vbic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdiYW50YS1jaGF0LW1lc3NhZ2UnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtbWVzc2FnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jaGF0LW1lc3NhZ2UuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhdE1lc3NhZ2VDb21wb25lbnQge1xyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfcmVwb3J0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgcHJpdmF0ZSBfdXB2b3RlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIF91c2VyU2VsZWN0ZWQgPSBuZXcgU3ViamVjdDxVc2VyPigpO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBtZXNzYWdlIDogQ2hhdE1lc3NhZ2U7XHJcbiAgICBcclxuICAgIEBPdXRwdXQoKSBcclxuICAgIGdldCB1c2VyU2VsZWN0ZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJTZWxlY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIGdldCBzZWxlY3RlZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgcmVwb3J0ZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcG9ydGVkO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgZ2V0IHVwdm90ZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vwdm90ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXZhdGFyRm9yVXNlcih1c2VyIDogVXNlcikge1xyXG4gICAgICAgIGlmICh1c2VyICYmIHVzZXIuYXZhdGFyVXJsKSB7XHJcbiAgICAgICAgICAgIGxldCB1cmwgPSB1c2VyLmF2YXRhclVybDtcclxuICAgICAgICAgICAgcmV0dXJuIGB1cmwoJHt1cmx9KWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdXB2b3RlKCkge1xyXG4gICAgICAgIHRoaXMuX3Vwdm90ZWQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcG9ydCgpIHtcclxuICAgICAgICB0aGlzLl9yZXBvcnRlZC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0KCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLm5leHQoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc2VsZWN0VXNlcigpIHtcclxuICAgICAgICB0aGlzLl91c2VyU2VsZWN0ZWQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxufSJdfQ==
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, Input, ViewChild, ElementRef, Output } from "@angular/core";
|
|
3
|
-
import { Subject, Subscription } from 'rxjs';
|
|
4
|
-
import { ChatBackendBase } from "../../chat-backend-base";
|
|
5
|
-
export class ChatViewComponent {
|
|
6
|
-
constructor(backend, elementRef) {
|
|
7
|
-
this.backend = backend;
|
|
8
|
-
this.elementRef = elementRef;
|
|
9
|
-
this._sourceSubs = new Subscription();
|
|
10
|
-
this._selected = new Subject();
|
|
11
|
-
this._selected$ = this._selected.asObservable();
|
|
12
|
-
this._reported = new Subject();
|
|
13
|
-
this._reported$ = this._reported.asObservable();
|
|
14
|
-
this._upvoted = new Subject();
|
|
15
|
-
this._upvoted$ = this._upvoted.asObservable();
|
|
16
|
-
this._userSelected = new Subject();
|
|
17
|
-
this._userSelected$ = this._userSelected.asObservable();
|
|
18
|
-
this._received = new Subject();
|
|
19
|
-
this._received$ = this._received.asObservable();
|
|
20
|
-
this.messages = [];
|
|
21
|
-
this.maxMessages = 200;
|
|
22
|
-
this.emptyLabel = 'Be the first to chat';
|
|
23
|
-
}
|
|
24
|
-
get source() {
|
|
25
|
-
return this._source;
|
|
26
|
-
}
|
|
27
|
-
get selected() { return this._selected$; }
|
|
28
|
-
get userSelected() { return this._userSelected$; }
|
|
29
|
-
get reported() { return this._reported$; }
|
|
30
|
-
get upvoted() { return this._upvoted$; }
|
|
31
|
-
get received() { return this._received$; }
|
|
32
|
-
set source(value) {
|
|
33
|
-
if (this._sourceSubs) {
|
|
34
|
-
this._sourceSubs.unsubscribe();
|
|
35
|
-
this._sourceSubs = null;
|
|
36
|
-
}
|
|
37
|
-
this._source = value;
|
|
38
|
-
this.messages = [];
|
|
39
|
-
if (value) {
|
|
40
|
-
this._sourceSubs = new Subscription();
|
|
41
|
-
this.messages = value.messages.slice();
|
|
42
|
-
console.log(`Source set:`);
|
|
43
|
-
console.dir(value);
|
|
44
|
-
console.log(`Messages loaded:`);
|
|
45
|
-
console.dir(this.messages);
|
|
46
|
-
this._sourceSubs.add(this._source.messageReceived.subscribe(msg => this.messageReceived(msg)));
|
|
47
|
-
this._sourceSubs.add(this._source.messageSent.subscribe(msg => this.messageSent(msg)));
|
|
48
|
-
this._sourceSubs.add(this.backend.userChanged
|
|
49
|
-
.subscribe(user => this.currentUser = user));
|
|
50
|
-
this.getInitialMessages();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
getInitialMessages() {
|
|
54
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
let messages = (yield this._source.getExistingMessages());
|
|
56
|
-
messages.forEach(m => { var _a; return (_a = m.transientState) !== null && _a !== void 0 ? _a : (m.transientState = {}); });
|
|
57
|
-
this.messages = messages.slice().reverse();
|
|
58
|
-
this.sortMessages();
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
sortMessages() {
|
|
62
|
-
if (!this.source)
|
|
63
|
-
return;
|
|
64
|
-
let sorter;
|
|
65
|
-
sorter = (a, b) => (a.sentAt - b.sentAt);
|
|
66
|
-
this.messages.sort(sorter);
|
|
67
|
-
}
|
|
68
|
-
addMessage(message) {
|
|
69
|
-
if (this.messages.length > this.maxMessages + 1) {
|
|
70
|
-
while (this.messages.length > this.maxMessages)
|
|
71
|
-
this.messages.shift();
|
|
72
|
-
}
|
|
73
|
-
this.messages.push(message);
|
|
74
|
-
this.sortMessages();
|
|
75
|
-
}
|
|
76
|
-
messageReceived(message) {
|
|
77
|
-
this.addMessage(message);
|
|
78
|
-
this._received.next(message);
|
|
79
|
-
if (this.isScrolledToLatest())
|
|
80
|
-
setTimeout(() => this.scrollToLatest());
|
|
81
|
-
}
|
|
82
|
-
isScrolledToLatest() {
|
|
83
|
-
if (!this.messageContainer)
|
|
84
|
-
return false;
|
|
85
|
-
let el = this.messageContainer.nativeElement;
|
|
86
|
-
let currentScroll = el.scrollTop;
|
|
87
|
-
let currentTotal = el.scrollHeight - el.offsetHeight;
|
|
88
|
-
return currentScroll > currentTotal - 10;
|
|
89
|
-
}
|
|
90
|
-
messageSent(message) {
|
|
91
|
-
this.addMessage(message);
|
|
92
|
-
if (!this.messageContainer)
|
|
93
|
-
return;
|
|
94
|
-
setTimeout(() => this.scrollToLatest());
|
|
95
|
-
}
|
|
96
|
-
scrollToLatest() {
|
|
97
|
-
if (!this.messageContainer)
|
|
98
|
-
return;
|
|
99
|
-
let el = this.messageContainer.nativeElement;
|
|
100
|
-
el.scrollTop = el.scrollHeight;
|
|
101
|
-
}
|
|
102
|
-
jumpTo(message) {
|
|
103
|
-
let element = this.elementRef.nativeElement;
|
|
104
|
-
let messageElement = element.querySelector(`banta-chat-message[data-id="${message.id}"]`);
|
|
105
|
-
if (!messageElement) {
|
|
106
|
-
alert(`could not find message ${message.id}`);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
messageElement.scrollIntoView({ behavior: 'smooth' });
|
|
110
|
-
this.flashMessage(message);
|
|
111
|
-
}
|
|
112
|
-
flashMessage(message) {
|
|
113
|
-
if (!message)
|
|
114
|
-
return;
|
|
115
|
-
this.flashedMessageId = message.id;
|
|
116
|
-
//setTimeout(() => this.flashedMessageId = null, 250);
|
|
117
|
-
}
|
|
118
|
-
mentionsMe(message) {
|
|
119
|
-
if (!this.currentUser)
|
|
120
|
-
return false;
|
|
121
|
-
if (message.message.includes(`@${this.currentUser.username}`))
|
|
122
|
-
return true;
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
upvoteMessage(message) {
|
|
126
|
-
this._upvoted.next(message);
|
|
127
|
-
}
|
|
128
|
-
reportMessage(message) {
|
|
129
|
-
this._reported.next(message);
|
|
130
|
-
}
|
|
131
|
-
selectMessage(message) {
|
|
132
|
-
this._selected.next(message);
|
|
133
|
-
}
|
|
134
|
-
selectMessageUser(message) {
|
|
135
|
-
this._userSelected.next(message);
|
|
136
|
-
}
|
|
137
|
-
avatarForUser(user) {
|
|
138
|
-
if (user && user.avatarUrl) {
|
|
139
|
-
let url = user.avatarUrl;
|
|
140
|
-
return `url(${url})`;
|
|
141
|
-
}
|
|
142
|
-
return null;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
ChatViewComponent.decorators = [
|
|
146
|
-
{ type: Component, args: [{
|
|
147
|
-
selector: 'banta-chat-view',
|
|
148
|
-
template: "<div class=\"message-container\" #messageContainer>\r\n <ng-content select=\"[data-before]\"></ng-content>\r\n \r\n <div class=\"empty\" *ngIf=\"messages.length === 0\">\r\n {{emptyLabel}}\r\n </div>\r\n \r\n <ng-container *ngFor=\"let message of messages\">\r\n <banta-chat-message\r\n *ngIf=\"!message.hidden\"\r\n [message]=\"message\"\r\n [class.highlight]=\"mentionsMe(message)\" \r\n [class.flash]=\"message.id === flashedMessageId\"\r\n (selected)=\"selectMessage(message)\"\r\n (upvoted)=\"upvoteMessage(message)\"\r\n (reported)=\"reportMessage(message)\"\r\n (userSelected)=\"selectMessageUser(message)\"\r\n [attr.data-id]=\"message.id\"\r\n >\r\n </banta-chat-message>\r\n </ng-container>\r\n <ng-content select=\":not([data-before])\"></ng-content>\r\n</div>",
|
|
149
|
-
styles: [":host{display:flex;flex-direction:column;flex-grow:1}.message-container{flex-grow:1;overflow-y:auto;overflow-x:hidden;height:10em;color:#000;background:white;padding:.5em 1em .5em .5em}.message-container.no-scroll{height:auto;overflow-y:visible}:host-context(.mat-dark-theme) .message-container{color:#fff;background:black}banta-chat-message.flash{animation:flash;animation-duration:2.5s;animation-iteration-count:1}@keyframes flash{0%{transform:scale(1);background:#425700}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}to{transform:scale(1)}}.empty{text-align:center;margin:2em;color:#888;font-size:150%}\n"]
|
|
150
|
-
},] }
|
|
151
|
-
];
|
|
152
|
-
ChatViewComponent.ctorParameters = () => [
|
|
153
|
-
{ type: ChatBackendBase },
|
|
154
|
-
{ type: ElementRef }
|
|
155
|
-
];
|
|
156
|
-
ChatViewComponent.propDecorators = {
|
|
157
|
-
source: [{ type: Input }],
|
|
158
|
-
selected: [{ type: Output }],
|
|
159
|
-
userSelected: [{ type: Output }],
|
|
160
|
-
reported: [{ type: Output }],
|
|
161
|
-
upvoted: [{ type: Output }],
|
|
162
|
-
received: [{ type: Output }],
|
|
163
|
-
messageContainer: [{ type: ViewChild, args: ['messageContainer',] }],
|
|
164
|
-
maxMessages: [{ type: Input }],
|
|
165
|
-
emptyLabel: [{ type: Input }]
|
|
166
|
-
};
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Nkay9zcmMvbGliL2NoYXQvY2hhdC12aWV3L2NoYXQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVExRCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFlBQ1ksT0FBd0IsRUFDeEIsVUFBb0M7UUFEcEMsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7UUFLeEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUWpDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBQ3ZDLGVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBZSxDQUFDO1FBQ3RDLGNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUMzQyxtQkFBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDdkMsZUFBVSxHQUFHLElBQUks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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFVzZXIsIENoYXRNZXNzYWdlIH0gZnJvbSAnQGJhbnRhL2NvbW1vbic7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZEJhc2UgfSBmcm9tIFwiLi4vLi4vY2hhdC1iYWNrZW5kLWJhc2VcIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZUJhc2UgfSBmcm9tIFwiLi4vLi4vY2hhdC1zb3VyY2UtYmFzZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2JhbnRhLWNoYXQtdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hhdC12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NoYXQtdmlldy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0Vmlld0NvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGJhY2tlbmQ6IENoYXRCYWNrZW5kQmFzZSxcclxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWYgOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxyXG4gICAgKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NvdXJjZVN1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBwcml2YXRlIF9zb3VyY2UgOiBDaGF0U291cmNlQmFzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHNvdXJjZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NlbGVjdGVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCQgPSB0aGlzLl9zZWxlY3RlZC5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3JlcG9ydGVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9yZXBvcnRlZCQgPSB0aGlzLl9yZXBvcnRlZC5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3Vwdm90ZWQgPSBuZXcgU3ViamVjdDxDaGF0TWVzc2FnZT4oKTtcclxuICAgIHByaXZhdGUgX3Vwdm90ZWQkID0gdGhpcy5fdXB2b3RlZC5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3VzZXJTZWxlY3RlZCA9IG5ldyBTdWJqZWN0PENoYXRNZXNzYWdlPigpO1xyXG4gICAgcHJpdmF0ZSBfdXNlclNlbGVjdGVkJCA9IHRoaXMuX3VzZXJTZWxlY3RlZC5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3JlY2VpdmVkID0gbmV3IFN1YmplY3Q8Q2hhdE1lc3NhZ2U+KCk7XHJcbiAgICBwcml2YXRlIF9yZWNlaXZlZCQgPSB0aGlzLl9yZWNlaXZlZC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBAT3V0cHV0KCkgZ2V0IHNlbGVjdGVkKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0ZWQkOyB9XHJcbiAgICBAT3V0cHV0KCkgZ2V0IHVzZXJTZWxlY3RlZCgpIHsgcmV0dXJuIHRoaXMuX3VzZXJTZWxlY3RlZCQ7IH1cclxuICAgIEBPdXRwdXQoKSBnZXQgcmVwb3J0ZWQoKSB7IHJldHVybiB0aGlzLl9yZXBvcnRlZCQ7IH1cclxuICAgIEBPdXRwdXQoKSBnZXQgdXB2b3RlZCgpIHsgcmV0dXJuIHRoaXMuX3Vwdm90ZWQkOyB9XHJcbiAgICBAT3V0cHV0KCkgZ2V0IHJlY2VpdmVkKCkgeyByZXR1cm4gdGhpcy5fcmVjZWl2ZWQkOyB9XHJcblxyXG4gICAgc2V0IHNvdXJjZSh2YWx1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9zb3VyY2VTdWJzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NvdXJjZVN1YnMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5fc291cmNlU3VicyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zb3VyY2UgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fc291cmNlU3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHZhbHVlLm1lc3NhZ2VzLnNsaWNlKCk7XHJcblxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU291cmNlIHNldDpgKTtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgY29uc29sZS5sb2coYE1lc3NhZ2VzIGxvYWRlZDpgKTtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIodGhpcy5tZXNzYWdlcyk7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5fc291cmNlU3Vicy5hZGQodGhpcy5fc291cmNlLm1lc3NhZ2VSZWNlaXZlZC5zdWJzY3JpYmUobXNnID0+IHRoaXMubWVzc2FnZVJlY2VpdmVkKG1zZykpKTtcclxuICAgICAgICAgICAgdGhpcy5fc291cmNlU3Vicy5hZGQodGhpcy5fc291cmNlLm1lc3NhZ2VTZW50LnN1YnNjcmliZShtc2cgPT4gdGhpcy5tZXNzYWdlU2VudChtc2cpKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9zb3VyY2VTdWJzLmFkZChcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFja2VuZC51c2VyQ2hhbmdlZFxyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodXNlciA9PiB0aGlzLmN1cnJlbnRVc2VyID0gdXNlcilcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SW5pdGlhbE1lc3NhZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZ2V0SW5pdGlhbE1lc3NhZ2VzKCkge1xyXG4gICAgICAgIGxldCBtZXNzYWdlcyA9IChhd2FpdCB0aGlzLl9zb3VyY2UuZ2V0RXhpc3RpbmdNZXNzYWdlcygpKTtcclxuICAgICAgICBtZXNzYWdlcy5mb3JFYWNoKG0gPT4gbS50cmFuc2llbnRTdGF0ZSA/Pz0ge30pO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSBtZXNzYWdlcy5zbGljZSgpLnJldmVyc2UoKTtcclxuICAgICAgICB0aGlzLnNvcnRNZXNzYWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc29ydE1lc3NhZ2VzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zb3VyY2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgc29ydGVyOiAoYTogQ2hhdE1lc3NhZ2UsIGI6IENoYXRNZXNzYWdlKSA9PiBudW1iZXI7XHJcblxyXG4gICAgICAgIHNvcnRlciA9IChhLCBiKSA9PiAoYS5zZW50QXQgLSBiLnNlbnRBdCk7XHJcblxyXG4gICAgICAgIHRoaXMubWVzc2FnZXMuc29ydChzb3J0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lc3NhZ2VzIDogQ2hhdE1lc3NhZ2VbXSA9IFtdO1xyXG4gICAgY3VycmVudFVzZXIgOiBVc2VyO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ21lc3NhZ2VDb250YWluZXInKVxyXG4gICAgbWVzc2FnZUNvbnRhaW5lciA6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAgIEBJbnB1dCgpIG1heE1lc3NhZ2VzIDogbnVtYmVyID0gMjAwO1xyXG4gICAgQElucHV0KCkgZW1wdHlMYWJlbCA9ICdCZSB0aGUgZmlyc3QgdG8gY2hhdCc7XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRNZXNzYWdlKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VzLmxlbmd0aCA+IHRoaXMubWF4TWVzc2FnZXMgKyAxKSB7XHJcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLm1lc3NhZ2VzLmxlbmd0aCA+IHRoaXMubWF4TWVzc2FnZXMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnNoaWZ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5zb3J0TWVzc2FnZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VSZWNlaXZlZChtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLmFkZE1lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5fcmVjZWl2ZWQubmV4dChtZXNzYWdlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNTY3JvbGxlZFRvTGF0ZXN0KCkpXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb0xhdGVzdCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1Njcm9sbGVkVG9MYXRlc3QoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm1lc3NhZ2VDb250YWluZXIpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IGVsID0gdGhpcy5tZXNzYWdlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRTY3JvbGwgPSBlbC5zY3JvbGxUb3A7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRUb3RhbCA9IGVsLnNjcm9sbEhlaWdodCAtIGVsLm9mZnNldEhlaWdodDtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiBjdXJyZW50U2Nyb2xsID4gY3VycmVudFRvdGFsIC0gMTA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VudChtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICB0aGlzLmFkZE1lc3NhZ2UobWVzc2FnZSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCF0aGlzLm1lc3NhZ2VDb250YWluZXIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNjcm9sbFRvTGF0ZXN0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNjcm9sbFRvTGF0ZXN0KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlQ29udGFpbmVyKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGV0IGVsID0gdGhpcy5tZXNzYWdlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGp1bXBUbyhtZXNzYWdlIDogQ2hhdE1lc3NhZ2UpIHtcclxuICAgICAgICBsZXQgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGxldCBtZXNzYWdlRWxlbWVudCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihgYmFudGEtY2hhdC1tZXNzYWdlW2RhdGEtaWQ9XCIke21lc3NhZ2UuaWR9XCJdYClcclxuXHJcbiAgICAgICAgaWYgKCFtZXNzYWdlRWxlbWVudCkge1xyXG4gICAgICAgICAgICBhbGVydChgY291bGQgbm90IGZpbmQgbWVzc2FnZSAke21lc3NhZ2UuaWR9YCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1lc3NhZ2VFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmZsYXNoTWVzc2FnZShtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBmbGFzaE1lc3NhZ2UobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgaWYgKCFtZXNzYWdlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5mbGFzaGVkTWVzc2FnZUlkID0gbWVzc2FnZS5pZDtcclxuICAgICAgICAvL3NldFRpbWVvdXQoKCkgPT4gdGhpcy5mbGFzaGVkTWVzc2FnZUlkID0gbnVsbCwgMjUwKTtcclxuICAgIH1cclxuXHJcbiAgICBmbGFzaGVkTWVzc2FnZUlkIDogc3RyaW5nO1xyXG5cclxuXHJcbiAgICBtZW50aW9uc01lKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50VXNlcilcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlLmluY2x1ZGVzKGBAJHt0aGlzLmN1cnJlbnRVc2VyLnVzZXJuYW1lfWApKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHVwdm90ZU1lc3NhZ2UobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5fdXB2b3RlZC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcG9ydE1lc3NhZ2UobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5fcmVwb3J0ZWQubmV4dChtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RNZXNzYWdlKG1lc3NhZ2UgOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLm5leHQobWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0TWVzc2FnZVVzZXIobWVzc2FnZSA6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlclNlbGVjdGVkLm5leHQobWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXZhdGFyRm9yVXNlcih1c2VyIDogVXNlcikge1xyXG4gICAgICAgIGlmICh1c2VyICYmIHVzZXIuYXZhdGFyVXJsKSB7XHJcbiAgICAgICAgICAgIGxldCB1cmwgPSB1c2VyLmF2YXRhclVybDtcclxuICAgICAgICAgICAgcmV0dXJuIGB1cmwoJHt1cmx9KWA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { NgModule } from "@angular/core";
|
|
2
|
-
import { ChatMessageComponent } from './chat-message/chat-message.component';
|
|
3
|
-
import { ChatViewComponent } from './chat-view/chat-view.component';
|
|
4
|
-
import { BantaChatComponent } from './banta-chat/banta-chat.component';
|
|
5
|
-
import { CommonModule } from '@angular/common';
|
|
6
|
-
import { FormsModule } from '@angular/forms';
|
|
7
|
-
import { EmojiModule } from '../emoji';
|
|
8
|
-
import { LiveChatMessageComponent } from './live-chat-message.component';
|
|
9
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
-
const COMPONENTS = [
|
|
12
|
-
ChatMessageComponent,
|
|
13
|
-
LiveChatMessageComponent,
|
|
14
|
-
ChatViewComponent,
|
|
15
|
-
BantaChatComponent
|
|
16
|
-
];
|
|
17
|
-
export class ChatModule {
|
|
18
|
-
}
|
|
19
|
-
ChatModule.decorators = [
|
|
20
|
-
{ type: NgModule, args: [{
|
|
21
|
-
declarations: COMPONENTS,
|
|
22
|
-
imports: [
|
|
23
|
-
CommonModule,
|
|
24
|
-
FormsModule,
|
|
25
|
-
MatIconModule,
|
|
26
|
-
MatButtonModule,
|
|
27
|
-
EmojiModule
|
|
28
|
-
],
|
|
29
|
-
exports: COMPONENTS
|
|
30
|
-
},] }
|
|
31
|
-
];
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZGsvc3JjL2xpYi9jaGF0L2NoYXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsTUFBTSxVQUFVLEdBQUc7SUFDZixvQkFBb0I7SUFDcEIsd0JBQXdCO0lBQ3hCLGlCQUFpQjtJQUNqQixrQkFBa0I7Q0FDckIsQ0FBQztBQWFGLE1BQU0sT0FBTyxVQUFVOzs7WUFYdEIsUUFBUSxTQUFDO2dCQUNOLFlBQVksRUFBRSxVQUFVO2dCQUN4QixPQUFPLEVBQUU7b0JBQ0wsWUFBWTtvQkFDWixXQUFXO29CQUNYLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixXQUFXO2lCQUNkO2dCQUNELE9BQU8sRUFBRSxVQUFVO2FBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGF0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2hhdC12aWV3L2NoYXQtdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCYW50YUNoYXRDb21wb25lbnQgfSBmcm9tICcuL2JhbnRhLWNoYXQvYmFudGEtY2hhdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRW1vamlNb2R1bGUgfSBmcm9tICcuLi9lbW9qaSc7XHJcbmltcG9ydCB7IExpdmVDaGF0TWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vbGl2ZS1jaGF0LW1lc3NhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5cclxuY29uc3QgQ09NUE9ORU5UUyA9IFtcclxuICAgIENoYXRNZXNzYWdlQ29tcG9uZW50LFxyXG4gICAgTGl2ZUNoYXRNZXNzYWdlQ29tcG9uZW50LFxyXG4gICAgQ2hhdFZpZXdDb21wb25lbnQsXHJcbiAgICBCYW50YUNoYXRDb21wb25lbnRcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IENPTVBPTkVOVFMsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIEVtb2ppTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogQ09NUE9ORU5UU1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhdE1vZHVsZSB7XHJcbn0iXX0=
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { ChatBackendBase } from '../chat-backend-base';
|
|
4
|
-
export class LiveChatMessageComponent {
|
|
5
|
-
constructor(backend) {
|
|
6
|
-
this.backend = backend;
|
|
7
|
-
this._upvoted = new Subject();
|
|
8
|
-
this._reported = new Subject();
|
|
9
|
-
this._selected = new Subject();
|
|
10
|
-
}
|
|
11
|
-
get upvoted() {
|
|
12
|
-
return this._upvoted;
|
|
13
|
-
}
|
|
14
|
-
get reported() {
|
|
15
|
-
return this._reported;
|
|
16
|
-
}
|
|
17
|
-
get selected() {
|
|
18
|
-
return this._selected;
|
|
19
|
-
}
|
|
20
|
-
get message() {
|
|
21
|
-
return this._message;
|
|
22
|
-
}
|
|
23
|
-
set message(value) {
|
|
24
|
-
let originalId = null;
|
|
25
|
-
if (this._message)
|
|
26
|
-
originalId = this._message.id;
|
|
27
|
-
this._message = value;
|
|
28
|
-
if (value && originalId === value.id) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
if (this.unsubscribe)
|
|
32
|
-
this.unsubscribe();
|
|
33
|
-
if (value) {
|
|
34
|
-
this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
report() {
|
|
38
|
-
this._reported.next();
|
|
39
|
-
}
|
|
40
|
-
upvote() {
|
|
41
|
-
this._upvoted.next();
|
|
42
|
-
}
|
|
43
|
-
select() {
|
|
44
|
-
this._selected.next();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
LiveChatMessageComponent.decorators = [
|
|
48
|
-
{ type: Component, args: [{
|
|
49
|
-
selector: 'banta-live-chat-message',
|
|
50
|
-
template: `
|
|
51
|
-
<banta-chat-message
|
|
52
|
-
*ngIf="message"
|
|
53
|
-
[message]="message"
|
|
54
|
-
(upvoted)="upvote()"
|
|
55
|
-
(reported)="report()"
|
|
56
|
-
(selected)="select()"
|
|
57
|
-
></banta-chat-message>
|
|
58
|
-
`,
|
|
59
|
-
styles: [``]
|
|
60
|
-
},] }
|
|
61
|
-
];
|
|
62
|
-
LiveChatMessageComponent.ctorParameters = () => [
|
|
63
|
-
{ type: ChatBackendBase }
|
|
64
|
-
];
|
|
65
|
-
LiveChatMessageComponent.propDecorators = {
|
|
66
|
-
upvoted: [{ type: Output }],
|
|
67
|
-
reported: [{ type: Output }],
|
|
68
|
-
selected: [{ type: Output }],
|
|
69
|
-
message: [{ type: Input }]
|
|
70
|
-
};
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1jaGF0LW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC9saXZlLWNoYXQtbWVzc2FnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBZXZELE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsWUFDWSxPQUF5QjtRQUF6QixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQU03QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUMvQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNoQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUx4QyxDQUFDO0lBT0QsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFJRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFDYixVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFdEIsSUFBSSxLQUFLLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDbEMsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVztZQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFdkIsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDMUY7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs7WUE1RUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLFFBQVEsRUFBRTs7Ozs7Ozs7S0FRVDt5QkFDUSxFQUFFO2FBQ2Q7OztZQWRRLGVBQWU7OztzQkEyQm5CLE1BQU07dUJBS04sTUFBTTt1QkFLTixNQUFNO3NCQUtOLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICdAYmFudGEvY29tbW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDaGF0QmFja2VuZEJhc2UgfSBmcm9tICcuLi9jaGF0LWJhY2tlbmQtYmFzZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYmFudGEtbGl2ZS1jaGF0LW1lc3NhZ2UnLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8YmFudGEtY2hhdC1tZXNzYWdlIFxyXG4gICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2VcIlxyXG4gICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcclxuICAgICAgICAgICAgKHVwdm90ZWQpPVwidXB2b3RlKClcIlxyXG4gICAgICAgICAgICAocmVwb3J0ZWQpPVwicmVwb3J0KClcIlxyXG4gICAgICAgICAgICAoc2VsZWN0ZWQpPVwic2VsZWN0KClcIlxyXG4gICAgICAgICAgICA+PC9iYW50YS1jaGF0LW1lc3NhZ2U+XHJcbiAgICBgLFxyXG4gICAgc3R5bGVzOiBbYGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXZlQ2hhdE1lc3NhZ2VDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBiYWNrZW5kIDogQ2hhdEJhY2tlbmRCYXNlXHJcbiAgICApIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZSA6IENoYXRNZXNzYWdlO1xyXG4gICAgcHJpdmF0ZSBfdXB2b3RlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIF9yZXBvcnRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgdXB2b3RlZCgpIDogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vwdm90ZWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgZ2V0IHJlcG9ydGVkKCkgOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVwb3J0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBnZXQgc2VsZWN0ZWQoKSA6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBtZXNzYWdlKCkgOiBDaGF0TWVzc2FnZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSA6IEZ1bmN0aW9uO1xyXG5cclxuICAgIHNldCBtZXNzYWdlKHZhbHVlKSB7XHJcbiAgICAgICAgbGV0IG9yaWdpbmFsSWQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLl9tZXNzYWdlKVxyXG4gICAgICAgICAgICBvcmlnaW5hbElkID0gdGhpcy5fbWVzc2FnZS5pZDtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9tZXNzYWdlID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSAmJiBvcmlnaW5hbElkID09PSB2YWx1ZS5pZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy51bnN1YnNjcmliZSlcclxuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlID0gdGhpcy5iYWNrZW5kLndhdGNoTWVzc2FnZSh2YWx1ZSwgbWVzc2FnZSA9PiB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVwb3J0KCkge1xyXG4gICAgICAgIHRoaXMuX3JlcG9ydGVkLm5leHQoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdXB2b3RlKCkge1xyXG4gICAgICAgIHRoaXMuX3Vwdm90ZWQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdCgpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZC5uZXh0KCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Inject, Injectable } from "@angular/core";
|
|
3
|
-
import { CommentsOrder, DurableSocket } from "@banta/common";
|
|
4
|
-
import { ChatBackendBase } from "./chat-backend-base";
|
|
5
|
-
import { ChatSource } from "./chat-source";
|
|
6
|
-
import { BANTA_SDK_OPTIONS } from "./sdk-options";
|
|
7
|
-
export class ChatBackend extends ChatBackendBase {
|
|
8
|
-
constructor(options) {
|
|
9
|
-
super();
|
|
10
|
-
this.options = options;
|
|
11
|
-
}
|
|
12
|
-
get serviceUrl() {
|
|
13
|
-
var _a, _b;
|
|
14
|
-
return `${(_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.serviceUrl) !== null && _b !== void 0 ? _b : 'http://localhost:3422'}`;
|
|
15
|
-
}
|
|
16
|
-
connectToService() {
|
|
17
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
-
let socket = new DurableSocket(`${this.serviceUrl.replace(/^http/, 'ws')}/socket`);
|
|
19
|
-
yield new Promise((resolve, reject) => {
|
|
20
|
-
socket.onopen = () => {
|
|
21
|
-
resolve();
|
|
22
|
-
};
|
|
23
|
-
socket.onclose = e => {
|
|
24
|
-
if (e.code === 503) {
|
|
25
|
-
console.error(`Failed to connect to chat service!`);
|
|
26
|
-
reject(e);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
});
|
|
30
|
-
socket.onerror = undefined;
|
|
31
|
-
return socket;
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
getSourceForTopic(topicId, options) {
|
|
35
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
-
return yield new ChatSource(this, topicId, undefined, (options === null || options === void 0 ? void 0 : options.sortOrder) || CommentsOrder.NEWEST)
|
|
37
|
-
.bind(yield this.connectToService());
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
getSourceForThread(topicId, messageId, options) {
|
|
41
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
return yield new ChatSource(this, topicId, messageId, (options === null || options === void 0 ? void 0 : options.sortOrder) || CommentsOrder.NEWEST)
|
|
43
|
-
.bind(yield this.connectToService());
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
getSourceCountForTopic(topicId) {
|
|
47
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
let response = yield fetch(`${this.serviceUrl}/topics/${topicId}`);
|
|
49
|
-
if (response.status >= 400)
|
|
50
|
-
return 0;
|
|
51
|
-
let topic = yield response.json();
|
|
52
|
-
return topic.messageCount || 0;
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
refreshMessage(message) {
|
|
56
|
-
throw new Error("Method not implemented.");
|
|
57
|
-
}
|
|
58
|
-
getMessage(topicId, messageId) {
|
|
59
|
-
throw new Error("Method not implemented.");
|
|
60
|
-
}
|
|
61
|
-
getSubMessage(topicId, parentMessageId, messageId) {
|
|
62
|
-
throw new Error("Method not implemented.");
|
|
63
|
-
}
|
|
64
|
-
watchMessage(message, handler) {
|
|
65
|
-
throw new Error("Method not implemented.");
|
|
66
|
-
}
|
|
67
|
-
getCardForUrl(url) {
|
|
68
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
let response = yield fetch(`${this.serviceUrl}/urls`, {
|
|
70
|
-
method: 'POST',
|
|
71
|
-
headers: {
|
|
72
|
-
'Content-Type': 'application/json'
|
|
73
|
-
},
|
|
74
|
-
body: JSON.stringify({
|
|
75
|
-
url
|
|
76
|
-
})
|
|
77
|
-
});
|
|
78
|
-
if (response.status == 404)
|
|
79
|
-
return null;
|
|
80
|
-
if (response.status >= 400)
|
|
81
|
-
throw new Error(`Failed to retrieve URL card: ${response.status}. Body: '${yield response.text()}'`);
|
|
82
|
-
return yield response.json();
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
ChatBackend.decorators = [
|
|
87
|
-
{ type: Injectable }
|
|
88
|
-
];
|
|
89
|
-
ChatBackend.ctorParameters = () => [
|
|
90
|
-
{ type: undefined, decorators: [{ type: Inject, args: [BANTA_SDK_OPTIONS,] }] }
|
|
91
|
-
];
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2RrL3NyYy9saWIvY2hhdC1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWUsYUFBYSxFQUFFLGFBQWEsRUFBcUMsTUFBTSxlQUFlLENBQUM7QUFFN0csT0FBTyxFQUFFLGVBQWUsRUFBcUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUc5RCxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBQWU7SUFDNUMsWUFDdUMsT0FBbUI7UUFFdEQsS0FBSyxFQUFFLENBQUM7UUFGMkIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtJQUcxRCxDQUFDO0lBRUQsSUFBSSxVQUFVOztRQUNWLE9BQU8sR0FBRyxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsVUFBVSxtQ0FBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFYSxnQkFBZ0I7O1lBQzFCLElBQUksTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRixNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUN4QyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtvQkFDakIsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQyxDQUFBO2dCQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxDQUFDLElBQUksS0FB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ29tbWVudHNPcmRlciwgRHVyYWJsZVNvY2tldCwgTm90aWZpY2F0aW9uLCBVcmxDYXJkLCBVc2VyLCBWb3RlIH0gZnJvbSBcIkBiYW50YS9jb21tb25cIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENoYXRCYWNrZW5kQmFzZSwgQ2hhdFNvdXJjZU9wdGlvbnMgfSBmcm9tIFwiLi9jaGF0LWJhY2tlbmQtYmFzZVwiO1xyXG5pbXBvcnQgeyBDaGF0U291cmNlIH0gZnJvbSBcIi4vY2hhdC1zb3VyY2VcIjtcclxuaW1wb3J0IHsgQ2hhdFNvdXJjZUJhc2UgfSBmcm9tIFwiLi9jaGF0LXNvdXJjZS1iYXNlXCI7XHJcbmltcG9ydCB7IEJBTlRBX1NES19PUFRJT05TLCBTZGtPcHRpb25zIH0gZnJvbSBcIi4vc2RrLW9wdGlvbnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXRCYWNrZW5kIGV4dGVuZHMgQ2hhdEJhY2tlbmRCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoQkFOVEFfU0RLX09QVElPTlMpIHByaXZhdGUgb3B0aW9uczogU2RrT3B0aW9uc1xyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2VydmljZVVybCgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zPy5zZXJ2aWNlVXJsID8/ICdodHRwOi8vbG9jYWxob3N0OjM0MjInfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBjb25uZWN0VG9TZXJ2aWNlKCkge1xyXG4gICAgICAgIGxldCBzb2NrZXQgPSBuZXcgRHVyYWJsZVNvY2tldChgJHt0aGlzLnNlcnZpY2VVcmwucmVwbGFjZSgvXmh0dHAvLCAnd3MnKX0vc29ja2V0YCk7XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBzb2NrZXQub25vcGVuID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzb2NrZXQub25jbG9zZSA9IGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gNTAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNvbm5lY3QgdG8gY2hhdCBzZXJ2aWNlIWApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzb2NrZXQub25lcnJvciA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNvY2tldDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRTb3VyY2VGb3JUb3BpYyh0b3BpY0lkOiBzdHJpbmcsIG9wdGlvbnM/OiBDaGF0U291cmNlT3B0aW9ucyk6IFByb21pc2U8Q2hhdFNvdXJjZUJhc2U+IHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IENoYXRTb3VyY2UodGhpcywgdG9waWNJZCwgdW5kZWZpbmVkLCBvcHRpb25zPy5zb3J0T3JkZXIgfHwgQ29tbWVudHNPcmRlci5ORVdFU1QpXHJcbiAgICAgICAgICAgIC5iaW5kKGF3YWl0IHRoaXMuY29ubmVjdFRvU2VydmljZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRTb3VyY2VGb3JUaHJlYWQodG9waWNJZDogc3RyaW5nLCBtZXNzYWdlSWQ6IHN0cmluZywgb3B0aW9ucz86IENoYXRTb3VyY2VPcHRpb25zKTogUHJvbWlzZTxDaGF0U291cmNlPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBDaGF0U291cmNlKHRoaXMsIHRvcGljSWQsIG1lc3NhZ2VJZCwgb3B0aW9ucz8uc29ydE9yZGVyIHx8IENvbW1lbnRzT3JkZXIuTkVXRVNUKVxyXG4gICAgICAgICAgICAuYmluZChhd2FpdCB0aGlzLmNvbm5lY3RUb1NlcnZpY2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U291cmNlQ291bnRGb3JUb3BpYyh0b3BpY0lkOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke3RoaXMuc2VydmljZVVybH0vdG9waWNzLyR7dG9waWNJZH1gKVxyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDQwMClcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcblxyXG4gICAgICAgIGxldCB0b3BpYyA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgICAgICByZXR1cm4gdG9waWMubWVzc2FnZUNvdW50IHx8IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcmVmcmVzaE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGdldE1lc3NhZ2UodG9waWNJZDogc3RyaW5nLCBtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8Q2hhdE1lc3NhZ2U+IHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgIH1cclxuICAgIGdldFN1Yk1lc3NhZ2UodG9waWNJZDogc3RyaW5nLCBwYXJlbnRNZXNzYWdlSWQ6IHN0cmluZywgbWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgICB9XHJcbiAgICB3YXRjaE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1lc3NhZ2UsIGhhbmRsZXI6IChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gICAgfVxyXG4gICAgbm90aWZpY2F0aW9uc0NoYW5nZWQ6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uW10+O1xyXG4gICAgbmV3Tm90aWZpY2F0aW9uOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbj47XHJcbiAgICBcclxuICAgIGFzeW5jIGdldENhcmRGb3JVcmwodXJsOiBzdHJpbmcpOiBQcm9taXNlPFVybENhcmQ+IHtcclxuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHt0aGlzLnNlcnZpY2VVcmx9L3VybHNgLCB7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHVybFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDQwNClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSA0MDApXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIFVSTCBjYXJkOiAke3Jlc3BvbnNlLnN0YXR1c30uIEJvZHk6ICcke2F3YWl0IHJlc3BvbnNlLnRleHQoKX0nYCk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcbn0iXX0=
|