@viewberapp/chat 0.0.106 → 0.0.107

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.
Files changed (66) hide show
  1. package/LICENSE +20 -20
  2. package/dist/API.d.ts +83 -83
  3. package/dist/API.js +216 -216
  4. package/dist/CachedChat.d.ts +59 -59
  5. package/dist/CachedChat.js +220 -220
  6. package/dist/Chat.d.ts +64 -64
  7. package/dist/Chat.js +267 -267
  8. package/dist/ChatError.d.ts +4 -4
  9. package/dist/ChatError.js +2 -2
  10. package/dist/ChatSubscription.d.ts +79 -79
  11. package/dist/ChatSubscription.js +119 -119
  12. package/dist/Message.d.ts +25 -25
  13. package/dist/Message.js +35 -35
  14. package/dist/OnlineUser.d.ts +8 -8
  15. package/dist/OnlineUser.js +9 -9
  16. package/dist/PendingMessage.d.ts +23 -23
  17. package/dist/PendingMessage.js +23 -23
  18. package/dist/index.d.ts +8 -8
  19. package/dist/index.js +27 -27
  20. package/dist/logger/ConsoleLogger.d.ts +8 -8
  21. package/dist/logger/ConsoleLogger.js +20 -20
  22. package/dist/logger/NullLogger.d.ts +8 -8
  23. package/dist/logger/NullLogger.js +10 -10
  24. package/dist/logger/RollbarLogger.d.ts +11 -11
  25. package/dist/logger/RollbarLogger.js +23 -23
  26. package/dist/logger/index.d.ts +12 -12
  27. package/dist/logger/index.js +12 -12
  28. package/dist/react/components/AdminMessage.d.ts +6 -6
  29. package/dist/react/components/AdminMessage.js +59 -59
  30. package/dist/react/components/ConnectionAndChannelStatusLabel.d.ts +7 -7
  31. package/dist/react/components/ConnectionAndChannelStatusLabel.js +59 -59
  32. package/dist/react/components/Message.d.ts +23 -23
  33. package/dist/react/components/Message.js +87 -87
  34. package/dist/react/components/MessageDateTime.d.ts +8 -8
  35. package/dist/react/components/MessageDateTime.js +31 -31
  36. package/dist/react/components/MessageList.d.ts +46 -46
  37. package/dist/react/components/MessageList.js +107 -107
  38. package/dist/react/components/MessageRow.d.ts +5 -5
  39. package/dist/react/components/MessageRow.js +34 -34
  40. package/dist/react/components/index.d.ts +6 -6
  41. package/dist/react/components/index.js +13 -13
  42. package/dist/react/index.d.ts +3 -3
  43. package/dist/react/index.js +16 -16
  44. package/dist/react/useAppointmentChat.d.ts +3 -3
  45. package/dist/react/useAppointmentChat.js +10 -10
  46. package/dist/react/useChat.d.ts +36 -36
  47. package/dist/react/useChat.js +123 -123
  48. package/dist/react/useRealtimeTotalUserUnreadChatMessages.d.ts +12 -12
  49. package/dist/react/useRealtimeTotalUserUnreadChatMessages.js +137 -139
  50. package/dist/react/useRealtimeTotalUserUnreadChatMessages.js.map +1 -1
  51. package/dist/util/getLatestMessage.d.ts +3 -3
  52. package/dist/util/getLatestMessage.js +17 -17
  53. package/dist/util/groupMessages.d.ts +8 -8
  54. package/dist/util/groupMessages.js +30 -30
  55. package/dist/util/index.d.ts +4 -4
  56. package/dist/util/index.js +9 -9
  57. package/dist/util/isNil.d.ts +1 -1
  58. package/dist/util/isNil.js +7 -7
  59. package/dist/util/jwtTokenChanged.d.ts +1 -1
  60. package/dist/util/jwtTokenChanged.js +10 -10
  61. package/dist/util/useIsMounted.d.ts +1 -1
  62. package/dist/util/useIsMounted.js +13 -13
  63. package/package.json +2 -2
  64. package/dist/util/getLatestMessageId.d.ts +0 -3
  65. package/dist/util/getLatestMessageId.js +0 -18
  66. package/dist/util/getLatestMessageId.js.map +0 -1
