@banta/sdk 4.5.1 → 4.5.2
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 +108 -42
- 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-source.js +15 -12
- package/esm2015/lib/comments/comment-view/comment-view.component.js +59 -23
- package/fesm2015/banta-sdk.js +72 -33
- package/fesm2015/banta-sdk.js.map +1 -1
- package/lib/chat-source.d.ts +3 -1
- package/lib/comments/comment-view/comment-view.component.d.ts +2 -0
- package/package.json +1 -1
package/bundles/banta-sdk.umd.js
CHANGED
|
@@ -8758,13 +8758,14 @@
|
|
|
8758
8758
|
CommentViewComponent.prototype.getInitialMessages = function () {
|
|
8759
8759
|
return __awaiter(this, void 0, void 0, function () {
|
|
8760
8760
|
var messages;
|
|
8761
|
-
return __generator(this, function (
|
|
8762
|
-
switch (
|
|
8761
|
+
return __generator(this, function (_c) {
|
|
8762
|
+
switch (_c.label) {
|
|
8763
8763
|
case 0: return [4 /*yield*/, this._source.getExistingMessages()];
|
|
8764
8764
|
case 1:
|
|
8765
|
-
messages = (
|
|
8765
|
+
messages = (_c.sent());
|
|
8766
8766
|
messages.forEach(function (m) { var _a; return (_a = m.transientState) !== null && _a !== void 0 ? _a : (m.transientState = {}); });
|
|
8767
|
-
this.messages = messages;
|
|
8767
|
+
this.messages = this.newestLast ? messages.slice().reverse() : messages;
|
|
8768
|
+
this.sortMessages();
|
|
8768
8769
|
return [2 /*return*/];
|
|
8769
8770
|
}
|
|
8770
8771
|
});
|
|
@@ -8775,14 +8776,18 @@
|
|
|
8775
8776
|
};
|
|
8776
8777
|
CommentViewComponent.prototype.showNew = function () {
|
|
8777
8778
|
return __awaiter(this, void 0, void 0, function () {
|
|
8778
|
-
var overflow;
|
|
8779
|
-
return __generator(this, function (
|
|
8780
|
-
|
|
8781
|
-
|
|
8779
|
+
var naturalOrder, overflow;
|
|
8780
|
+
return __generator(this, function (_c) {
|
|
8781
|
+
naturalOrder = common$1.CommentsOrder.NEWEST;
|
|
8782
|
+
if (this.source && this.source.sortOrder !== naturalOrder) {
|
|
8783
|
+
this.sortOrderChanged.next(naturalOrder);
|
|
8782
8784
|
return [2 /*return*/];
|
|
8783
8785
|
}
|
|
8784
8786
|
this.isViewingMore = false;
|
|
8785
|
-
|
|
8787
|
+
if (this.newestLast)
|
|
8788
|
+
this.messages = this.messages.concat(this.newMessages.splice(0, this.newMessages.length));
|
|
8789
|
+
else
|
|
8790
|
+
this.messages = this.newMessages.splice(0, this.newMessages.length).concat(this.messages);
|
|
8786
8791
|
overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);
|
|
8787
8792
|
this.olderMessages = overflow.concat(this.olderMessages);
|
|
8788
8793
|
this.olderMessages.splice(this.maxMessages - this.maxVisibleMessages, this.olderMessages.length);
|
|
@@ -8791,38 +8796,45 @@
|
|
|
8791
8796
|
});
|
|
8792
8797
|
};
|
|
8793
8798
|
CommentViewComponent.prototype.showMore = function () {
|
|
8799
|
+
var _a, _b;
|
|
8794
8800
|
return __awaiter(this, void 0, void 0, function () {
|
|
8795
8801
|
var nextPageSize, lastMessage, messages;
|
|
8796
|
-
return __generator(this, function (
|
|
8797
|
-
switch (
|
|
8802
|
+
return __generator(this, function (_c) {
|
|
8803
|
+
switch (_c.label) {
|
|
8798
8804
|
case 0:
|
|
8799
8805
|
this.isViewingMore = true;
|
|
8800
|
-
if (
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8804
|
-
case 1:
|
|
8806
|
+
if (this.olderMessages.length > 0) {
|
|
8807
|
+
this.isLoadingMore = false;
|
|
8808
|
+
this.messages = this.messages.concat(this.olderMessages.splice(0, 50));
|
|
8809
|
+
}
|
|
8805
8810
|
this.isLoadingMore = true;
|
|
8806
8811
|
nextPageSize = 20;
|
|
8807
|
-
|
|
8808
|
-
|
|
8812
|
+
if (this.newestLast) {
|
|
8813
|
+
lastMessage = (_a = this.olderMessages[0]) !== null && _a !== void 0 ? _a : this.messages[0];
|
|
8814
|
+
}
|
|
8815
|
+
else {
|
|
8816
|
+
lastMessage = (_b = this.olderMessages[this.olderMessages.length - 1]) !== null && _b !== void 0 ? _b : this.messages[this.messages.length - 1];
|
|
8817
|
+
}
|
|
8818
|
+
console.dir(lastMessage);
|
|
8809
8819
|
if (!lastMessage) {
|
|
8810
8820
|
this.isLoadingMore = false;
|
|
8811
8821
|
this.hasMore = false;
|
|
8812
8822
|
return [2 /*return*/];
|
|
8813
8823
|
}
|
|
8814
8824
|
return [4 /*yield*/, this.source.loadAfter(lastMessage, nextPageSize)];
|
|
8815
|
-
case
|
|
8816
|
-
messages =
|
|
8825
|
+
case 1:
|
|
8826
|
+
messages = _c.sent();
|
|
8817
8827
|
messages.forEach(function (m) { var _a; return (_a = m.transientState) !== null && _a !== void 0 ? _a : (m.transientState = {}); });
|
|
8818
|
-
|
|
8828
|
+
if (this.newestLast)
|
|
8829
|
+
this.messages = messages.concat(this.messages);
|
|
8830
|
+
else
|
|
8831
|
+
this.messages = this.messages.concat(messages);
|
|
8819
8832
|
this.isLoadingMore = false;
|
|
8820
8833
|
if (messages.length === 0) {
|
|
8821
8834
|
console.log("Reached the end of the list.");
|
|
8822
8835
|
this.hasMore = false;
|
|
8823
8836
|
}
|
|
8824
|
-
|
|
8825
|
-
case 3: return [2 /*return*/];
|
|
8837
|
+
return [2 /*return*/];
|
|
8826
8838
|
}
|
|
8827
8839
|
});
|
|
8828
8840
|
});
|
|
@@ -8833,11 +8845,11 @@
|
|
|
8833
8845
|
(_a = message.transientState) !== null && _a !== void 0 ? _a : (message.transientState = {});
|
|
8834
8846
|
var destination = this.messages;
|
|
8835
8847
|
var bucket = this.olderMessages;
|
|
8848
|
+
var newestLast = this.newestLast;
|
|
8836
8849
|
if (this.isViewingMore) {
|
|
8837
8850
|
destination = this.newMessages;
|
|
8838
8851
|
bucket = null;
|
|
8839
8852
|
}
|
|
8840
|
-
var newestLast = this.newestLast;
|
|
8841
8853
|
if (newestLast) {
|
|
8842
8854
|
destination.push(message);
|
|
8843
8855
|
var overflow = destination.splice(this.maxVisibleMessages, destination.length);
|
|
@@ -8850,6 +8862,51 @@
|
|
|
8850
8862
|
}
|
|
8851
8863
|
if ((bucket === null || bucket === void 0 ? void 0 : bucket.length) > 0)
|
|
8852
8864
|
this.hasMore = true;
|
|
8865
|
+
message.pagingCursor = String(this.incrementPagingCursors());
|
|
8866
|
+
this.sortMessages();
|
|
8867
|
+
};
|
|
8868
|
+
CommentViewComponent.prototype.incrementPagingCursors = function () {
|
|
8869
|
+
var e_1, _c, e_2, _d;
|
|
8870
|
+
if (this.source.sortOrder !== common$1.CommentsOrder.NEWEST)
|
|
8871
|
+
return;
|
|
8872
|
+
var maxPagingCursor = 0;
|
|
8873
|
+
try {
|
|
8874
|
+
for (var _e = __values([this.messages, this.olderMessages, this.newMessages]), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
8875
|
+
var group = _f.value;
|
|
8876
|
+
try {
|
|
8877
|
+
for (var group_1 = (e_2 = void 0, __values(group)), group_1_1 = group_1.next(); !group_1_1.done; group_1_1 = group_1.next()) {
|
|
8878
|
+
var message = group_1_1.value;
|
|
8879
|
+
if (message.pagingCursor) {
|
|
8880
|
+
var pagingCursor = Number(message.pagingCursor) + 1;
|
|
8881
|
+
if (pagingCursor > maxPagingCursor)
|
|
8882
|
+
maxPagingCursor = pagingCursor;
|
|
8883
|
+
message.pagingCursor = String(pagingCursor);
|
|
8884
|
+
}
|
|
8885
|
+
}
|
|
8886
|
+
}
|
|
8887
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
8888
|
+
finally {
|
|
8889
|
+
try {
|
|
8890
|
+
if (group_1_1 && !group_1_1.done && (_d = group_1.return)) _d.call(group_1);
|
|
8891
|
+
}
|
|
8892
|
+
finally { if (e_2) throw e_2.error; }
|
|
8893
|
+
}
|
|
8894
|
+
}
|
|
8895
|
+
}
|
|
8896
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
8897
|
+
finally {
|
|
8898
|
+
try {
|
|
8899
|
+
if (_f && !_f.done && (_c = _e.return)) _c.call(_e);
|
|
8900
|
+
}
|
|
8901
|
+
finally { if (e_1) throw e_1.error; }
|
|
8902
|
+
}
|
|
8903
|
+
return maxPagingCursor;
|
|
8904
|
+
};
|
|
8905
|
+
CommentViewComponent.prototype.sortMessages = function () {
|
|
8906
|
+
var _this = this;
|
|
8907
|
+
this.messages.sort(function (a, b) { return (a.sentAt - b.sentAt) * (_this.newestLast ? 1 : -1); });
|
|
8908
|
+
this.olderMessages.sort(function (a, b) { return (a.sentAt - b.sentAt) * (_this.newestLast ? 1 : -1); });
|
|
8909
|
+
this.newMessages.sort(function (a, b) { return (a.sentAt - b.sentAt) * (_this.newestLast ? 1 : -1); });
|
|
8853
8910
|
};
|
|
8854
8911
|
CommentViewComponent.prototype.messageReceived = function (message) {
|
|
8855
8912
|
var _this = this;
|
|
@@ -8889,7 +8946,7 @@
|
|
|
8889
8946
|
CommentViewComponent.decorators = [
|
|
8890
8947
|
{ type: core.Component, args: [{
|
|
8891
8948
|
selector: 'banta-comment-view',
|
|
8892
|
-
template: "<div class=\"message-container\">\r\n <ng-content select=\"[data-before]\"></ng-content>\r\n\r\n <a mat-button class=\"nav\" [class.visible]=\"isViewingMore || customSortEnabled\" href=\"javascript:;\" (click)=\"showNew()\">\r\n <mat-icon>file_upload</mat-icon>\r\n New\r\n <ng-container *ngIf=\"newMessages.length >= 1\">\r\n ({{newMessages.length}})\r\n </ng-container>\r\n </a>\r\n\r\n <ng-container *ngIf=\"messages.length === 0\">\r\n <div class=\"empty-state\" *ngIf=\"showEmptyState\">\r\n Be the first to comment!\r\n </div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let message of messages; trackBy: messageIdentity\">\r\n <banta-comment\r\n *ngIf=\"!message.hidden\"\r\n class=\"abbreviated\"\r\n \r\n [customMenuItems]=\"customMenuItems\"\r\n [message]=\"message\"\r\n [mine]=\"currentUser?.id === message.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"allowReplies\"\r\n [editing]=\"message.transientState.editing\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (click)=\"isViewingMore = true\"\r\n (editStarted)=\"startEditing(message)\"\r\n (deleted)=\"deleteMessage(message)\"\r\n (editEnded)=\"message.transientState.editing = false\"\r\n (edited)=\"saveEdit(message, $event)\"\r\n (userSelected)=\"selectMessageUser(message)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(message)\"\r\n (unliked)=\"unlikeMessage(message)\"\r\n (reported)=\"reportMessage(message)\"\r\n (selected)=\"selectMessage(message)\"\r\n (shared)=\"sharedMessage($event)\"\r\n ></banta-comment>\r\n <div class=\"inline-replies-container\" *ngIf=\"selectedMessage === message\">\r\n <ng-content select=\".inline-replies\"></ng-content>\r\n </div>\r\n </ng-container>\r\n\r\n <a mat-button class=\"nav\" [class.visible]=\"hasMore && !isLoadingMore\" href=\"javascript:;\" (click)=\"showMore()\">Show more</a>\r\n\r\n <div class=\"loading-more\" *ngIf=\"isLoadingMore\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n\r\n <!-- <div style=\"color: #666\">\r\n n={{newMessages.length}}, m={{messages.length}}, o={{olderMessages.length}},\r\n v={{maxVisibleMessages}}, M={{maxMessages}}\r\n </div> -->\r\n\r\n <ng-content select=\":not([data-before]):not(.inline-replies)\"></ng-content>\r\n</div>\r\n",
|
|
8949
|
+
template: "<div class=\"message-container\">\r\n <ng-content select=\"[data-before]\"></ng-content>\r\n\r\n <a mat-button class=\"nav\" [class.visible]=\"!newestLast && (isViewingMore || customSortEnabled)\" href=\"javascript:;\" (click)=\"showNew()\">\r\n <mat-icon>file_upload</mat-icon>\r\n New\r\n <ng-container *ngIf=\"newMessages.length >= 1\">\r\n ({{newMessages.length}})\r\n </ng-container>\r\n </a>\r\n <a mat-button class=\"nav\" [class.visible]=\"newestLast && hasMore && !isLoadingMore\" href=\"javascript:;\" (click)=\"showMore()\">Show earlier</a>\r\n\r\n <ng-container *ngIf=\"messages.length === 0\">\r\n <div class=\"empty-state\" *ngIf=\"showEmptyState\">\r\n Be the first to comment!\r\n </div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let message of messages; trackBy: messageIdentity\">\r\n <banta-comment\r\n *ngIf=\"!message.hidden\"\r\n class=\"abbreviated\"\r\n \r\n [customMenuItems]=\"customMenuItems\"\r\n [message]=\"message\"\r\n [mine]=\"currentUser?.id === message.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"allowReplies\"\r\n [editing]=\"message.transientState.editing\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (click)=\"isViewingMore = true\"\r\n (editStarted)=\"startEditing(message)\"\r\n (deleted)=\"deleteMessage(message)\"\r\n (editEnded)=\"message.transientState.editing = false\"\r\n (edited)=\"saveEdit(message, $event)\"\r\n (userSelected)=\"selectMessageUser(message)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(message)\"\r\n (unliked)=\"unlikeMessage(message)\"\r\n (reported)=\"reportMessage(message)\"\r\n (selected)=\"selectMessage(message)\"\r\n (shared)=\"sharedMessage($event)\"\r\n ></banta-comment>\r\n <div class=\"inline-replies-container\" *ngIf=\"selectedMessage === message\">\r\n <ng-content select=\".inline-replies\"></ng-content>\r\n </div>\r\n </ng-container>\r\n\r\n <a mat-button class=\"nav\" [class.visible]=\"newestLast && (isViewingMore || customSortEnabled)\" href=\"javascript:;\" (click)=\"showNew()\">\r\n <mat-icon>file_download</mat-icon>\r\n New\r\n <ng-container *ngIf=\"newMessages.length >= 1\">\r\n ({{newMessages.length}})\r\n </ng-container>\r\n </a>\r\n <a mat-button class=\"nav\" [class.visible]=\"!newestLast && hasMore && !isLoadingMore\" href=\"javascript:;\" (click)=\"showMore()\">Show more</a>\r\n\r\n <div class=\"loading-more\" *ngIf=\"isLoadingMore\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n\r\n <!-- <div style=\"color: #666\">\r\n n={{newMessages.length}}, m={{messages.length}}, o={{olderMessages.length}},\r\n v={{maxVisibleMessages}}, M={{maxMessages}}\r\n </div> -->\r\n\r\n <ng-content select=\":not([data-before]):not(.inline-replies)\"></ng-content>\r\n</div>\r\n",
|
|
8893
8950
|
styles: [":host{flex-grow:1;display:flex;flex-direction:column;opacity:1;transition:opacity .2s ease-in}.message-container{flex-grow:1;overflow-x:hidden;color:#111;background:#fff;padding:.5em 1em 3em .5em;opacity:1;transition:opacity .5s ease-in-out;position:relative}.message-container.no-scroll{height:auto;overflow-y:visible}.message-container.faded{opacity:.25}.message-container .overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:10}:host.fixed-height .message-container{overflow-y:auto}:host-context(.mat-dark-theme) .message-container{color:#fff;background:#111}.empty-state{text-align:center;margin:3em;color:#666}:host-context(.mat-dark-theme) .empty-state{color:#666}a.nav{position:absolute;right:.5em;z-index:10;text-align:center;opacity:0;transition:opacity .4s ease-in-out;pointer-events:none;border-radius:2em;background:#222}a.nav.visible{opacity:1;pointer-events:auto}.loading-more{padding:2em;text-align:center;margin:0 auto;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}@media (max-width:400px){.message-container{padding:0 0 3em}}"]
|
|
8894
8951
|
},] }
|
|
8895
8952
|
];
|
|
@@ -10638,23 +10695,27 @@
|
|
|
10638
10695
|
});
|
|
10639
10696
|
});
|
|
10640
10697
|
};
|
|
10698
|
+
ChatSource.prototype.mapOrUpdateMessages = function (messages) {
|
|
10699
|
+
var _this = this;
|
|
10700
|
+
return messages.map(function (message) { return _this.mapOrUpdateMessage(message); });
|
|
10701
|
+
};
|
|
10702
|
+
ChatSource.prototype.mapOrUpdateMessage = function (message) {
|
|
10703
|
+
var existingMessage = this.messageMap.get(message.id);
|
|
10704
|
+
if (existingMessage)
|
|
10705
|
+
message = Object.assign(existingMessage, message);
|
|
10706
|
+
else
|
|
10707
|
+
this.messageMap.set(message.id, message);
|
|
10708
|
+
return message;
|
|
10709
|
+
};
|
|
10641
10710
|
ChatSource.prototype.getExistingMessages = function () {
|
|
10642
10711
|
return __awaiter(this, void 0, void 0, function () {
|
|
10643
10712
|
var messages;
|
|
10644
|
-
var _this = this;
|
|
10645
10713
|
return __generator(this, function (_b) {
|
|
10646
10714
|
switch (_b.label) {
|
|
10647
10715
|
case 0: return [4 /*yield*/, this.peer.getExistingMessages()];
|
|
10648
10716
|
case 1:
|
|
10649
10717
|
messages = _b.sent();
|
|
10650
|
-
messages =
|
|
10651
|
-
var existingMessage = _this.messageMap.get(message.id);
|
|
10652
|
-
if (existingMessage)
|
|
10653
|
-
message = Object.assign(existingMessage, message);
|
|
10654
|
-
else
|
|
10655
|
-
_this.messageMap.set(message.id, message);
|
|
10656
|
-
return message;
|
|
10657
|
-
});
|
|
10718
|
+
messages = this.mapOrUpdateMessages(messages);
|
|
10658
10719
|
return [2 /*return*/, messages];
|
|
10659
10720
|
}
|
|
10660
10721
|
});
|
|
@@ -10737,8 +10798,7 @@
|
|
|
10737
10798
|
};
|
|
10738
10799
|
ChatSource.prototype.onChatMessage = function (message) {
|
|
10739
10800
|
if (this.messageMap.has(message.id)) {
|
|
10740
|
-
|
|
10741
|
-
this._messageUpdated.next(message);
|
|
10801
|
+
return this.mapOrUpdateMessage(message);
|
|
10742
10802
|
}
|
|
10743
10803
|
else if (!message.hidden) {
|
|
10744
10804
|
// Only process non-hidden messages through here.
|
|
@@ -10778,12 +10838,18 @@
|
|
|
10778
10838
|
};
|
|
10779
10839
|
ChatSource.prototype.loadAfter = function (message, count) {
|
|
10780
10840
|
return __awaiter(this, void 0, void 0, function () {
|
|
10781
|
-
|
|
10782
|
-
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10841
|
+
var _b;
|
|
10842
|
+
return __generator(this, function (_c) {
|
|
10843
|
+
switch (_c.label) {
|
|
10844
|
+
case 0:
|
|
10845
|
+
if (!message)
|
|
10846
|
+
return [2 /*return*/];
|
|
10847
|
+
if (!message.pagingCursor)
|
|
10848
|
+
return [2 /*return*/, []];
|
|
10849
|
+
_b = this.mapOrUpdateMessages;
|
|
10850
|
+
return [4 /*yield*/, this.peer.loadAfter(Number(message.pagingCursor), count)];
|
|
10851
|
+
case 1: return [2 /*return*/, _b.apply(this, [_c.sent()])];
|
|
10852
|
+
}
|
|
10787
10853
|
});
|
|
10788
10854
|
});
|
|
10789
10855
|
};
|