@banta/sdk 4.4.2 → 4.4.5
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/bundles/banta-sdk.umd.js +206 -74
- package/bundles/banta-sdk.umd.js.map +1 -1
- package/bundles/banta-sdk.umd.min.js +1 -1
- package/bundles/banta-sdk.umd.min.js.map +1 -1
- package/esm2015/lib/chat/banta-chat/banta-chat.component.js +2 -2
- package/esm2015/lib/chat-source-base.js +1 -1
- package/esm2015/lib/chat-source.js +31 -3
- package/esm2015/lib/comments/banta-comments/banta-comments.component.js +42 -18
- package/esm2015/lib/comments/comment/comment.component.js +2 -2
- package/esm2015/lib/comments/comment-field/comment-field.component.js +45 -10
- package/esm2015/lib/common/lightbox/lightbox.component.js +4 -2
- package/fesm2015/banta-sdk.js +118 -29
- package/fesm2015/banta-sdk.js.map +1 -1
- package/lib/chat-source-base.d.ts +1 -0
- package/lib/chat-source.d.ts +8 -3
- package/lib/comments/comment-field/comment-field.component.d.ts +5 -1
- package/package.json +1 -1
package/bundles/banta-sdk.umd.js
CHANGED
|
@@ -125,7 +125,9 @@
|
|
|
125
125
|
function LightboxComponent() {
|
|
126
126
|
}
|
|
127
127
|
LightboxComponent.prototype.ngAfterViewInit = function () {
|
|
128
|
-
|
|
128
|
+
if (typeof window !== 'undefined') {
|
|
129
|
+
document.body.appendChild(this.containerElement.nativeElement);
|
|
130
|
+
}
|
|
129
131
|
};
|
|
130
132
|
LightboxComponent.prototype.ngOnDestroy = function () {
|
|
131
133
|
this.containerElement.nativeElement.remove();
|
|
@@ -8247,7 +8249,7 @@
|
|
|
8247
8249
|
user: null,
|
|
8248
8250
|
sentAt: Date.now(),
|
|
8249
8251
|
likes: 0,
|
|
8250
|
-
url: location.href,
|
|
8252
|
+
url: typeof window !== 'undefined' ? location.href : undefined,
|
|
8251
8253
|
message: text
|
|
8252
8254
|
};
|
|
8253
8255
|
_b.label = 1;
|
|
@@ -8573,7 +8575,7 @@
|
|
|
8573
8575
|
CommentComponent.decorators = [
|
|
8574
8576
|
{ type: core.Component, args: [{
|
|
8575
8577
|
selector: 'banta-comment',
|
|
8576
|
-
template: "\r\n<mat-menu #pointItemMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"share()\">\r\n <mat-icon>share</mat-icon>\r\n Share\r\n </button>\r\n <button *ngIf=\"!mine\" mat-menu-item (click)=\"report()\">\r\n <mat-icon>warning</mat-icon>\r\n Report\r\n </button>\r\n <button *ngIf=\"mine\" [disabled]=\"!permissions?.canEdit\" mat-menu-item (click)=\"startEdit()\">\r\n <mat-icon>edit</mat-icon>\r\n Edit\r\n </button>\r\n <button *ngIf=\"mine\" [disabled]=\"!permissions?.canDelete\" mat-menu-item (click)=\"delete()\">\r\n <mat-icon>delete</mat-icon>\r\n Delete\r\n </button>\r\n</mat-menu>\r\n\r\n<div class=\"message-content\">\r\n <div class=\"user\">\r\n <div class=\"user-1\">\r\n <a\r\n href=\"javascript:;\"\r\n class=\"avatar\"\r\n (click)=\"selectAvatar(message.user)\"\r\n [style.background-image]=\"avatarForUser(message.user)\"></a>\r\n <div class=\"user-identity\">\r\n <a href=\"javascript:;\" class=\"display-name\" (click)=\"selectUser()\">{{message.user.displayName}}</a>\r\n <a href=\"javascript:;\" class=\"username\" (click)=\"selectUsername(message.user)\">@{{message.user.username}}</a>\r\n </div>\r\n </div>\r\n <div class=\"user-2\">\r\n <span class=\"user-tag\" *ngIf=\"message.user.tag\">{{message.user.tag}}</span>\r\n <banta-timestamp [value]=\"message.sentAt\"></banta-timestamp>\r\n <span class=\"spacer\"></span>\r\n </div>\r\n </div>\r\n <div class=\"content\" *ngIf=\"!editing\">\r\n <span class=\"banta-message-content\" [innerHTML]=\"message.message | markdownToHtml\"></span>\r\n <banta-attachments [attachments]=\"message.attachments\"></banta-attachments>\r\n <ul class=\"message-facts\">\r\n <li *ngIf=\"message.edits?.length > 0\">(Edited)</li>\r\n </ul>\r\n </div>\r\n <div class=\"content\" *ngIf=\"editing\" style=\"padding-bottom: 2em;\">\r\n <div>\r\n <mat-form-field floatLabel=\"always\" appearance=\"outline\" style=\"width: 100%;\">\r\n <mat-label>Edit Message</mat-label>\r\n <textarea matInput [(ngModel)]=\"editedMessage\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <button mat-raised-button (click)=\"saveEdit()\">Save</button> \r\n <button mat-button (click)=\"endEditing()\">Cancel</button>\r\n </div>\r\n\r\n\r\n <div class=\"actions\">\r\n <div class=\"spacer\"></div>\r\n <div class=\"counted-action\" *ngIf=\"showReplyAction\">\r\n <button mat-button [matTooltip]=\"replyCount > 0 ? 'Replies' : 'Reply'\" matTooltipPosition=\"below\" (click)=\"select()\">\r\n <mat-icon [inline]=\"true\">comment</mat-icon>\r\n <span class=\"count-indicator\">\r\n {{replyCount > 0 ? 'Replies' : 'Reply'}}\r\n {{replyCount > 0 ? '(' + replyCount + ')' : ''}}\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"counted-action\" [class.active]=\"message.userState?.liked\">\r\n <button \r\n *ngIf=\"message.transientState?.liking\"\r\n mat-icon-button \r\n [disabled]=\"true\" \r\n [matTooltip]=\"upvoting ? 'Please wait...' : message.userState?.liked ? 'Unlike' : 'Like'\" \r\n matTooltipPosition=\"below\" \r\n >\r\n <mat-spinner [diameter]=\"15\" style=\"margin-left: 1em;\"></mat-spinner>\r\n </button>\r\n <button \r\n *ngIf=\"!message.transientState?.liking\"\r\n mat-button \r\n [
|
|
8578
|
+
template: "\r\n<mat-menu #pointItemMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"share()\">\r\n <mat-icon>share</mat-icon>\r\n Share\r\n </button>\r\n <button *ngIf=\"!mine\" mat-menu-item (click)=\"report()\">\r\n <mat-icon>warning</mat-icon>\r\n Report\r\n </button>\r\n <button *ngIf=\"mine\" [disabled]=\"!permissions?.canEdit\" mat-menu-item (click)=\"startEdit()\">\r\n <mat-icon>edit</mat-icon>\r\n Edit\r\n </button>\r\n <button *ngIf=\"mine\" [disabled]=\"!permissions?.canDelete\" mat-menu-item (click)=\"delete()\">\r\n <mat-icon>delete</mat-icon>\r\n Delete\r\n </button>\r\n</mat-menu>\r\n\r\n<div class=\"message-content\">\r\n <div class=\"user\">\r\n <div class=\"user-1\">\r\n <a\r\n href=\"javascript:;\"\r\n class=\"avatar\"\r\n (click)=\"selectAvatar(message.user)\"\r\n [style.background-image]=\"avatarForUser(message.user)\"></a>\r\n <div class=\"user-identity\">\r\n <a href=\"javascript:;\" class=\"display-name\" (click)=\"selectUser()\">{{message.user.displayName}}</a>\r\n <a href=\"javascript:;\" class=\"username\" (click)=\"selectUsername(message.user)\">@{{message.user.username}}</a>\r\n </div>\r\n </div>\r\n <div class=\"user-2\">\r\n <span class=\"user-tag\" *ngIf=\"message.user.tag\">{{message.user.tag}}</span>\r\n <banta-timestamp [value]=\"message.sentAt\"></banta-timestamp>\r\n <span class=\"spacer\"></span>\r\n </div>\r\n </div>\r\n <div class=\"content\" *ngIf=\"!editing\">\r\n <span class=\"banta-message-content\" [innerHTML]=\"message.message | markdownToHtml\"></span>\r\n <banta-attachments [attachments]=\"message.attachments\"></banta-attachments>\r\n <ul class=\"message-facts\">\r\n <li *ngIf=\"message.edits?.length > 0\">(Edited)</li>\r\n </ul>\r\n </div>\r\n <div class=\"content\" *ngIf=\"editing\" style=\"padding-bottom: 2em;\">\r\n <div>\r\n <mat-form-field floatLabel=\"always\" appearance=\"outline\" style=\"width: 100%;\">\r\n <mat-label>Edit Message</mat-label>\r\n <textarea matInput [(ngModel)]=\"editedMessage\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <button mat-raised-button (click)=\"saveEdit()\">Save</button> \r\n <button mat-button (click)=\"endEditing()\">Cancel</button>\r\n </div>\r\n\r\n\r\n <div class=\"actions\">\r\n <div class=\"spacer\"></div>\r\n <div class=\"counted-action\" *ngIf=\"showReplyAction\">\r\n <button mat-button [matTooltip]=\"replyCount > 0 ? 'Replies' : 'Reply'\" matTooltipPosition=\"below\" (click)=\"select()\">\r\n <mat-icon [inline]=\"true\">comment</mat-icon>\r\n <span class=\"count-indicator\">\r\n {{replyCount > 0 ? 'Replies' : 'Reply'}}\r\n {{replyCount > 0 ? '(' + replyCount + ')' : ''}}\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"counted-action\" [class.active]=\"message.userState?.liked\">\r\n <button \r\n *ngIf=\"message.transientState?.liking\"\r\n mat-icon-button \r\n [disabled]=\"true\" \r\n [matTooltip]=\"upvoting ? 'Please wait...' : message.userState?.liked ? 'Unlike' : 'Like'\" \r\n matTooltipPosition=\"below\" \r\n >\r\n <mat-spinner [diameter]=\"15\" style=\"margin-left: 1em;\"></mat-spinner>\r\n </button>\r\n <button \r\n *ngIf=\"!message.transientState?.liking\"\r\n mat-button \r\n [matTooltip]=\"permissions?.canLike ? upvoting ? 'Please wait...' : 'Like' : permissions?.canLikeErrorMessage\" \r\n matTooltipPosition=\"below\" \r\n (click)=\"message.userState?.liked ? unlike() : like()\" \r\n >\r\n <mat-icon [inline]=\"true\">thumb_up</mat-icon>\r\n <span class=\"count-indicator\" *ngIf=\"message.likes > 0\">\r\n {{message.likes}}\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <button mat-icon-button [matMenuTriggerFor]=\"pointItemMenu\">\r\n <mat-icon [inline]=\"true\">more_vert</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n",
|
|
8577
8579
|
styles: ["@-webkit-keyframes comment-appear{0%{transform:translate(100vw)}to{transform:translate(0)}}@keyframes comment-appear{0%{transform:translate(100vw)}to{transform:translate(0)}}:host{display:flex;flex-direction:column;position:relative;padding:.5em;visibility:hidden}:host.new{visibility:visible;-webkit-animation-name:comment-appear;animation-name:comment-appear;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-fill-mode:both;animation-fill-mode:both}:host.highlighted{background:#00223a;outline:2px solid #003277}:host.visible{visibility:visible}:host:hover{background:#eee}:host .message-content .content{margin-left:60px;margin-right:.5em}:host .message-content .attachments-row{margin-top:15px;display:flex;gap:10px}:host .message-content .attachments-row img{border-radius:10px;width:300px;max-width:100%;max-height:20em;-o-object-fit:cover;object-fit:cover}:host.abbreviated .message-content .content{text-overflow:ellipsis;overflow-y:hidden}:host .actions{display:flex;padding-right:10px;margin-left:60px;align-items:center}:host .actions button,banta-timestamp{color:#666;flex-shrink:0}banta-timestamp{font-size:10pt;margin-left:1em;text-align:right}.user{position:relative;margin:1em 0 0;display:flex;align-items:center;flex-wrap:wrap}.user .user-1,.user .user-2{display:flex;flex-wrap:nowrap;align-items:center;min-width:0}.user .user-2{margin:1em 0}.user .user-identity{display:flex;flex-direction:column;min-width:0}.user .display-name,.user .username{z-index:1;position:relative;padding:0 0 0 1em;font-size:10pt;color:#000;margin:0 auto 0 0;display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex-shrink:1;flex-grow:0;min-width:0}.user .display-name.username.username.username,.user .username.username.username.username{color:#666}.avatar{height:48px;width:48px;background-position:50%;background-size:cover;background-color:#333;border-radius:100%;flex-shrink:0;flex-grow:0}.counted-action{display:flex;align-items:center}.counted-action.active .count-indicator,.counted-action.active button{color:#00a5ff}.counted-action button .count-indicator{margin-left:.5em}.count-indicator{font-size:9pt;padding:0 0 0 3px;color:#666}:host-context(.mat-dark-theme) .count-indicator{border-color:#333}:host-context(.mat-dark-theme):hover{background:#060606}.user-tag,:host-context(.mat-dark-theme) .user .display-name,:host-context(.mat-dark-theme) .user .username{color:#fff}.user-tag{text-transform:uppercase;font-size:12px;border:1px solid #b27373;background:#7a412b;padding:3px 5px;margin:0 .5em 0 1em;border-radius:3px}.spacer{flex-shrink:1;flex-grow:1}ul.message-facts{margin:0;padding:0;color:#666}ul.message-facts li{list-style-type:none;border-left:1px solid #666;font-size:10pt;padding-left:.5em;margin-left:.5em;margin-top:.5em}ul.message-facts li:first-child{border-left:1px solid transparent;margin-left:0;padding-left:0}@media (max-width:400px){.avatar{height:32px;width:32px}:host .actions{margin-left:0;margin-top:.5em}:host .message-content .content{margin-left:44px;margin-right:.5em}}:host-context(.banta-mobile) .avatar{height:32px;width:32px}:host-context(.banta-mobile) :host .actions{margin-left:0;margin-top:.5em}:host-context(.banta-mobile) :host .message-content .content{margin-left:44px;margin-right:.5em}.card-attachment a{display:flex;align-items:flex-start;gap:1em;width:100%;border:1px solid #666;border-radius:4px;padding:1em;box-sizing:border-box;background-color:#191919}.card-attachment a img{width:300px;aspect-ratio:16/9;-o-object-fit:cover;object-fit:cover;border-radius:10px}.card-attachment a h1{margin:0;font-size:30px}"]
|
|
8578
8580
|
},] }
|
|
8579
8581
|
];
|
|
@@ -9088,20 +9090,23 @@
|
|
|
9088
9090
|
});
|
|
9089
9091
|
BantaCommentsComponent.prototype.ngAfterViewInit = function () {
|
|
9090
9092
|
var _this = this;
|
|
9091
|
-
|
|
9092
|
-
var
|
|
9093
|
-
|
|
9094
|
-
_this.
|
|
9095
|
-
|
|
9096
|
-
|
|
9097
|
-
|
|
9098
|
-
|
|
9099
|
-
|
|
9100
|
-
|
|
9093
|
+
if (typeof window !== 'undefined') {
|
|
9094
|
+
var callback = function () {
|
|
9095
|
+
var size = _this.elementRef.nativeElement.getBoundingClientRect();
|
|
9096
|
+
_this.ngZone.run(function () {
|
|
9097
|
+
_this.width = size.width;
|
|
9098
|
+
_this.height = size.height;
|
|
9099
|
+
});
|
|
9100
|
+
};
|
|
9101
|
+
this.resizeObserver = new ResizeObserver(callback);
|
|
9102
|
+
this.resizeObserver.observe(this.elementRef.nativeElement);
|
|
9103
|
+
callback();
|
|
9104
|
+
}
|
|
9101
9105
|
};
|
|
9102
9106
|
BantaCommentsComponent.prototype.ngOnDestroy = function () {
|
|
9103
9107
|
this._subs.unsubscribe();
|
|
9104
|
-
this.resizeObserver
|
|
9108
|
+
if (this.resizeObserver)
|
|
9109
|
+
this.resizeObserver.disconnect();
|
|
9105
9110
|
};
|
|
9106
9111
|
BantaCommentsComponent.prototype.setSourceFromTopicID = function (topicID) {
|
|
9107
9112
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -9313,6 +9318,8 @@
|
|
|
9313
9318
|
});
|
|
9314
9319
|
// UI Interactions
|
|
9315
9320
|
BantaCommentsComponent.prototype.scrollToComment = function (commentId) {
|
|
9321
|
+
if (typeof window === 'undefined')
|
|
9322
|
+
return;
|
|
9316
9323
|
setTimeout(function () {
|
|
9317
9324
|
var comment = document.querySelectorAll("[data-comment-id=\"" + commentId + "\"]");
|
|
9318
9325
|
if (comment.length > 0) {
|
|
@@ -9410,32 +9417,36 @@
|
|
|
9410
9417
|
};
|
|
9411
9418
|
// Actions
|
|
9412
9419
|
BantaCommentsComponent.prototype.likeMessage = function (source, message) {
|
|
9413
|
-
var _a;
|
|
9414
9420
|
return __awaiter(this, void 0, void 0, function () {
|
|
9415
9421
|
var e_4;
|
|
9416
9422
|
return __generator(this, function (_d) {
|
|
9417
9423
|
switch (_d.label) {
|
|
9418
9424
|
case 0:
|
|
9425
|
+
if (!!this.user) return [3 /*break*/, 2];
|
|
9426
|
+
return [4 /*yield*/, this.showSignIn()];
|
|
9427
|
+
case 1:
|
|
9428
|
+
_d.sent();
|
|
9429
|
+
return [2 /*return*/];
|
|
9430
|
+
case 2:
|
|
9419
9431
|
this._upvoted.next(message);
|
|
9420
9432
|
message.transientState.liking = true;
|
|
9421
|
-
|
|
9422
|
-
|
|
9423
|
-
_d.
|
|
9424
|
-
case 1:
|
|
9425
|
-
_d.trys.push([1, 3, , 4]);
|
|
9433
|
+
_d.label = 3;
|
|
9434
|
+
case 3:
|
|
9435
|
+
_d.trys.push([3, 5, 6, 8]);
|
|
9426
9436
|
return [4 /*yield*/, source.likeMessage(message.id)];
|
|
9427
|
-
case
|
|
9437
|
+
case 4:
|
|
9428
9438
|
_d.sent();
|
|
9429
|
-
return [3 /*break*/,
|
|
9430
|
-
case
|
|
9439
|
+
return [3 /*break*/, 8];
|
|
9440
|
+
case 5:
|
|
9431
9441
|
e_4 = _d.sent();
|
|
9432
9442
|
this.handleBackendExceptionAsAlert(e_4, 'Could not like this message: ');
|
|
9433
|
-
return [3 /*break*/,
|
|
9434
|
-
case
|
|
9435
|
-
case
|
|
9443
|
+
return [3 /*break*/, 8];
|
|
9444
|
+
case 6: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 250); })];
|
|
9445
|
+
case 7:
|
|
9436
9446
|
_d.sent();
|
|
9437
9447
|
message.transientState.liking = false;
|
|
9438
|
-
return [
|
|
9448
|
+
return [7 /*endfinally*/];
|
|
9449
|
+
case 8: return [2 /*return*/];
|
|
9439
9450
|
}
|
|
9440
9451
|
});
|
|
9441
9452
|
});
|
|
@@ -9447,23 +9458,29 @@
|
|
|
9447
9458
|
return __generator(this, function (_d) {
|
|
9448
9459
|
switch (_d.label) {
|
|
9449
9460
|
case 0:
|
|
9461
|
+
if (!!this.user) return [3 /*break*/, 2];
|
|
9462
|
+
return [4 /*yield*/, this.showSignIn()];
|
|
9463
|
+
case 1:
|
|
9464
|
+
_d.sent();
|
|
9465
|
+
return [2 /*return*/];
|
|
9466
|
+
case 2:
|
|
9450
9467
|
this._upvoted.next(message);
|
|
9451
9468
|
message.transientState.liking = true;
|
|
9452
9469
|
if ((_a = message.userState) === null || _a === void 0 ? void 0 : _a.liked)
|
|
9453
9470
|
message.likes = (message.likes || 0) - 1;
|
|
9454
|
-
_d.label =
|
|
9455
|
-
case
|
|
9456
|
-
_d.trys.push([
|
|
9471
|
+
_d.label = 3;
|
|
9472
|
+
case 3:
|
|
9473
|
+
_d.trys.push([3, 5, , 6]);
|
|
9457
9474
|
return [4 /*yield*/, source.unlikeMessage(message.id)];
|
|
9458
|
-
case
|
|
9475
|
+
case 4:
|
|
9459
9476
|
_d.sent();
|
|
9460
|
-
return [3 /*break*/,
|
|
9461
|
-
case
|
|
9477
|
+
return [3 /*break*/, 6];
|
|
9478
|
+
case 5:
|
|
9462
9479
|
e_5 = _d.sent();
|
|
9463
9480
|
this.handleBackendExceptionAsAlert(e_5, 'Failed to unlike this message: ');
|
|
9464
|
-
return [3 /*break*/,
|
|
9465
|
-
case
|
|
9466
|
-
case
|
|
9481
|
+
return [3 /*break*/, 6];
|
|
9482
|
+
case 6: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 250); })];
|
|
9483
|
+
case 7:
|
|
9467
9484
|
_d.sent();
|
|
9468
9485
|
message.transientState.liking = false;
|
|
9469
9486
|
return [2 /*return*/];
|
|
@@ -9580,20 +9597,26 @@
|
|
|
9580
9597
|
return __generator(this, function (_d) {
|
|
9581
9598
|
switch (_d.label) {
|
|
9582
9599
|
case 0:
|
|
9600
|
+
if (!!this.user) return [3 /*break*/, 2];
|
|
9601
|
+
return [4 /*yield*/, this.showSignIn()];
|
|
9602
|
+
case 1:
|
|
9603
|
+
_d.sent();
|
|
9604
|
+
return [2 /*return*/];
|
|
9605
|
+
case 2:
|
|
9583
9606
|
if (!confirm("Are you sure you want to delete this comment? You cannot undo this action."))
|
|
9584
9607
|
return [2 /*return*/];
|
|
9585
|
-
_d.label =
|
|
9586
|
-
case
|
|
9587
|
-
_d.trys.push([
|
|
9608
|
+
_d.label = 3;
|
|
9609
|
+
case 3:
|
|
9610
|
+
_d.trys.push([3, 5, , 6]);
|
|
9588
9611
|
return [4 /*yield*/, this.source.deleteMessage(message.id)];
|
|
9589
|
-
case
|
|
9612
|
+
case 4:
|
|
9590
9613
|
_d.sent();
|
|
9591
|
-
return [3 /*break*/,
|
|
9592
|
-
case
|
|
9614
|
+
return [3 /*break*/, 6];
|
|
9615
|
+
case 5:
|
|
9593
9616
|
e_6 = _d.sent();
|
|
9594
9617
|
this.handleBackendExceptionAsAlert(e_6, "Could not delete message: ");
|
|
9595
|
-
return [3 /*break*/,
|
|
9596
|
-
case
|
|
9618
|
+
return [3 /*break*/, 6];
|
|
9619
|
+
case 6: return [2 /*return*/];
|
|
9597
9620
|
}
|
|
9598
9621
|
});
|
|
9599
9622
|
});
|
|
@@ -9604,16 +9627,22 @@
|
|
|
9604
9627
|
return __generator(this, function (_d) {
|
|
9605
9628
|
switch (_d.label) {
|
|
9606
9629
|
case 0:
|
|
9607
|
-
|
|
9608
|
-
return [4 /*yield*/,
|
|
9630
|
+
if (!!this.user) return [3 /*break*/, 2];
|
|
9631
|
+
return [4 /*yield*/, this.showSignIn()];
|
|
9609
9632
|
case 1:
|
|
9610
9633
|
_d.sent();
|
|
9611
|
-
return [
|
|
9634
|
+
return [2 /*return*/];
|
|
9612
9635
|
case 2:
|
|
9636
|
+
_d.trys.push([2, 4, , 5]);
|
|
9637
|
+
return [4 /*yield*/, source.editMessage(message.id, newText)];
|
|
9638
|
+
case 3:
|
|
9639
|
+
_d.sent();
|
|
9640
|
+
return [3 /*break*/, 5];
|
|
9641
|
+
case 4:
|
|
9613
9642
|
e_7 = _d.sent();
|
|
9614
9643
|
this.handleBackendExceptionAsAlert(e_7, 'Could not edit this message: ');
|
|
9615
9644
|
return [2 /*return*/];
|
|
9616
|
-
case
|
|
9645
|
+
case 5:
|
|
9617
9646
|
message.message = newText;
|
|
9618
9647
|
message.transientState.editing = false;
|
|
9619
9648
|
return [2 /*return*/];
|
|
@@ -9636,17 +9665,23 @@
|
|
|
9636
9665
|
return __generator(this, function (_d) {
|
|
9637
9666
|
switch (_d.label) {
|
|
9638
9667
|
case 0:
|
|
9639
|
-
|
|
9640
|
-
return [4 /*yield*/, this.
|
|
9668
|
+
if (!!this.user) return [3 /*break*/, 2];
|
|
9669
|
+
return [4 /*yield*/, this.showSignIn()];
|
|
9641
9670
|
case 1:
|
|
9642
9671
|
_d.sent();
|
|
9643
|
-
|
|
9644
|
-
return [3 /*break*/, 3];
|
|
9672
|
+
return [2 /*return*/];
|
|
9645
9673
|
case 2:
|
|
9674
|
+
_d.trys.push([2, 4, , 5]);
|
|
9675
|
+
return [4 /*yield*/, this.source.editMessage(message.id, text)];
|
|
9676
|
+
case 3:
|
|
9677
|
+
_d.sent();
|
|
9678
|
+
message.transientState.editing = false;
|
|
9679
|
+
return [3 /*break*/, 5];
|
|
9680
|
+
case 4:
|
|
9646
9681
|
e_8 = _d.sent();
|
|
9647
9682
|
this.handleBackendExceptionAsAlert(e_8, "Could not edit message: ");
|
|
9648
|
-
return [3 /*break*/,
|
|
9649
|
-
case
|
|
9683
|
+
return [3 /*break*/, 5];
|
|
9684
|
+
case 5: return [2 /*return*/];
|
|
9650
9685
|
}
|
|
9651
9686
|
});
|
|
9652
9687
|
});
|
|
@@ -9656,7 +9691,7 @@
|
|
|
9656
9691
|
BantaCommentsComponent.decorators = [
|
|
9657
9692
|
{ type: core.Component, args: [{
|
|
9658
9693
|
selector: 'banta-comments',
|
|
9659
|
-
template: "<ng-container *ngIf=\"loading\">\r\n <div class=\"loading-screen\" [class.visible]=\"showLoadingScreen\">\r\n <h1>Loading Comments</h1>\r\n <div>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n\r\n <p class=\"loading-message\" [class.visible]=\"loadingMessageVisible\">{{loadingMessage}}</p>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage && !useInlineReplies\">\r\n\r\n <div>\r\n <a mat-button href=\"javascript:;\" (click)=\"unselectMessage()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment\r\n [message]=\"selectedMessage\"\r\n [liking]=\"selectedMessage.transientState.liking\"\r\n [mine]=\"user?.id === selectedMessage.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"false\"\r\n [editing]=\"selectedMessage.transientState.editing\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (editStarted)=\"startEditing(selectedMessage)\"\r\n (editEnded)=\"selectedMessage.transientState.editing = false\"\r\n (edited)=\"saveEdit(selectedMessage, $event)\"\r\n (userSelected)=\"selectMessageUser(selectedMessage)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(source, selectedMessage)\"\r\n (unliked)=\"unlikeMessage(source, selectedMessage)\"\r\n (reported)=\"reportMessage(selectedMessage)\"\r\n (selected)=\"selectMessage(selectedMessage)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage(selectedMessage)\"\r\n ></banta-comment>\r\n\r\n <div class=\"replies\">\r\n\r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [maxLength]=\"maxCommentLength\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main\" [class.hidden]=\"selectedMessage && !useInlineReplies\">\r\n <banta-comment-field\r\n [source]=\"source\"\r\n [user]=\"user\"\r\n [sendLabel]=\"sendLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signInLabel]=\"signInLabel\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [label]=\"postCommentLabel\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (signInSelected)=\"showSignIn()\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [submit]=\"sendMessage\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n \r\n </banta-comment-field>\r\n\r\n <banta-comment-sort\r\n [(sort)]=\"sortOrder\"></banta-comment-sort>\r\n\r\n <banta-comment-view\r\n [class.faded]=\"selectedMessage && !useInlineReplies\"\r\n [source]=\"source\"\r\n [fixedHeight]=\"fixedHeight\"\r\n [maxMessages]=\"maxMessages\"\r\n [maxVisibleMessages]=\"maxVisibleMessages\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (userSelected)=\"selectMessageUser($event)\"\r\n (sortOrderChanged)=\"sortOrder = $event\"\r\n (selected)=\"selectMessage($event)\"\r\n (liked)=\"likeMessage(source, $event)\"\r\n (unliked)=\"unlikeMessage(source, $event)\"\r\n (messageEdited)=\"editMessage(source, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n [selectedMessage]=\"selectedMessage\"\r\n (deleted)=\"deleteMessage($event)\"\r\n >\r\n <div class=\"inline-replies\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage\">\r\n <div class=\"replies\">\r\n \r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n \r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n</ng-container>\r\n",
|
|
9694
|
+
template: "<ng-container *ngIf=\"loading\">\r\n <div class=\"loading-screen\" [class.visible]=\"showLoadingScreen\">\r\n <h1>Loading...</h1>\r\n <div>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n\r\n <p class=\"loading-message\" [class.visible]=\"loadingMessageVisible\">{{loadingMessage}}</p>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage && !useInlineReplies\">\r\n\r\n <div>\r\n <a mat-button href=\"javascript:;\" (click)=\"unselectMessage()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment\r\n [message]=\"selectedMessage\"\r\n [liking]=\"selectedMessage.transientState.liking\"\r\n [mine]=\"user?.id === selectedMessage.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"false\"\r\n [editing]=\"selectedMessage.transientState.editing\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (editStarted)=\"startEditing(selectedMessage)\"\r\n (editEnded)=\"selectedMessage.transientState.editing = false\"\r\n (edited)=\"saveEdit(selectedMessage, $event)\"\r\n (userSelected)=\"selectMessageUser(selectedMessage)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(source, selectedMessage)\"\r\n (unliked)=\"unlikeMessage(source, selectedMessage)\"\r\n (reported)=\"reportMessage(selectedMessage)\"\r\n (selected)=\"selectMessage(selectedMessage)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage(selectedMessage)\"\r\n ></banta-comment>\r\n\r\n <div class=\"replies\">\r\n\r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [maxLength]=\"maxCommentLength\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main\" [class.hidden]=\"selectedMessage && !useInlineReplies\">\r\n <banta-comment-field\r\n [source]=\"source\"\r\n [user]=\"user\"\r\n [sendLabel]=\"sendLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signInLabel]=\"signInLabel\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [label]=\"postCommentLabel\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (signInSelected)=\"showSignIn()\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [submit]=\"sendMessage\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n \r\n </banta-comment-field>\r\n\r\n <banta-comment-sort\r\n [(sort)]=\"sortOrder\"></banta-comment-sort>\r\n\r\n <banta-comment-view\r\n [class.faded]=\"selectedMessage && !useInlineReplies\"\r\n [source]=\"source\"\r\n [fixedHeight]=\"fixedHeight\"\r\n [maxMessages]=\"maxMessages\"\r\n [maxVisibleMessages]=\"maxVisibleMessages\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (userSelected)=\"selectMessageUser($event)\"\r\n (sortOrderChanged)=\"sortOrder = $event\"\r\n (selected)=\"selectMessage($event)\"\r\n (liked)=\"likeMessage(source, $event)\"\r\n (unliked)=\"unlikeMessage(source, $event)\"\r\n (messageEdited)=\"editMessage(source, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n [selectedMessage]=\"selectedMessage\"\r\n (deleted)=\"deleteMessage($event)\"\r\n >\r\n <div class=\"inline-replies\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage\">\r\n <div class=\"replies\">\r\n \r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n \r\n <banta-comment-field\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n [maxLength]=\"maxCommentLength\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div> \r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n</ng-container>\r\n",
|
|
9660
9695
|
styles: [":host{display:flex;flex-direction:column}@-webkit-keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}.focused{-webkit-animation-name:select-comment;animation-name:select-comment;-webkit-animation-duration:.4s;animation-duration:.4s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.focused .replies{margin-top:1em;margin-left:2em;border-left:2px solid #333;padding-left:2em}banta-comment-view{opacity:1;transition:opacity .4s ease-in-out}banta-comment-view.faded{opacity:.25}.loading{display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:0 auto;min-height:16em}.main.hidden{display:none}.loading-screen{text-align:center;opacity:0;transition:opacity .25s ease-in-out}.loading-screen.visible{opacity:1}.loading-screen h1{font-weight:100}.loading-screen mat-spinner{margin:5em auto}.loading-screen .loading-message{opacity:0;transition:opacity .25s ease-in-out;width:500px;max-width:100%;margin:0 auto}.loading-screen .loading-message.visible{opacity:1}banta-comment-sort{margin:0 0 0 auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:block}.inline-replies{margin-left:4em}@media (max-width:500px){.focused .replies{margin-left:0}.inline-replies{margin-left:1em}.focused .replies{padding-left:.5em}banta-comment-sort{margin:0;width:100%}}:host-context(.banta-mobile) .focused .replies{margin-left:0}:host-context(.banta-mobile) .inline-replies{margin-left:1em}:host-context(.banta-mobile) .focused .replies{padding-left:.5em}:host-context(.banta-mobile) banta-comment-sort{margin:0;width:100%}"]
|
|
9661
9696
|
},] }
|
|
9662
9697
|
];
|
|
@@ -9783,6 +9818,7 @@
|
|
|
9783
9818
|
var CommentFieldComponent = /** @class */ (function () {
|
|
9784
9819
|
function CommentFieldComponent(chatBackend) {
|
|
9785
9820
|
this.chatBackend = chatBackend;
|
|
9821
|
+
this._subs = new rxjs.Subscription();
|
|
9786
9822
|
this.canComment = true;
|
|
9787
9823
|
this.allowAttachments = false;
|
|
9788
9824
|
this.signInSelected = new rxjs.Subject();
|
|
@@ -9807,6 +9843,40 @@
|
|
|
9807
9843
|
this.autoCompleteSelected = 0;
|
|
9808
9844
|
this.chatMessageAttachments = [];
|
|
9809
9845
|
}
|
|
9846
|
+
Object.defineProperty(CommentFieldComponent.prototype, "source", {
|
|
9847
|
+
get: function () {
|
|
9848
|
+
return this._source;
|
|
9849
|
+
},
|
|
9850
|
+
set: function (value) {
|
|
9851
|
+
var _this = this;
|
|
9852
|
+
var _a;
|
|
9853
|
+
if (this._source) {
|
|
9854
|
+
(_a = this._subs) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
9855
|
+
this._source = null;
|
|
9856
|
+
}
|
|
9857
|
+
this._source = value;
|
|
9858
|
+
this._subs = new rxjs.Subscription();
|
|
9859
|
+
if (this._source) {
|
|
9860
|
+
setTimeout(function () {
|
|
9861
|
+
if (_this._source.connectionStateChanged) {
|
|
9862
|
+
_this._subs.add(_this._source.connectionStateChanged.subscribe(function (state) {
|
|
9863
|
+
if (state === 'lost') {
|
|
9864
|
+
_this.transientMessage = "Reconnecting...";
|
|
9865
|
+
}
|
|
9866
|
+
else if (state === 'restored') {
|
|
9867
|
+
_this.transientMessage = undefined;
|
|
9868
|
+
}
|
|
9869
|
+
else if (state === 'connecting') {
|
|
9870
|
+
_this.transientMessage = "Connecting...";
|
|
9871
|
+
}
|
|
9872
|
+
}));
|
|
9873
|
+
}
|
|
9874
|
+
});
|
|
9875
|
+
}
|
|
9876
|
+
},
|
|
9877
|
+
enumerable: false,
|
|
9878
|
+
configurable: true
|
|
9879
|
+
});
|
|
9810
9880
|
Object.defineProperty(CommentFieldComponent.prototype, "text", {
|
|
9811
9881
|
get: function () {
|
|
9812
9882
|
return this._text;
|
|
@@ -9988,13 +10058,17 @@
|
|
|
9988
10058
|
configurable: true
|
|
9989
10059
|
});
|
|
9990
10060
|
CommentFieldComponent.prototype.ngAfterViewInit = function () {
|
|
9991
|
-
|
|
9992
|
-
|
|
10061
|
+
if (typeof window !== 'undefined') {
|
|
10062
|
+
var root = document.body.querySelector('[ng-version]') || document.body;
|
|
10063
|
+
root.appendChild(this.autocompleteEl.nativeElement);
|
|
10064
|
+
}
|
|
9993
10065
|
};
|
|
9994
10066
|
CommentFieldComponent.prototype.sendPermissionDenied = function (message) {
|
|
9995
10067
|
this._permissionDeniedError.next(message);
|
|
9996
10068
|
};
|
|
9997
10069
|
CommentFieldComponent.prototype.showAutoComplete = function (options) {
|
|
10070
|
+
if (typeof window === 'undefined')
|
|
10071
|
+
return;
|
|
9998
10072
|
this.autoCompleteSelected = 0;
|
|
9999
10073
|
this.autocompleteOptions = options;
|
|
10000
10074
|
var pos = this.autocompleteContainerEl.nativeElement.getBoundingClientRect();
|
|
@@ -10025,7 +10099,7 @@
|
|
|
10025
10099
|
}, 5 * 1000);
|
|
10026
10100
|
}, 100);
|
|
10027
10101
|
// On mobile, just show an alert dialog
|
|
10028
|
-
if (window.innerWidth < 430)
|
|
10102
|
+
if (typeof window !== 'undefined' && window.innerWidth < 430)
|
|
10029
10103
|
alert(message);
|
|
10030
10104
|
};
|
|
10031
10105
|
Object.defineProperty(CommentFieldComponent.prototype, "isValidMessage", {
|
|
@@ -10216,7 +10290,7 @@
|
|
|
10216
10290
|
message = {
|
|
10217
10291
|
user: this.user,
|
|
10218
10292
|
sentAt: Date.now(),
|
|
10219
|
-
url: location.href,
|
|
10293
|
+
url: typeof window !== 'undefined' ? location.href : undefined,
|
|
10220
10294
|
likes: 0,
|
|
10221
10295
|
message: text,
|
|
10222
10296
|
attachments: this.chatMessageAttachments.filter(function (x) { return x.url; })
|
|
@@ -10270,8 +10344,8 @@
|
|
|
10270
10344
|
CommentFieldComponent.decorators = [
|
|
10271
10345
|
{ type: core.Component, args: [{
|
|
10272
10346
|
selector: 'banta-comment-field',
|
|
10273
|
-
template: "<form class=\"new-message\" (submit)=\"sendMessage()\">\r\n <div class=\"avatar-container\">\r\n <a href=\"javascript:;\"\r\n class=\"avatar\"\r\n (click)=\"showEditAvatar()\"\r\n [style.background-image]=\"'url(' + userAvatarUrl + ')'\"\r\n ></a>\r\n </div>\r\n <div class=\"text-container\">\r\n <div class=\"field-container\">\r\n <div class=\"field-row\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{label}}</mat-label>\r\n <textarea\r\n #textarea\r\n name=\"message\"\r\n [placeholder]=\"placeholder\"\r\n matInput\r\n cdkTextareaAutosize\r\n [maxlength]=\"maxLength\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"sending\"\r\n [(ngModel)]=\"text\"></textarea>\r\n </mat-form-field>\r\n <div class=\"options-line\">\r\n <mat-spinner *ngIf=\"sending\" class=\"icon loading\" diameter=\"18\" strokeWidth=\"2\"></mat-spinner>\r\n <div *ngIf=\"sendError\" class=\"error-message\" [class.expanded]=\"expandError\" [matTooltip]=\"sendError.message\" (click)=\"alertError()\">\r\n <mat-icon *ngIf=\"sendError\">error</mat-icon>\r\n {{sendError.message}}\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"custom\">\r\n <ng-content></ng-content>\r\n </div>\r\n <banta-attachment-button \r\n *ngIf=\"allowAttachments\"\r\n (addedAttachment)=\"addedAttachment($event)\"\r\n (attachmentError)=\"attachmentError($event)\"\r\n ></banta-attachment-button>\r\n <emoji-selector-button (selected)=\"insertEmoji($event)\"></emoji-selector-button>\r\n </div>\r\n \r\n </div>\r\n <div #autocompleteContainer class=\"autocomplete-container\">\r\n <div #autocomplete class=\"autocomplete\" [class.visible]=\"autocompleteVisible\">\r\n\r\n <div>\r\n <strong>{{completionPrefix}}</strong>...\r\n </div>\r\n <a\r\n mat-button\r\n *ngFor=\"let option of autocompleteOptions; index as index\"\r\n (click)=\"activateAutoComplete(option)\"\r\n [class.active]=\"autoCompleteSelected === index\"\r\n >\r\n {{option.label}}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <banta-attachments \r\n [attachments]=\"chatMessageAttachments\"\r\n [editing]=\"true\"\r\n (remove)=\"removeAttachment($event)\"\r\n ></banta-attachments>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <ng-container *ngIf=\"!user\">\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"showSignIn()\"\r\n >{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"user\">\r\n <button\r\n mat-raised-button\r\n class=\"send\"\r\n color=\"primary\"\r\n [disabled]=\"!sendButtonEnabled\"\r\n >\r\n <ng-container *ngIf=\"canComment\">\r\n <mat-icon *ngIf=\"!sending\">chevron_right</mat-icon>\r\n <mat-spinner *ngIf=\"sending\" class=\"icon\" diameter=\"18\" strokeWidth=\"2\"></mat-spinner>\r\n </ng-container>\r\n <span class=\"label\">\r\n <ng-container *ngIf=\"!canComment\">\r\n {{permissionDeniedLabel}}\r\n </ng-container>\r\n <ng-container *ngIf=\"canComment\">\r\n <ng-container *ngIf=\"!sending\">\r\n {{sendLabel}}\r\n </ng-container>\r\n <ng-container *ngIf=\"sending\">\r\n {{sendingLabel}}\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n</form>",
|
|
10274
|
-
styles: ["@-webkit-keyframes comment-field-appear{0%{transform:translateY(128px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes comment-field-appear{0%{transform:translateY(128px);opacity:0}to{transform:translate(0);opacity:1}}:host{margin:0 2em 0 0;display:block;-webkit-animation-name:comment-field-appear;animation-name:comment-field-appear;-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-delay:.4s;animation-delay:.4s;-webkit-animation-fill-mode:both;animation-fill-mode:both;position:relative;z-index:20}.avatar-container{width:calc(48px + 1.75em);display:flex;justify-content:flex-end;flex-shrink:0}.avatar-container .avatar{width:48px;height:48px;background:#000;border-radius:100%;background-size:cover;background-repeat:no-repeat;background-position:50%;margin-top:.75em;margin-right:.75em}form{display:flex;padding:.5em;align-items:center}form .text-container{position:relative;display:flex;flex-grow:1;min-width:0}form .text-container textarea{font-size:14pt;width:100%}form .text-container textarea[disabled]{opacity:.5}form .text-container mat-spinner.loading{position:absolute;left:.5em;bottom:.5em}form .text-container .options-line{display:flex;align-items:center}form .text-container .options-line>*{flex-shrink:0}form .text-container .options-line .error-message{left:.5em;bottom:.5em;color:#683333;overflow-x:hidden;max-width:1.5em;white-space:nowrap;transition:max-width 2s ease-in-out;text-overflow:ellipsis;overflow:hidden;flex-shrink:1}form .text-container .options-line .error-message.expanded,form .text-container .options-line .error-message:hover{max-width:100%}form .text-container .options-line .error-message mat-icon{vertical-align:middle}form input[type=text]{background:#000;color:#fff;border:1px solid #333;width:100%;height:1em}form .actions{margin-left:1em;flex-shrink:0}form button{display:block;margin:0 0 0 auto}form.new-message{display:flex;align-items:flex-start;min-width:0}form.new-message .field-container{flex-grow:1;display:flex;flex-direction:column;min-width:0}form.new-message mat-form-field{width:100%}form.new-message mat-form-field ::ng-deep .mat-form-field-wrapper{padding-bottom:0}form.new-message button{margin:1.25em 0 0}button.send{min-width:9em}textarea{max-height:7em}.autocomplete-container{width:calc(100% - 2em);position:relative;pointer-events:none;top:-2em}.autocomplete{visibility:hidden;pointer-events:none;position:absolute;background:#333;padding:.5em;display:flex;flex-direction:column;z-index:100}.autocomplete.visible{visibility:visible;pointer-events:auto}.autocomplete a{width:100%;text-align:left}.autocomplete a.active{background:#555}
|
|
10347
|
+
template: "<form class=\"new-message\" (submit)=\"sendMessage()\">\r\n <div class=\"avatar-container\">\r\n <a href=\"javascript:;\"\r\n class=\"avatar\"\r\n (click)=\"showEditAvatar()\"\r\n [style.background-image]=\"'url(' + userAvatarUrl + ')'\"\r\n ></a>\r\n </div>\r\n <div class=\"text-container\">\r\n <div class=\"field-container\">\r\n <div class=\"field-row\">\r\n <mat-form-field class=\"message-field\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{label}}</mat-label>\r\n <textarea\r\n #textarea\r\n name=\"message\"\r\n [placeholder]=\"placeholder\"\r\n matInput\r\n cdkTextareaAutosize\r\n [maxlength]=\"maxLength\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"sending\"\r\n [(ngModel)]=\"text\"></textarea>\r\n </mat-form-field>\r\n <div class=\"options-line\">\r\n <mat-spinner *ngIf=\"sending\" class=\"icon loading\" diameter=\"18\" strokeWidth=\"2\"></mat-spinner>\r\n <div *ngIf=\"sendError\" class=\"error-message\" [class.expanded]=\"expandError\" [matTooltip]=\"sendError.message\" (click)=\"alertError()\">\r\n <mat-icon *ngIf=\"sendError\">error</mat-icon>\r\n {{sendError.message}}\r\n </div>\r\n <div *ngIf=\"!sendError && transientMessage\" class=\"transient-message\" [class.expanded]=\"true\" [matTooltip]=\"transientMessage\" (click)=\"alertError()\">\r\n <mat-spinner [inline]=\"true\" [diameter]=\"15\"></mat-spinner>\r\n {{transientMessage}}\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div class=\"custom\">\r\n <ng-content></ng-content>\r\n </div>\r\n <banta-attachment-button \r\n *ngIf=\"allowAttachments\"\r\n (addedAttachment)=\"addedAttachment($event)\"\r\n (attachmentError)=\"attachmentError($event)\"\r\n ></banta-attachment-button>\r\n <emoji-selector-button (selected)=\"insertEmoji($event)\"></emoji-selector-button>\r\n </div>\r\n \r\n </div>\r\n <div #autocompleteContainer class=\"autocomplete-container\">\r\n <div #autocomplete class=\"autocomplete\" [class.visible]=\"autocompleteVisible\">\r\n\r\n <div>\r\n <strong>{{completionPrefix}}</strong>...\r\n </div>\r\n <a\r\n mat-button\r\n *ngFor=\"let option of autocompleteOptions; index as index\"\r\n (click)=\"activateAutoComplete(option)\"\r\n [class.active]=\"autoCompleteSelected === index\"\r\n >\r\n {{option.label}}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <banta-attachments \r\n [attachments]=\"chatMessageAttachments\"\r\n [editing]=\"true\"\r\n (remove)=\"removeAttachment($event)\"\r\n ></banta-attachments>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <ng-container *ngIf=\"!user\">\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"showSignIn()\"\r\n >{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"user\">\r\n <button\r\n mat-raised-button\r\n class=\"send\"\r\n color=\"primary\"\r\n [disabled]=\"!sendButtonEnabled\"\r\n >\r\n <ng-container *ngIf=\"canComment\">\r\n <mat-icon *ngIf=\"!sending\">chevron_right</mat-icon>\r\n <mat-spinner *ngIf=\"sending\" class=\"icon\" diameter=\"18\" strokeWidth=\"2\"></mat-spinner>\r\n </ng-container>\r\n <span class=\"label\">\r\n <ng-container *ngIf=\"!canComment\">\r\n {{permissionDeniedLabel}}\r\n </ng-container>\r\n <ng-container *ngIf=\"canComment\">\r\n <ng-container *ngIf=\"!sending\">\r\n {{sendLabel}}\r\n </ng-container>\r\n <ng-container *ngIf=\"sending\">\r\n {{sendingLabel}}\r\n </ng-container>\r\n </ng-container>\r\n </span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n</form>",
|
|
10348
|
+
styles: ["@-webkit-keyframes comment-field-appear{0%{transform:translateY(128px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes comment-field-appear{0%{transform:translateY(128px);opacity:0}to{transform:translate(0);opacity:1}}:host{margin:0 2em 0 0;display:block;-webkit-animation-name:comment-field-appear;animation-name:comment-field-appear;-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-delay:.4s;animation-delay:.4s;-webkit-animation-fill-mode:both;animation-fill-mode:both;position:relative;z-index:20}.avatar-container{width:calc(48px + 1.75em);display:flex;justify-content:flex-end;flex-shrink:0}.avatar-container .avatar{width:48px;height:48px;background:#000;border-radius:100%;background-size:cover;background-repeat:no-repeat;background-position:50%;margin-top:.75em;margin-right:.75em}form{display:flex;padding:.5em;align-items:center}form .text-container{position:relative;display:flex;flex-grow:1;min-width:0}form .text-container textarea{font-size:14pt;width:100%}form .text-container textarea[disabled]{opacity:.5}form .text-container mat-spinner.loading{position:absolute;left:.5em;bottom:.5em}form .text-container .options-line{display:flex;align-items:center}form .text-container .options-line>*{flex-shrink:0}form .text-container .options-line .transient-message{display:flex;flex-direction:row;align-items:center;gap:.5em}form .text-container .options-line .error-message{left:.5em;bottom:.5em;color:#683333;overflow-x:hidden;max-width:1.5em;white-space:nowrap;transition:max-width 2s ease-in-out;text-overflow:ellipsis;overflow:hidden;flex-shrink:1}form .text-container .options-line .error-message.expanded,form .text-container .options-line .error-message:hover{max-width:100%}form .text-container .options-line .error-message mat-icon{vertical-align:middle}form input[type=text]{background:#000;color:#fff;border:1px solid #333;width:100%;height:1em}form .actions{margin-left:1em;flex-shrink:0}form button{display:block;margin:0 0 0 auto}form.new-message{display:flex;align-items:flex-start;min-width:0}form.new-message .field-container{flex-grow:1;display:flex;flex-direction:column;min-width:0}form.new-message mat-form-field{width:100%}form.new-message mat-form-field ::ng-deep .mat-form-field-wrapper{padding-bottom:0}form.new-message button{margin:1.25em 0 0}button.send{min-width:9em}textarea{max-height:7em}.autocomplete-container{width:calc(100% - 2em);position:relative;pointer-events:none;top:-2em}.autocomplete{visibility:hidden;pointer-events:none;position:absolute;background:#333;padding:.5em;display:flex;flex-direction:column;z-index:100}.autocomplete.visible{visibility:visible;pointer-events:auto}.autocomplete a{width:100%;text-align:left}.autocomplete a.active{background:#555}.image-attachments-container{display:flex;gap:20px}.image-attachments-container .image-attachment{width:300px;position:relative;text-align:center}.image-attachments-container .image-attachment.with-border{outline:1px solid #333;padding:1em 0}.image-attachments-container .image-attachment mat-spinner{display:block;margin:0 auto .5em;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.image-attachments-container .image-attachment mat-icon.error{display:block;font-size:48px;width:48px;height:48px;margin:0 auto .5em}.image-attachments-container .image-attachment .error{color:#b76363}.image-attachments-container .image-attachment img{width:300px;border-radius:10px}.image-attachments-container .image-attachment .remove-img{position:absolute;right:10px;top:10px;margin:0}.card-attachment,.field-row{position:relative}.card-attachment a{display:flex;align-items:flex-start;gap:1em;width:100%;border:1px solid #666;border-radius:4px;padding:2em;box-sizing:border-box;background-color:#191919}.card-attachment a img{width:300px;aspect-ratio:16/9;-o-object-fit:cover;object-fit:cover;border-radius:10px}.card-attachment a h1{margin:0;font-size:30px}.card-attachment .remove-img{position:absolute;right:10px;top:10px;margin:0}@media (max-width:500px){:host{margin:0}.avatar-container{width:auto;flex-shrink:0}.avatar-container .avatar{width:32px;height:32px;margin-top:1.5em}:host.can-comment button.send .label,:host:not(.can-comment) .text-container,:host:not(.can-comment) mat-form-field.message-field{display:none}button.send{min-width:auto;margin-top:1.5em}}:host-context(.banta-mobile) :host{margin:0}:host-context(.banta-mobile) .avatar-container{width:auto;flex-shrink:0}:host-context(.banta-mobile) .avatar-container .avatar{width:32px;height:32px;margin-top:1.5em}:host-context(.banta-mobile) :host.can-comment button.send .label,:host-context(.banta-mobile) :host:not(.can-comment) .text-container,:host-context(.banta-mobile) :host:not(.can-comment) mat-form-field.message-field{display:none}:host-context(.banta-mobile) button.send{min-width:auto;margin-top:1.5em}"]
|
|
10275
10349
|
},] }
|
|
10276
10350
|
];
|
|
10277
10351
|
CommentFieldComponent.ctorParameters = function () { return [
|
|
@@ -10280,10 +10354,11 @@
|
|
|
10280
10354
|
CommentFieldComponent.propDecorators = {
|
|
10281
10355
|
source: [{ type: core.Input }],
|
|
10282
10356
|
user: [{ type: core.Input }],
|
|
10283
|
-
canComment: [{ type: core.Input }],
|
|
10357
|
+
canComment: [{ type: core.HostBinding, args: ['class.can-comment',] }, { type: core.Input }],
|
|
10284
10358
|
allowAttachments: [{ type: core.Input }],
|
|
10285
10359
|
signInSelected: [{ type: core.Output }],
|
|
10286
10360
|
editAvatarSelected: [{ type: core.Output }],
|
|
10361
|
+
transientMessage: [{ type: core.Input }],
|
|
10287
10362
|
sendLabel: [{ type: core.Input }],
|
|
10288
10363
|
sendingLabel: [{ type: core.Input }],
|
|
10289
10364
|
label: [{ type: core.Input }],
|
|
@@ -10479,7 +10554,8 @@
|
|
|
10479
10554
|
_this.parentIdentifier = parentIdentifier;
|
|
10480
10555
|
_this.sortOrder = sortOrder;
|
|
10481
10556
|
_this.subscription = new rxjs.Subscription();
|
|
10482
|
-
_this.
|
|
10557
|
+
_this._state = 'connecting';
|
|
10558
|
+
_this._connectionStateChanged = new rxjs.Subject();
|
|
10483
10559
|
_this.messageMap = new Map();
|
|
10484
10560
|
_this._messageReceived = new rxjs.Subject();
|
|
10485
10561
|
_this._messageUpdated = new rxjs.Subject();
|
|
@@ -10488,6 +10564,25 @@
|
|
|
10488
10564
|
_this.ready = new Promise(function (resolve) { return _this.markReady = resolve; });
|
|
10489
10565
|
return _this;
|
|
10490
10566
|
}
|
|
10567
|
+
Object.defineProperty(ChatSource.prototype, "state", {
|
|
10568
|
+
get: function () {
|
|
10569
|
+
return this._state;
|
|
10570
|
+
},
|
|
10571
|
+
set: function (value) {
|
|
10572
|
+
var _this = this;
|
|
10573
|
+
this._state = value;
|
|
10574
|
+
setTimeout(function () { return _this._connectionStateChanged.next(_this._state); });
|
|
10575
|
+
},
|
|
10576
|
+
enumerable: false,
|
|
10577
|
+
configurable: true
|
|
10578
|
+
});
|
|
10579
|
+
Object.defineProperty(ChatSource.prototype, "connectionStateChanged", {
|
|
10580
|
+
get: function () {
|
|
10581
|
+
return this._connectionStateChanged.asObservable();
|
|
10582
|
+
},
|
|
10583
|
+
enumerable: false,
|
|
10584
|
+
configurable: true
|
|
10585
|
+
});
|
|
10491
10586
|
ChatSource.prototype.bind = function (socket) {
|
|
10492
10587
|
var _super = Object.create(null, {
|
|
10493
10588
|
bind: { get: function () { return _super_1.prototype.bind; } }
|
|
@@ -10558,14 +10653,36 @@
|
|
|
10558
10653
|
});
|
|
10559
10654
|
});
|
|
10560
10655
|
};
|
|
10561
|
-
ChatSource.prototype.
|
|
10656
|
+
ChatSource.prototype.ensureConnection = function (errorMessage) {
|
|
10562
10657
|
return __awaiter(this, void 0, void 0, function () {
|
|
10658
|
+
var reason;
|
|
10563
10659
|
return __generator(this, function (_b) {
|
|
10564
|
-
|
|
10660
|
+
reason = "Connection to chat services is not currently available.";
|
|
10661
|
+
if (this.state !== 'connected' && this.state !== 'restored') {
|
|
10662
|
+
if (errorMessage)
|
|
10663
|
+
throw new Error(errorMessage + ": " + reason);
|
|
10664
|
+
else
|
|
10665
|
+
throw new Error("" + reason);
|
|
10666
|
+
}
|
|
10565
10667
|
return [2 /*return*/];
|
|
10566
10668
|
});
|
|
10567
10669
|
});
|
|
10568
10670
|
};
|
|
10671
|
+
ChatSource.prototype.editMessage = function (messageId, text) {
|
|
10672
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
10673
|
+
return __generator(this, function (_b) {
|
|
10674
|
+
switch (_b.label) {
|
|
10675
|
+
case 0: return [4 /*yield*/, this.ensureConnection()];
|
|
10676
|
+
case 1:
|
|
10677
|
+
_b.sent();
|
|
10678
|
+
return [4 /*yield*/, this.peer.editMessage(messageId, text)];
|
|
10679
|
+
case 2:
|
|
10680
|
+
_b.sent();
|
|
10681
|
+
return [2 /*return*/];
|
|
10682
|
+
}
|
|
10683
|
+
});
|
|
10684
|
+
});
|
|
10685
|
+
};
|
|
10569
10686
|
ChatSource.prototype.subscribeToTopic = function () {
|
|
10570
10687
|
return __awaiter(this, void 0, void 0, function () {
|
|
10571
10688
|
return __generator(this, function (_b) {
|
|
@@ -10643,8 +10760,11 @@
|
|
|
10643
10760
|
return __awaiter(this, void 0, void 0, function () {
|
|
10644
10761
|
return __generator(this, function (_b) {
|
|
10645
10762
|
switch (_b.label) {
|
|
10646
|
-
case 0: return [4 /*yield*/, this.
|
|
10647
|
-
case 1:
|
|
10763
|
+
case 0: return [4 /*yield*/, this.ensureConnection()];
|
|
10764
|
+
case 1:
|
|
10765
|
+
_b.sent();
|
|
10766
|
+
return [4 /*yield*/, this.peer.sendMessage(message)];
|
|
10767
|
+
case 2: return [2 /*return*/, _b.sent()];
|
|
10648
10768
|
}
|
|
10649
10769
|
});
|
|
10650
10770
|
});
|
|
@@ -10668,8 +10788,11 @@
|
|
|
10668
10788
|
case 0:
|
|
10669
10789
|
if (this.messageMap.has(id))
|
|
10670
10790
|
return [2 /*return*/, this.messageMap.get(id)];
|
|
10671
|
-
return [4 /*yield*/, this.
|
|
10791
|
+
return [4 /*yield*/, this.ensureConnection("Could not get message")];
|
|
10672
10792
|
case 1:
|
|
10793
|
+
_b.sent();
|
|
10794
|
+
return [4 /*yield*/, this.peer.getMessage(id)];
|
|
10795
|
+
case 2:
|
|
10673
10796
|
message = _b.sent();
|
|
10674
10797
|
this.messageMap.set(id, message);
|
|
10675
10798
|
return [2 /*return*/, message];
|
|
@@ -10691,8 +10814,11 @@
|
|
|
10691
10814
|
return __awaiter(this, void 0, void 0, function () {
|
|
10692
10815
|
return __generator(this, function (_b) {
|
|
10693
10816
|
switch (_b.label) {
|
|
10694
|
-
case 0: return [4 /*yield*/, this.
|
|
10695
|
-
case 1:
|
|
10817
|
+
case 0: return [4 /*yield*/, this.ensureConnection()];
|
|
10818
|
+
case 1:
|
|
10819
|
+
_b.sent();
|
|
10820
|
+
return [4 /*yield*/, this.peer.likeMessage(messageId)];
|
|
10821
|
+
case 2: return [2 /*return*/, _b.sent()];
|
|
10696
10822
|
}
|
|
10697
10823
|
});
|
|
10698
10824
|
});
|
|
@@ -10701,8 +10827,11 @@
|
|
|
10701
10827
|
return __awaiter(this, void 0, void 0, function () {
|
|
10702
10828
|
return __generator(this, function (_b) {
|
|
10703
10829
|
switch (_b.label) {
|
|
10704
|
-
case 0: return [4 /*yield*/, this.
|
|
10705
|
-
case 1:
|
|
10830
|
+
case 0: return [4 /*yield*/, this.ensureConnection()];
|
|
10831
|
+
case 1:
|
|
10832
|
+
_b.sent();
|
|
10833
|
+
return [4 /*yield*/, this.peer.unlikeMessage(messageId)];
|
|
10834
|
+
case 2: return [2 /*return*/, _b.sent()];
|
|
10706
10835
|
}
|
|
10707
10836
|
});
|
|
10708
10837
|
});
|
|
@@ -10711,8 +10840,11 @@
|
|
|
10711
10840
|
return __awaiter(this, void 0, void 0, function () {
|
|
10712
10841
|
return __generator(this, function (_b) {
|
|
10713
10842
|
switch (_b.label) {
|
|
10714
|
-
case 0: return [4 /*yield*/, this.
|
|
10715
|
-
case 1:
|
|
10843
|
+
case 0: return [4 /*yield*/, this.ensureConnection()];
|
|
10844
|
+
case 1:
|
|
10845
|
+
_b.sent();
|
|
10846
|
+
return [4 /*yield*/, this.peer.deleteMessage(messageId)];
|
|
10847
|
+
case 2: return [2 /*return*/, _b.sent()];
|
|
10716
10848
|
}
|
|
10717
10849
|
});
|
|
10718
10850
|
});
|