@@ -1,59 +1,59 @@
1
- import Ably from 'ably';
2
- import API from "./API";
3
- import { Logger } from "./logger";
4
- import OnlineUser from "./OnlineUser";
5
- import { ChannelStatus, ConnectionStatus, DebugOptions } from './Chat';
6
- import PendingMessage from "./PendingMessage";
7
- import Message from "./Message";
8
- import ChatSubscription from "./ChatSubscription";
9
- import ChatError from './ChatError';
10
- export interface CachedChatParams {
11
- id: number;
12
- api: API;
13
- channel: Ably.Types.RealtimeChannelCallbacks;
14
- connectionStatus: ConnectionStatus;
15
- logger: Logger;
16
- debugLogger: Logger;
17
- debug?: DebugOptions;
18
- }
19
- export interface SendMessageOptions {
20
- isAdminMessage: boolean;
21
- }
22
- export declare type Messages = (Message | PendingMessage)[];
23
- export declare type GetLatestMessagesStatus = 'initialized' | 'fetching' | 'success' | 'failed';
24
- export default class CachedChat {
25
- private id;
26
- private api;
27
- messages: Messages;
28
- onlineUsers: OnlineUser[];
29
- private subscriptions;
30
- private channel;
31
- private connectionStatus;
32
- private channelStatus;
33
- private getLatestMessagesStatus;
34
- private logger;
35
- private debugLogger;
36
- private debug;
37
- constructor({ id, api, channel, connectionStatus, logger, debugLogger, debug }: CachedChatParams);
38
- sendMessage(message: string, options?: SendMessageOptions): Promise<void>;
39
- sendPendingMessage(pendingMessage: PendingMessage): Promise<void>;
40
- getLatestMessages(): void;
41
- markMessagesReadUpTo(message: Message): Promise<{
42
- error: ChatError | undefined;
43
- }>;
44
- addMessage(message: Message | PendingMessage): void;
45
- private replacePendingMessage;
46
- private updatePendingMessageStatus;
47
- addSubscription(subscription: ChatSubscription): void;
48
- getConnectionStatus(): ConnectionStatus;
49
- setConnectionStatus(status: ConnectionStatus): void;
50
- getChannelStatus(): ChannelStatus;
51
- private handleChannelStateChange;
52
- getGetLatestMessagesStatus(): GetLatestMessagesStatus;
53
- setGetLatestMessagesStatus(status: GetLatestMessagesStatus): void;
54
- detachChannel(callback: Ably.Types.errorCallback): void;
55
- private fireMessagesEventOnEachNonCancelledSubscription;
56
- private fireEventOnEachSubscription;
57
- cancelSubscription(subscription: ChatSubscription): void;
58
- cancelAllSubscriptions(): void;
59
- }
1
+ import Ably from 'ably';
2
+ import API from "./API";
3
+ import { Logger } from "./logger";
4
+ import OnlineUser from "./OnlineUser";
5
+ import { ChannelStatus, ConnectionStatus, DebugOptions } from './Chat';
6
+ import PendingMessage from "./PendingMessage";
7
+ import Message from "./Message";
8
+ import ChatSubscription from "./ChatSubscription";
9
+ import ChatError from './ChatError';
10
+ export interface CachedChatParams {
11
+ id: number;
12
+ api: API;
13
+ channel: Ably.Types.RealtimeChannelCallbacks;
14
+ connectionStatus: ConnectionStatus;
15
+ logger: Logger;
16
+ debugLogger: Logger;
17
+ debug?: DebugOptions;
18
+ }
19
+ export interface SendMessageOptions {
20
+ isAdminMessage: boolean;
21
+ }
22
+ export declare type Messages = (Message | PendingMessage)[];
23
+ export declare type GetLatestMessagesStatus = 'initialized' | 'fetching' | 'success' | 'failed';
24
+ export default class CachedChat {
25
+ private id;
26
+ private api;
27
+ messages: Messages;
28
+ onlineUsers: OnlineUser[];
29
+ private subscriptions;
30
+ private channel;
31
+ private connectionStatus;
32
+ private channelStatus;
33
+ private getLatestMessagesStatus;
34
+ private logger;
35
+ private debugLogger;
36
+ private debug;
37
+ constructor({ id, api, channel, connectionStatus, logger, debugLogger, debug }: CachedChatParams);
38
+ sendMessage(message: string, options?: SendMessageOptions): Promise<void>;
39
+ sendPendingMessage(pendingMessage: PendingMessage): Promise<void>;
40
+ getLatestMessages(): void;
41
+ markMessagesReadUpTo(message: Message): Promise<{
42
+ error: ChatError | undefined;
43
+ }>;
44
+ addMessage(message: Message | PendingMessage): void;
45
+ private replacePendingMessage;
46
+ private updatePendingMessageStatus;
47
+ addSubscription(subscription: ChatSubscription): void;
48
+ getConnectionStatus(): ConnectionStatus;
49
+ setConnectionStatus(status: ConnectionStatus): void;
50
+ getChannelStatus(): ChannelStatus;
51
+ private handleChannelStateChange;
52
+ getGetLatestMessagesStatus(): GetLatestMessagesStatus;
53
+ setGetLatestMessagesStatus(status: GetLatestMessagesStatus): void;
54
+ detachChannel(callback: Ably.Types.errorCallback): void;
55
+ private fireMessagesEventOnEachNonCancelledSubscription;
56
+ private fireEventOnEachSubscription;
57
+ cancelSubscription(subscription: ChatSubscription): void;
58
+ cancelAllSubscriptions(): void;
59
+ }
@@ -1,221 +1,221 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const uuid_1 = require("uuid");
27
- const PendingMessage_1 = __importStar(require("./PendingMessage"));
28
- const Message_1 = __importStar(require("./Message"));
29
- class CachedChat {
30
- constructor({ id, api, channel, connectionStatus, logger, debugLogger, debug }) {
31
- this.getLatestMessagesStatus = 'initialized';
32
- this.id = id;
33
- this.api = api;
34
- this.messages = [];
35
- this.onlineUsers = [];
36
- this.subscriptions = [];
37
- this.channel = channel;
38
- this.channelStatus = this.channel.state;
39
- this.connectionStatus = connectionStatus;
40
- this.logger = logger;
41
- this.debugLogger = debugLogger;
42
- this.debug = debug;
43
- this.channel.on(this.handleChannelStateChange.bind(this));
44
- this.channel.subscribe((message) => {
45
- var _a;
46
- if ((_a = this.debug) === null || _a === void 0 ? void 0 : _a.inboundAblyMessages) {
47
- this.debugLogger.debug('[Ably] [InboundMessage]', message);
48
- }
49
- if (message.name === 'chat.message.created') {
50
- this.addMessage(new Message_1.default({
51
- id: message.data.id,
52
- chatId: message.data.chat_id,
53
- message: message.data.message,
54
- senderId: message.data.sender_id,
55
- sender: message.data.sender,
56
- isAdminMessage: message.data.is_admin_message,
57
- createdAt: new Date(message.data.created_at)
58
- }));
59
- this.fireMessagesEventOnEachNonCancelledSubscription();
60
- }
61
- });
62
- }
63
- sendMessage(message, options) {
64
- return new Promise((resolve, reject) => {
65
- const pendingMessage = new PendingMessage_1.default({
66
- id: (0, uuid_1.v4)(),
67
- message,
68
- status: 'initialized',
69
- options,
70
- createdAt: new Date
71
- });
72
- this.addMessage(pendingMessage);
73
- this.fireMessagesEventOnEachNonCancelledSubscription();
74
- this.sendPendingMessage(pendingMessage)
75
- .then(() => resolve())
76
- .catch(err => reject(err));
77
- });
78
- }
79
- sendPendingMessage(pendingMessage) {
80
- return new Promise((resolve, reject) => {
81
- if (!(0, PendingMessage_1.isPendingMessage)(pendingMessage) || pendingMessage.status === 'pending') {
82
- return resolve();
83
- }
84
- this.updatePendingMessageStatus(pendingMessage, 'pending');
85
- this.fireMessagesEventOnEachNonCancelledSubscription();
86
- this.api.storeMessage(this.id, pendingMessage.message, pendingMessage.options).then(({ message, error }) => {
87
- if (error) {
88
- this.updatePendingMessageStatus(pendingMessage, 'failed');
89
- this.fireMessagesEventOnEachNonCancelledSubscription();
90
- return reject(new Error(error.message));
91
- }
92
- this.replacePendingMessage(pendingMessage, message);
93
- this.fireMessagesEventOnEachNonCancelledSubscription();
94
- resolve();
95
- }).catch(err => {
96
- this.updatePendingMessageStatus(pendingMessage, 'failed');
97
- this.fireMessagesEventOnEachNonCancelledSubscription();
98
- reject(err);
99
- });
100
- });
101
- }
102
- getLatestMessages() {
103
- this.setGetLatestMessagesStatus('fetching');
104
- this.api.getLatestMessages(this.id).then(({ messages, error }) => {
105
- if (messages) {
106
- messages.forEach(m => this.addMessage(m));
107
- this.setGetLatestMessagesStatus('success');
108
- this.fireMessagesEventOnEachNonCancelledSubscription();
109
- return;
110
- }
111
- this.setGetLatestMessagesStatus('failed');
112
- }).catch(err => {
113
- this.setGetLatestMessagesStatus('failed');
114
- });
115
- }
116
- markMessagesReadUpTo(message) {
117
- return this.api.markChatMessagesReadUpTo(this.id, message);
118
- }
119
- addMessage(message) {
120
- if (message instanceof PendingMessage_1.default) {
121
- this.messages.push(message);
122
- return;
123
- }
124
- let index = -1;
125
- for (let i = (this.messages.length - 1); i >= 0; i--) {
126
- if ((0, Message_1.isMessageAnd)(this.messages[i], m => m.id < message.id) && index === -1) {
127
- index = i;
128
- }
129
- if ((0, Message_1.isMessageAnd)(this.messages[i], m => m.id === message.id)) {
130
- return;
131
- }
132
- }
133
- if (index === -1) {
134
- this.messages.unshift(message);
135
- this.messages = this.messages.concat([]);
136
- }
137
- else {
138
- this.messages.splice(index + 1, 0, message);
139
- this.messages = this.messages.concat([]);
140
- }
141
- }
142
- replacePendingMessage(pendingMessage, message) {
143
- this.messages = this.messages.filter((m) => {
144
- return m.id !== pendingMessage.id;
145
- });
146
- this.addMessage(message);
147
- }
148
- updatePendingMessageStatus(pendingMessage, status) {
149
- this.messages = this.messages.map((m) => {
150
- if ((0, PendingMessage_1.isPendingMessage)(m) && m.id === pendingMessage.id) {
151
- return m.clone({ status });
152
- }
153
- return m;
154
- });
155
- }
156
- addSubscription(subscription) {
157
- this.subscriptions.push(subscription);
158
- }
159
- getConnectionStatus() {
160
- return this.connectionStatus;
161
- }
162
- setConnectionStatus(status) {
163
- this.connectionStatus = status;
164
- this.subscriptions.forEach(subscription => {
165
- if (subscription.getStatus() !== 'cancelled') {
166
- subscription.setConnectionStatus(this.connectionStatus);
167
- }
168
- });
169
- }
170
- getChannelStatus() {
171
- return this.channelStatus;
172
- }
173
- handleChannelStateChange(stateChange) {
174
- this.channelStatus = stateChange.current;
175
- this.subscriptions.forEach(subscription => {
176
- if (subscription.getStatus() !== 'cancelled') {
177
- subscription.setChannelStatus(this.channelStatus);
178
- }
179
- });
180
- }
181
- getGetLatestMessagesStatus() {
182
- return this.getLatestMessagesStatus;
183
- }
184
- setGetLatestMessagesStatus(status) {
185
- this.getLatestMessagesStatus = status;
186
- this.subscriptions.forEach(subscription => {
187
- if (subscription.getStatus() !== 'cancelled') {
188
- subscription.setGetLatestMessagesStatus(this.getLatestMessagesStatus);
189
- }
190
- });
191
- }
192
- detachChannel(callback) {
193
- this.channel.detach(callback);
194
- }
195
- fireMessagesEventOnEachNonCancelledSubscription() {
196
- this.fireEventOnEachSubscription('messages', {
197
- messages: this.messages.concat()
198
- }, {
199
- whereStatusNotIn: ['cancelled']
200
- });
201
- }
202
- fireEventOnEachSubscription(name, data, options) {
203
- for (let i = 0, il = this.subscriptions.length; i < il; i++) {
204
- const subscription = this.subscriptions[i];
205
- if (options && Array.isArray(options.whereStatusNotIn) && options.whereStatusNotIn.includes(subscription.getStatus())) {
206
- continue;
207
- }
208
- subscription.fireEvent(name, data);
209
- }
210
- }
211
- cancelSubscription(subscription) {
212
- subscription.setStatus('cancelled');
213
- }
214
- cancelAllSubscriptions() {
215
- this.subscriptions.forEach(subscription => {
216
- this.cancelSubscription(subscription);
217
- });
218
- }
219
- }
220
- exports.default = CachedChat;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const uuid_1 = require("uuid");
27
+ const PendingMessage_1 = __importStar(require("./PendingMessage"));
28
+ const Message_1 = __importStar(require("./Message"));
29
+ class CachedChat {
30
+ constructor({ id, api, channel, connectionStatus, logger, debugLogger, debug }) {
31
+ this.getLatestMessagesStatus = 'initialized';
32
+ this.id = id;
33
+ this.api = api;
34
+ this.messages = [];
35
+ this.onlineUsers = [];
36
+ this.subscriptions = [];
37
+ this.channel = channel;
38
+ this.channelStatus = this.channel.state;
39
+ this.connectionStatus = connectionStatus;
40
+ this.logger = logger;
41
+ this.debugLogger = debugLogger;
42
+ this.debug = debug;
43
+ this.channel.on(this.handleChannelStateChange.bind(this));
44
+ this.channel.subscribe((message) => {
45
+ var _a;
46
+ if ((_a = this.debug) === null || _a === void 0 ? void 0 : _a.inboundAblyMessages) {
47
+ this.debugLogger.debug('[Ably] [InboundMessage]', message);
48
+ }
49
+ if (message.name === 'chat.message.created') {
50
+ this.addMessage(new Message_1.default({
51
+ id: message.data.id,
52
+ chatId: message.data.chat_id,
53
+ message: message.data.message,
54
+ senderId: message.data.sender_id,
55
+ sender: message.data.sender,
56
+ isAdminMessage: message.data.is_admin_message,
57
+ createdAt: new Date(message.data.created_at)
58
+ }));
59
+ this.fireMessagesEventOnEachNonCancelledSubscription();
60
+ }
61
+ });
62
+ }
63
+ sendMessage(message, options) {
64
+ return new Promise((resolve, reject) => {
65
+ const pendingMessage = new PendingMessage_1.default({
66
+ id: (0, uuid_1.v4)(),
67
+ message,
68
+ status: 'initialized',
69
+ options,
70
+ createdAt: new Date
71
+ });
72
+ this.addMessage(pendingMessage);
73
+ this.fireMessagesEventOnEachNonCancelledSubscription();
74
+ this.sendPendingMessage(pendingMessage)
75
+ .then(() => resolve())
76
+ .catch(err => reject(err));
77
+ });
78
+ }
79
+ sendPendingMessage(pendingMessage) {
80
+ return new Promise((resolve, reject) => {
81
+ if (!(0, PendingMessage_1.isPendingMessage)(pendingMessage) || pendingMessage.status === 'pending') {
82
+ return resolve();
83
+ }
84
+ this.updatePendingMessageStatus(pendingMessage, 'pending');
85
+ this.fireMessagesEventOnEachNonCancelledSubscription();
86
+ this.api.storeMessage(this.id, pendingMessage.message, pendingMessage.options).then(({ message, error }) => {
87
+ if (error) {
88
+ this.updatePendingMessageStatus(pendingMessage, 'failed');
89
+ this.fireMessagesEventOnEachNonCancelledSubscription();
90
+ return reject(new Error(error.message));
91
+ }
92
+ this.replacePendingMessage(pendingMessage, message);
93
+ this.fireMessagesEventOnEachNonCancelledSubscription();
94
+ resolve();
95
+ }).catch(err => {
96
+ this.updatePendingMessageStatus(pendingMessage, 'failed');
97
+ this.fireMessagesEventOnEachNonCancelledSubscription();
98
+ reject(err);
99
+ });
100
+ });
101
+ }
102
+ getLatestMessages() {
103
+ this.setGetLatestMessagesStatus('fetching');
104
+ this.api.getLatestMessages(this.id).then(({ messages, error }) => {
105
+ if (messages) {
106
+ messages.forEach(m => this.addMessage(m));
107
+ this.setGetLatestMessagesStatus('success');
108
+ this.fireMessagesEventOnEachNonCancelledSubscription();
109
+ return;
110
+ }
111
+ this.setGetLatestMessagesStatus('failed');
112
+ }).catch(err => {
113
+ this.setGetLatestMessagesStatus('failed');
114
+ });
115
+ }
116
+ markMessagesReadUpTo(message) {
117
+ return this.api.markChatMessagesReadUpTo(this.id, message);
118
+ }
119
+ addMessage(message) {
120
+ if (message instanceof PendingMessage_1.default) {
121
+ this.messages.push(message);
122
+ return;
123
+ }
124
+ let index = -1;
125
+ for (let i = (this.messages.length - 1); i >= 0; i--) {
126
+ if ((0, Message_1.isMessageAnd)(this.messages[i], m => m.id < message.id) && index === -1) {
127
+ index = i;
128
+ }
129
+ if ((0, Message_1.isMessageAnd)(this.messages[i], m => m.id === message.id)) {
130
+ return;
131
+ }
132
+ }
133
+ if (index === -1) {
134
+ this.messages.unshift(message);
135
+ this.messages = this.messages.concat([]);
136
+ }
137
+ else {
138
+ this.messages.splice(index + 1, 0, message);
139
+ this.messages = this.messages.concat([]);
140
+ }
141
+ }
142
+ replacePendingMessage(pendingMessage, message) {
143
+ this.messages = this.messages.filter((m) => {
144
+ return m.id !== pendingMessage.id;
145
+ });
146
+ this.addMessage(message);
147
+ }
148
+ updatePendingMessageStatus(pendingMessage, status) {
149
+ this.messages = this.messages.map((m) => {
150
+ if ((0, PendingMessage_1.isPendingMessage)(m) && m.id === pendingMessage.id) {
151
+ return m.clone({ status });
152
+ }
153
+ return m;
154
+ });
155
+ }
156
+ addSubscription(subscription) {
157
+ this.subscriptions.push(subscription);
158
+ }
159
+ getConnectionStatus() {
160
+ return this.connectionStatus;
161
+ }
162
+ setConnectionStatus(status) {
163
+ this.connectionStatus = status;
164
+ this.subscriptions.forEach(subscription => {
165
+ if (subscription.getStatus() !== 'cancelled') {
166
+ subscription.setConnectionStatus(this.connectionStatus);
167
+ }
168
+ });
169
+ }
170
+ getChannelStatus() {
171
+ return this.channelStatus;
172
+ }
173
+ handleChannelStateChange(stateChange) {
174
+ this.channelStatus = stateChange.current;
175
+ this.subscriptions.forEach(subscription => {
176
+ if (subscription.getStatus() !== 'cancelled') {
177
+ subscription.setChannelStatus(this.channelStatus);
178
+ }
179
+ });
180
+ }
181
+ getGetLatestMessagesStatus() {
182
+ return this.getLatestMessagesStatus;
183
+ }
184
+ setGetLatestMessagesStatus(status) {
185
+ this.getLatestMessagesStatus = status;
186
+ this.subscriptions.forEach(subscription => {
187
+ if (subscription.getStatus() !== 'cancelled') {
188
+ subscription.setGetLatestMessagesStatus(this.getLatestMessagesStatus);
189
+ }
190
+ });
191
+ }
192
+ detachChannel(callback) {
193
+ this.channel.detach(callback);
194
+ }
195
+ fireMessagesEventOnEachNonCancelledSubscription() {
196
+ this.fireEventOnEachSubscription('messages', {
197
+ messages: this.messages.concat()
198
+ }, {
199
+ whereStatusNotIn: ['cancelled']
200
+ });
201
+ }
202
+ fireEventOnEachSubscription(name, data, options) {
203
+ for (let i = 0, il = this.subscriptions.length; i < il; i++) {
204
+ const subscription = this.subscriptions[i];
205
+ if (options && Array.isArray(options.whereStatusNotIn) && options.whereStatusNotIn.includes(subscription.getStatus())) {
206
+ continue;
207
+ }
208
+ subscription.fireEvent(name, data);
209
+ }
210
+ }
211
+ cancelSubscription(subscription) {
212
+ subscription.setStatus('cancelled');
213
+ }
214
+ cancelAllSubscriptions() {
215
+ this.subscriptions.forEach(subscription => {
216
+ this.cancelSubscription(subscription);
217
+ });
218
+ }
219
+ }
220
+ exports.default = CachedChat;
221
221
  //# sourceMappingURL=CachedChat.js.map