stream-chat-angular 3.1.0 → 3.2.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/assets/version.d.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +87 -48
- package/bundles/stream-chat-angular.umd.js.map +1 -1
- package/esm2015/assets/version.js +2 -2
- package/esm2015/lib/channel-header/channel-header.component.js +29 -9
- package/esm2015/lib/channel-preview/channel-preview.component.js +25 -13
- package/esm2015/lib/channel.service.js +3 -3
- package/esm2015/lib/get-channel-display-text.js +15 -0
- package/esm2015/lib/list-users.js +12 -0
- package/esm2015/lib/message/message.component.js +3 -3
- package/esm2015/lib/message-input/message-input.component.js +5 -1
- package/esm2015/public-api.js +2 -2
- package/fesm2015/stream-chat-angular.js +77 -48
- package/fesm2015/stream-chat-angular.js.map +1 -1
- package/lib/channel-header/channel-header.component.d.ts +5 -1
- package/lib/channel-preview/channel-preview.component.d.ts +3 -1
- package/lib/channel.service.d.ts +4 -2
- package/lib/get-channel-display-text.d.ts +3 -0
- package/lib/list-users.d.ts +2 -0
- package/lib/message/message.component.d.ts +3 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/src/assets/version.ts +1 -1
- package/esm2015/lib/message/read-by-text.js +0 -29
- package/lib/message/read-by-text.d.ts +0 -2
|
@@ -17,7 +17,7 @@ import transliterate from '@stream-io/transliterate';
|
|
|
17
17
|
import * as i7 from 'angular-mentions';
|
|
18
18
|
import { MentionModule } from 'angular-mentions';
|
|
19
19
|
|
|
20
|
-
const version = '3.
|
|
20
|
+
const version = '3.2.2';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* The `NotificationService` can be used to add or remove notifications. By default the [`NotificationList`](../components/NotificationListComponent.mdx) component displays the currently active notifications.
|
|
@@ -327,7 +327,7 @@ class ChannelService {
|
|
|
327
327
|
this.latestMessageDateByUserByChannelsSubject.asObservable();
|
|
328
328
|
}
|
|
329
329
|
/**
|
|
330
|
-
* Sets the given `channel` as active.
|
|
330
|
+
* Sets the given `channel` as active and marks it as read.
|
|
331
331
|
* @param channel
|
|
332
332
|
*/
|
|
333
333
|
setAsActiveChannel(channel) {
|
|
@@ -427,7 +427,7 @@ class ChannelService {
|
|
|
427
427
|
});
|
|
428
428
|
}
|
|
429
429
|
/**
|
|
430
|
-
* Queries the channels with the given filters, sorts and options. More info about [channel querying](https://getstream.io/chat/docs/javascript/query_channels/?language=javascript) can be found in the platform documentation.
|
|
430
|
+
* Queries the channels with the given filters, sorts and options. More info about [channel querying](https://getstream.io/chat/docs/javascript/query_channels/?language=javascript) can be found in the platform documentation. By default the first channel in the list will be set as active channel and will be marked as read.
|
|
431
431
|
* @param filters
|
|
432
432
|
* @param sort
|
|
433
433
|
* @param options
|
|
@@ -2529,6 +2529,10 @@ class MessageInputComponent {
|
|
|
2529
2529
|
return !!this.message;
|
|
2530
2530
|
}
|
|
2531
2531
|
initTextarea() {
|
|
2532
|
+
// cleanup previously built textarea
|
|
2533
|
+
if (!this.canSendMessages) {
|
|
2534
|
+
this.textareaRef = undefined;
|
|
2535
|
+
}
|
|
2532
2536
|
if (!this.canSendMessages || this.textareaRef || !this.textareaAnchor) {
|
|
2533
2537
|
return;
|
|
2534
2538
|
}
|
|
@@ -2906,6 +2910,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
2906
2910
|
}]
|
|
2907
2911
|
}], ctorParameters: function () { return [{ type: ChannelService }]; } });
|
|
2908
2912
|
|
|
2913
|
+
const listUsers = (users) => {
|
|
2914
|
+
let outStr = '';
|
|
2915
|
+
const slicedArr = users.map((item) => item.name || item.id).slice(0, 5);
|
|
2916
|
+
const restLength = users.length - slicedArr.length;
|
|
2917
|
+
const commaSeparatedUsers = slicedArr.join(', ');
|
|
2918
|
+
outStr = commaSeparatedUsers;
|
|
2919
|
+
if (restLength > 0) {
|
|
2920
|
+
outStr += ` +${restLength}`;
|
|
2921
|
+
}
|
|
2922
|
+
return outStr;
|
|
2923
|
+
};
|
|
2924
|
+
|
|
2925
|
+
const getChannelDisplayText = (channel, currentUser) => {
|
|
2926
|
+
var _a;
|
|
2927
|
+
if ((_a = channel.data) === null || _a === void 0 ? void 0 : _a.name) {
|
|
2928
|
+
return channel.data.name;
|
|
2929
|
+
}
|
|
2930
|
+
if (channel.state.members && Object.keys(channel.state.members).length > 0) {
|
|
2931
|
+
const members = Object.values(channel.state.members)
|
|
2932
|
+
.map((m) => m.user || { id: m.user_id })
|
|
2933
|
+
.filter((m) => m.id !== currentUser.id);
|
|
2934
|
+
return listUsers(members);
|
|
2935
|
+
}
|
|
2936
|
+
return channel.id;
|
|
2937
|
+
};
|
|
2938
|
+
|
|
2909
2939
|
const getDeviceWidth = () => {
|
|
2910
2940
|
const width = window.innerWidth;
|
|
2911
2941
|
if (width < 768)
|
|
@@ -2990,11 +3020,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
2990
3020
|
* The `ChannelHeader` component displays the avatar and name of the currently active channel along with member and watcher information. You can read about [the difference between members and watchers](https://getstream.io/chat/docs/javascript/watch_channel/?language=javascript#watchers-vs-members) in the platform documentation. Please note that number of watchers is only displayed if the user has [`connect-events` capability](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript)
|
|
2991
3021
|
*/
|
|
2992
3022
|
class ChannelHeaderComponent {
|
|
2993
|
-
constructor(channelService, channelListToggleService, customTemplatesService, cdRef) {
|
|
3023
|
+
constructor(channelService, channelListToggleService, customTemplatesService, cdRef, chatClientService) {
|
|
2994
3024
|
this.channelService = channelService;
|
|
2995
3025
|
this.channelListToggleService = channelListToggleService;
|
|
2996
3026
|
this.customTemplatesService = customTemplatesService;
|
|
2997
3027
|
this.cdRef = cdRef;
|
|
3028
|
+
this.chatClientService = chatClientService;
|
|
2998
3029
|
this.subscriptions = [];
|
|
2999
3030
|
this.channelService.activeChannel$.subscribe((c) => {
|
|
3000
3031
|
var _a, _b;
|
|
@@ -3031,9 +3062,26 @@ class ChannelHeaderComponent {
|
|
|
3031
3062
|
var _a, _b;
|
|
3032
3063
|
return { watcherCount: ((_b = (_a = this.activeChannel) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.watcher_count) || 0 };
|
|
3033
3064
|
}
|
|
3065
|
+
get displayText() {
|
|
3066
|
+
if (!this.activeChannel) {
|
|
3067
|
+
return '';
|
|
3068
|
+
}
|
|
3069
|
+
return getChannelDisplayText(this.activeChannel, this.chatClientService.chatClient.user);
|
|
3070
|
+
}
|
|
3071
|
+
get avatarName() {
|
|
3072
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
3073
|
+
if ((_b = (_a = this.activeChannel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.name) {
|
|
3074
|
+
return (_d = (_c = this.activeChannel) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.name;
|
|
3075
|
+
}
|
|
3076
|
+
const otherMembers = Object.values(((_e = this.activeChannel) === null || _e === void 0 ? void 0 : _e.state.members) || {}).filter((m) => m.user_id !== this.chatClientService.chatClient.user.id);
|
|
3077
|
+
if (otherMembers.length === 1) {
|
|
3078
|
+
return ((_f = otherMembers[0].user) === null || _f === void 0 ? void 0 : _f.name) || ((_g = otherMembers[0].user) === null || _g === void 0 ? void 0 : _g.name);
|
|
3079
|
+
}
|
|
3080
|
+
return '#';
|
|
3081
|
+
}
|
|
3034
3082
|
}
|
|
3035
|
-
ChannelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelHeaderComponent, deps: [{ token: ChannelService }, { token: ChannelListToggleService }, { token: CustomTemplatesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
3036
|
-
ChannelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelHeaderComponent, selector: "stream-channel-header", ngImport: i0, template: "<div class=\"str-chat__header-livestream\">\n <div\n class=\"str-chat__header-hamburger\"\n (click)=\"toggleMenu($event)\"\n (keyup.enter)=\"toggleMenu($event)\"\n >\n <stream-icon-placeholder icon=\"menu\"></stream-icon-placeholder>\n </div>\n <stream-avatar-placeholder\n imageUrl=\"{{ activeChannel?.data?.image }}\"\n name=\"{{
|
|
3083
|
+
ChannelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelHeaderComponent, deps: [{ token: ChannelService }, { token: ChannelListToggleService }, { token: CustomTemplatesService }, { token: i0.ChangeDetectorRef }, { token: ChatClientService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3084
|
+
ChannelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelHeaderComponent, selector: "stream-channel-header", ngImport: i0, template: "<div class=\"str-chat__header-livestream\">\n <div\n class=\"str-chat__header-hamburger\"\n (click)=\"toggleMenu($event)\"\n (keyup.enter)=\"toggleMenu($event)\"\n >\n <stream-icon-placeholder icon=\"menu\"></stream-icon-placeholder>\n </div>\n <stream-avatar-placeholder\n imageUrl=\"{{ activeChannel?.data?.image }}\"\n name=\"{{ avatarName }}\"\n ></stream-avatar-placeholder>\n <div class=\"str-chat__header-livestream-left\">\n <p data-testid=\"name\" class=\"str-chat__header-livestream-left--title\">\n {{ displayText }}\n </p>\n <p data-testid=\"info\" class=\"str-chat__header-livestream-left--members\">\n {{'streamChat.{{ memberCount }} members' | translate:memberCountParam}}\n {{canReceiveConnectEvents ? ('streamChat.{{ watcherCount }} online' |\n translate:watcherCountParam) : ''}}\n </p>\n </div>\n <ng-container *ngIf=\"channelActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n channelActionsTemplate;\n context: getChannelActionsContext()\n \"\n ></ng-container>\n </ng-container>\n</div>\n", components: [{ type: IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon", "size"] }, { type: AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i9.TranslatePipe } });
|
|
3037
3085
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelHeaderComponent, decorators: [{
|
|
3038
3086
|
type: Component,
|
|
3039
3087
|
args: [{
|
|
@@ -3041,18 +3089,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
3041
3089
|
templateUrl: './channel-header.component.html',
|
|
3042
3090
|
styles: [],
|
|
3043
3091
|
}]
|
|
3044
|
-
}], ctorParameters: function () { return [{ type: ChannelService }, { type: ChannelListToggleService }, { type: CustomTemplatesService }, { type: i0.ChangeDetectorRef }]; } });
|
|
3092
|
+
}], ctorParameters: function () { return [{ type: ChannelService }, { type: ChannelListToggleService }, { type: CustomTemplatesService }, { type: i0.ChangeDetectorRef }, { type: ChatClientService }]; } });
|
|
3045
3093
|
|
|
3046
3094
|
/**
|
|
3047
3095
|
* The `ChannelPreview` component displays a channel preview in the channel list, it consists of the image, name and latest message of the channel.
|
|
3048
3096
|
*/
|
|
3049
3097
|
class ChannelPreviewComponent {
|
|
3050
|
-
constructor(channelService, ngZone) {
|
|
3098
|
+
constructor(channelService, ngZone, chatClientService) {
|
|
3051
3099
|
this.channelService = channelService;
|
|
3052
3100
|
this.ngZone = ngZone;
|
|
3101
|
+
this.chatClientService = chatClientService;
|
|
3053
3102
|
this.isActive = false;
|
|
3054
3103
|
this.isUnread = false;
|
|
3055
|
-
this.latestMessage = 'Nothing yet...';
|
|
3104
|
+
this.latestMessage = 'streamChat.Nothing yet...';
|
|
3056
3105
|
this.subscriptions = [];
|
|
3057
3106
|
this.canSendReadEvents = true;
|
|
3058
3107
|
}
|
|
@@ -3083,12 +3132,21 @@ class ChannelPreviewComponent {
|
|
|
3083
3132
|
return (_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.image;
|
|
3084
3133
|
}
|
|
3085
3134
|
get avatarName() {
|
|
3086
|
-
var _a, _b;
|
|
3087
|
-
|
|
3135
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
3136
|
+
if ((_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.name) {
|
|
3137
|
+
return (_d = (_c = this.channel) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.name;
|
|
3138
|
+
}
|
|
3139
|
+
const otherMembers = Object.values(((_e = this.channel) === null || _e === void 0 ? void 0 : _e.state.members) || {}).filter((m) => m.user_id !== this.chatClientService.chatClient.user.id);
|
|
3140
|
+
if (otherMembers.length === 1) {
|
|
3141
|
+
return ((_f = otherMembers[0].user) === null || _f === void 0 ? void 0 : _f.name) || ((_g = otherMembers[0].user) === null || _g === void 0 ? void 0 : _g.name);
|
|
3142
|
+
}
|
|
3143
|
+
return '#';
|
|
3088
3144
|
}
|
|
3089
3145
|
get title() {
|
|
3090
|
-
|
|
3091
|
-
|
|
3146
|
+
if (!this.channel) {
|
|
3147
|
+
return '';
|
|
3148
|
+
}
|
|
3149
|
+
return getChannelDisplayText(this.channel, this.chatClientService.chatClient.user);
|
|
3092
3150
|
}
|
|
3093
3151
|
setAsActiveChannel() {
|
|
3094
3152
|
void this.channelService.setAsActiveChannel(this.channel);
|
|
@@ -3097,7 +3155,7 @@ class ChannelPreviewComponent {
|
|
|
3097
3155
|
this.ngZone.run(() => {
|
|
3098
3156
|
var _a, _b, _c;
|
|
3099
3157
|
if (((_a = this.channel) === null || _a === void 0 ? void 0 : _a.state.messages.length) === 0) {
|
|
3100
|
-
this.latestMessage = 'Nothing yet...';
|
|
3158
|
+
this.latestMessage = 'streamChat.Nothing yet...';
|
|
3101
3159
|
return;
|
|
3102
3160
|
}
|
|
3103
3161
|
if (!event.message ||
|
|
@@ -3120,8 +3178,8 @@ class ChannelPreviewComponent {
|
|
|
3120
3178
|
}
|
|
3121
3179
|
}
|
|
3122
3180
|
}
|
|
3123
|
-
ChannelPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelPreviewComponent, deps: [{ token: ChannelService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
3124
|
-
ChannelPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelPreviewComponent, selector: "stream-channel-preview", inputs: { channel: "channel" }, ngImport: i0, template: "<button\n class=\"str-chat__channel-preview-messenger\"\n [class.str-chat__channel-preview-messenger--active]=\"isActive\"\n [class.str-chat__channel-preview-messenger--unread]=\"isUnread\"\n (click)=\"setAsActiveChannel()\"\n data-testid=\"channel-preview-container\"\n>\n <div class=\"str-chat__channel-preview-messenger--left\">\n <stream-avatar-placeholder\n imageUrl=\"{{ avatarImage }}\"\n name=\"{{ avatarName }}\"\n [size]=\"40\"\n ></stream-avatar-placeholder>\n </div>\n <div class=\"str-chat__channel-preview-messenger--right\">\n <div class=\"str-chat__channel-preview-messenger--name\">\n <span data-testid=\"channel-preview-title\">{{ title }}</span>\n </div>\n <div\n data-testid=\"latest-message\"\n class=\"str-chat__channel-preview-messenger--last-message\"\n >\n {{ latestMessage | translate }}\n </div>\n </div>\n</button>\n", components: [{ type: AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }], pipes: { "translate": i9.TranslatePipe } });
|
|
3181
|
+
ChannelPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelPreviewComponent, deps: [{ token: ChannelService }, { token: i0.NgZone }, { token: ChatClientService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3182
|
+
ChannelPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelPreviewComponent, selector: "stream-channel-preview", inputs: { channel: "channel" }, ngImport: i0, template: "<button\n class=\"str-chat__channel-preview-messenger\"\n [class.str-chat__channel-preview-messenger--active]=\"isActive\"\n [class.str-chat__channel-preview-messenger--unread]=\"isUnread\"\n (click)=\"setAsActiveChannel()\"\n data-testid=\"channel-preview-container\"\n>\n <div class=\"str-chat__channel-preview-messenger--left\">\n <stream-avatar-placeholder\n imageUrl=\"{{ avatarImage }}\"\n name=\"{{ avatarName }}\"\n [size]=\"40\"\n ></stream-avatar-placeholder>\n </div>\n <div class=\"str-chat__channel-preview-messenger--right\">\n <div\n style=\"position: relative\"\n class=\"str-chat__channel-preview-messenger--name\"\n >\n <span data-testid=\"channel-preview-title\">{{ title }}</span>\n </div>\n <div\n data-testid=\"latest-message\"\n class=\"str-chat__channel-preview-messenger--last-message\"\n >\n {{ latestMessage | translate }}\n </div>\n </div>\n</button>\n", components: [{ type: AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }], pipes: { "translate": i9.TranslatePipe } });
|
|
3125
3183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelPreviewComponent, decorators: [{
|
|
3126
3184
|
type: Component,
|
|
3127
3185
|
args: [{
|
|
@@ -3129,7 +3187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
3129
3187
|
templateUrl: './channel-preview.component.html',
|
|
3130
3188
|
styles: [],
|
|
3131
3189
|
}]
|
|
3132
|
-
}], ctorParameters: function () { return [{ type: ChannelService }, { type: i0.NgZone }]; }, propDecorators: { channel: [{
|
|
3190
|
+
}], ctorParameters: function () { return [{ type: ChannelService }, { type: i0.NgZone }, { type: ChatClientService }]; }, propDecorators: { channel: [{
|
|
3133
3191
|
type: Input
|
|
3134
3192
|
}] } });
|
|
3135
3193
|
|
|
@@ -3195,35 +3253,6 @@ const parseDate = (date) => {
|
|
|
3195
3253
|
return parsedTime.calendar();
|
|
3196
3254
|
};
|
|
3197
3255
|
|
|
3198
|
-
const getReadByText = (users) => {
|
|
3199
|
-
let outStr = '';
|
|
3200
|
-
const slicedArr = users.map((item) => item.name || item.id).slice(0, 5);
|
|
3201
|
-
const restLength = users.length - slicedArr.length;
|
|
3202
|
-
if (slicedArr.length === 1) {
|
|
3203
|
-
outStr = `${slicedArr[0]} `;
|
|
3204
|
-
}
|
|
3205
|
-
else if (slicedArr.length === 2) {
|
|
3206
|
-
// joins all with "and" but =no commas
|
|
3207
|
-
// example: "bob and sam"
|
|
3208
|
-
outStr = `${slicedArr[0]} and ${slicedArr[1]}`;
|
|
3209
|
-
}
|
|
3210
|
-
else if (slicedArr.length > 2) {
|
|
3211
|
-
// joins all with commas, but last one gets ", and" (oxford comma!)
|
|
3212
|
-
// example: "bob, joe, sam and 4 more"
|
|
3213
|
-
if (restLength === 0) {
|
|
3214
|
-
// mutate slicedArr to remove last user to display it separately
|
|
3215
|
-
const lastUser = slicedArr.splice(slicedArr.length - 2, 1)[0];
|
|
3216
|
-
const commaSeparatedUsers = slicedArr.join(', ');
|
|
3217
|
-
outStr = `${commaSeparatedUsers}, and ${lastUser}`;
|
|
3218
|
-
}
|
|
3219
|
-
else {
|
|
3220
|
-
const commaSeparatedUsers = slicedArr.join(', ');
|
|
3221
|
-
outStr = `${commaSeparatedUsers} and ${restLength} more`;
|
|
3222
|
-
}
|
|
3223
|
-
}
|
|
3224
|
-
return outStr;
|
|
3225
|
-
};
|
|
3226
|
-
|
|
3227
3256
|
const emojiReactionsMapping = {
|
|
3228
3257
|
like: '👍',
|
|
3229
3258
|
angry: '😠',
|
|
@@ -3421,7 +3450,7 @@ class MessageComponent {
|
|
|
3421
3450
|
return ((_b = (_a = this.message) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.id) === ((_c = this.user) === null || _c === void 0 ? void 0 : _c.id);
|
|
3422
3451
|
}
|
|
3423
3452
|
get readByText() {
|
|
3424
|
-
return
|
|
3453
|
+
return listUsers(this.message.readBy);
|
|
3425
3454
|
}
|
|
3426
3455
|
get lastReadUser() {
|
|
3427
3456
|
var _a;
|
|
@@ -4424,5 +4453,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
4424
4453
|
* Generated bundle index. Do not edit.
|
|
4425
4454
|
*/
|
|
4426
4455
|
|
|
4427
|
-
export { AttachmentListComponent, AttachmentPreviewListComponent, AttachmentService, AutocompleteTextareaComponent, AvatarComponent, AvatarPlaceholderComponent, ChannelComponent, ChannelHeaderComponent, ChannelListComponent, ChannelListToggleService, ChannelPreviewComponent, ChannelService, ChatClientService, CustomTemplatesService, EmojiInputService, IconComponent, IconPlaceholderComponent, ImageLoadService, LoadingIndicatorComponent, LoadingIndicatorPlaceholderComponent, MessageActionsBoxComponent, MessageComponent, MessageInputComponent, MessageInputConfigService, MessageListComponent, MessageReactionsComponent, ModalComponent, NotificationComponent, NotificationListComponent, NotificationService, StreamAutocompleteTextareaModule, StreamAvatarModule, StreamChatModule, StreamI18nService, StreamTextareaModule, TextareaComponent, TextareaDirective, ThemeService, ThreadComponent, TransliterationService, createMessagePreview, getDeviceWidth, getGroupStyles, getReadBy,
|
|
4456
|
+
export { AttachmentListComponent, AttachmentPreviewListComponent, AttachmentService, AutocompleteTextareaComponent, AvatarComponent, AvatarPlaceholderComponent, ChannelComponent, ChannelHeaderComponent, ChannelListComponent, ChannelListToggleService, ChannelPreviewComponent, ChannelService, ChatClientService, CustomTemplatesService, EmojiInputService, IconComponent, IconPlaceholderComponent, ImageLoadService, LoadingIndicatorComponent, LoadingIndicatorPlaceholderComponent, MessageActionsBoxComponent, MessageComponent, MessageInputComponent, MessageInputConfigService, MessageListComponent, MessageReactionsComponent, ModalComponent, NotificationComponent, NotificationListComponent, NotificationService, StreamAutocompleteTextareaModule, StreamAvatarModule, StreamChatModule, StreamI18nService, StreamTextareaModule, TextareaComponent, TextareaDirective, ThemeService, ThreadComponent, TransliterationService, createMessagePreview, getDeviceWidth, getGroupStyles, getReadBy, isImageAttachment, isImageFile, listUsers, parseDate, textareaInjectionToken };
|
|
4428
4457
|
//# sourceMappingURL=stream-chat-angular.js.map
|