@only-chat/client 0.2.0-beta.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -1
- package/dist/index.d.ts +6 -11
- package/dist/index.js +249 -181
- package/dist/index.js.map +1 -1
- package/package.json +12 -13
package/README.md
CHANGED
|
@@ -1,4 +1,97 @@
|
|
|
1
1
|
# only-chat
|
|
2
2
|
This is a client implementation for only-chat.
|
|
3
3
|
|
|
4
|
-
The client is a main part of the platform that processes and dispatches messages from the transport layer and from the queue.
|
|
4
|
+
The client is a main part of the platform that processes and dispatches messages from the transport layer and from the queue.
|
|
5
|
+
|
|
6
|
+
# Get started
|
|
7
|
+
|
|
8
|
+
```shell
|
|
9
|
+
npm i --save @only-chat/client
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { initialize as initializeClient, WsClient } from '@only-chat/client'
|
|
14
|
+
|
|
15
|
+
...
|
|
16
|
+
|
|
17
|
+
initializeClient({queue, store, userStore, instanceId}, logger)
|
|
18
|
+
|
|
19
|
+
const ws = new WebSocketServer({ host, port })
|
|
20
|
+
|
|
21
|
+
ws.on('connection', s => new WsClient(s))
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
# Client Statuses
|
|
25
|
+
|
|
26
|
+
| Status | Value | Description |
|
|
27
|
+
| :--- | :--- | :--- |
|
|
28
|
+
| None | 0 | The client was created, no actions have been performed with it. |
|
|
29
|
+
| Authenticated | 1 | The client is successfully authenticated. |
|
|
30
|
+
| Connected | 2 | The client is successfully connected to the server. |
|
|
31
|
+
| Session | 3 | The client has joined one of the chats. |
|
|
32
|
+
| WatchSession | 4 | The client is monitoring changes in all chats. |
|
|
33
|
+
| Disconnected | 0xFF | The client is successfully disconnected from the server. |
|
|
34
|
+
|
|
35
|
+
## Request Structure
|
|
36
|
+
|
|
37
|
+
For all commands, the request is of the type `Request`:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
{
|
|
41
|
+
type: string; // Command type
|
|
42
|
+
clientMessageId: string; // Client identifier
|
|
43
|
+
data: object; // Request data
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Command Specifications
|
|
48
|
+
|
|
49
|
+
### Status: `None`
|
|
50
|
+
|
|
51
|
+
* Any command is treated as a connection command to the service.
|
|
52
|
+
* **Must be of request type:** `ConnectRequest`.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### Status: `Connected`, `Session`, or `WatchSession`
|
|
57
|
+
|
|
58
|
+
The command must be of request type `JoinRequest` or `Request`.
|
|
59
|
+
|
|
60
|
+
| Command | Description | Request Data Type |
|
|
61
|
+
| :--- | :--- | :--- |
|
|
62
|
+
| `close` | Command to close a conversation; new messages cannot be added to a closed conversation. | `ConversationRequest` |
|
|
63
|
+
| `delete` | Command to delete a conversation. If a user attempts to delete a conversation where they are not the creator, they will be removed from the conversation and the participant list. | `ConversationRequest` |
|
|
64
|
+
| `update` | Command to modify a conversation; the creator can change the title and participant list. | `ConversationRequest` |
|
|
65
|
+
| `find` | Search for messages in conversations. | `FindRequest` |
|
|
66
|
+
| `load` | Retrieve the list of the user's conversations. | `LoadRequest` |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
### Status: `Connected`
|
|
71
|
+
|
|
72
|
+
The command must be of request type `JoinRequest`.
|
|
73
|
+
|
|
74
|
+
| Command | Description |
|
|
75
|
+
| :--- | :--- |
|
|
76
|
+
| `join` | Join a conversation. |
|
|
77
|
+
| `watch` | Monitor changes in conversations. |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### Status: `Session`
|
|
82
|
+
|
|
83
|
+
The command must be of request type `Request`.
|
|
84
|
+
|
|
85
|
+
| Command | Description | Request Data Type |
|
|
86
|
+
| :--- | :--- | :--- |
|
|
87
|
+
| `text` | Add a text message to the current conversation. | `TextMessage` |
|
|
88
|
+
| `file` | Add a message with a link to an external resource in the current conversation. | `FileMessage` |
|
|
89
|
+
| `message-update` | Command to edit a message in the current conversation; the author can modify it. | `MessageUpdate` |
|
|
90
|
+
| `message-delete` | Command to delete a message in the current conversation; the author can delete it. | `MessageDelete` |
|
|
91
|
+
| `load-messages` | Command to load messages in the current conversation. | `LoadRequest` |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Error Handling
|
|
96
|
+
|
|
97
|
+
Any other command or an incorrect request type is considered an error and results in forced connection termination and disconnection of the client from the service.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { UserStore } from '@only-chat/types/userStore.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { MessageStore } from '@only-chat/types/store.js';
|
|
3
3
|
import type { Log } from '@only-chat/types/log.js';
|
|
4
4
|
import type { Message as QueueMessage, MessageQueue } from '@only-chat/types/queue.js';
|
|
5
5
|
import type { Transport } from '@only-chat/types/transport.js';
|
|
@@ -14,17 +14,11 @@ export declare enum TransportState {
|
|
|
14
14
|
CLOSED = 3
|
|
15
15
|
}
|
|
16
16
|
export interface Config {
|
|
17
|
-
queue
|
|
17
|
+
queue?: MessageQueue;
|
|
18
18
|
store: MessageStore;
|
|
19
19
|
userStore: UserStore;
|
|
20
20
|
instanceId: string;
|
|
21
21
|
}
|
|
22
|
-
export interface LoadRequest {
|
|
23
|
-
from?: number;
|
|
24
|
-
size?: number;
|
|
25
|
-
excludeIds?: string[];
|
|
26
|
-
before?: Date;
|
|
27
|
-
}
|
|
28
22
|
interface ConversationInfo {
|
|
29
23
|
participants: Set<string>;
|
|
30
24
|
clients: WsClient[];
|
|
@@ -41,15 +35,16 @@ export declare class WsClient {
|
|
|
41
35
|
static readonly connectedClients: Set<string>;
|
|
42
36
|
static readonly watchers: Map<string, WsClient>;
|
|
43
37
|
static readonly conversations: Map<string, ConversationInfo>;
|
|
38
|
+
static readonly joinedParticipants: Map<string, Set<string>>;
|
|
44
39
|
private static readonly conversationsCache;
|
|
45
40
|
connectionId?: string;
|
|
46
|
-
conversation?: Conversation;
|
|
47
|
-
state: WsClientState;
|
|
48
41
|
id?: string;
|
|
42
|
+
state: WsClientState;
|
|
49
43
|
private readonly transport;
|
|
44
|
+
private conversation?;
|
|
50
45
|
private lastError?;
|
|
51
46
|
constructor(t: Transport);
|
|
52
|
-
static addClient
|
|
47
|
+
private static addClient;
|
|
53
48
|
private static removeClient;
|
|
54
49
|
private static addWatchClient;
|
|
55
50
|
private static removeWatchClient;
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,45 @@ export var TransportState;
|
|
|
9
9
|
/** The connection is closed. */
|
|
10
10
|
TransportState[TransportState["CLOSED"] = 3] = "CLOSED";
|
|
11
11
|
})(TransportState || (TransportState = {}));
|
|
12
|
+
var ErrorMessage;
|
|
13
|
+
(function (ErrorMessage) {
|
|
14
|
+
ErrorMessage["AuthenticationFailed"] = "Authentication failed";
|
|
15
|
+
ErrorMessage["CloseConversationFailed"] = "Close conversation failed";
|
|
16
|
+
ErrorMessage["ConversationAlreadyClosed"] = "Conversation already closed";
|
|
17
|
+
ErrorMessage["ConversationClosed"] = "Conversation closed";
|
|
18
|
+
ErrorMessage["ConversationNotFound"] = "Conversation not found";
|
|
19
|
+
ErrorMessage["ConversationTitleRequired"] = "Conversation title required";
|
|
20
|
+
ErrorMessage["DeleteMessageFailed"] = "Delete message failed";
|
|
21
|
+
ErrorMessage["IndexMessageFailed"] = "Index message failed";
|
|
22
|
+
ErrorMessage["LessThanTwoParticipants"] = "Less than 2 participants";
|
|
23
|
+
ErrorMessage["SaveConversationFailed"] = "Save conversation failed";
|
|
24
|
+
ErrorMessage["UpdateConversationFailed"] = "Update conversation failed";
|
|
25
|
+
ErrorMessage["UpdateMessageFailed"] = "Update message failed";
|
|
26
|
+
ErrorMessage["UserNotAllowedToCloseConversation"] = "User is not allowed to close conversation";
|
|
27
|
+
ErrorMessage["UserNotAllowedToDeleteMessage"] = "User is not allowed to delete message";
|
|
28
|
+
ErrorMessage["UserNotAllowedToUpdateConversation"] = "User is not allowed to update conversation";
|
|
29
|
+
ErrorMessage["UserNotAllowedToUpdateMessage"] = "User is not allowed to update message";
|
|
30
|
+
ErrorMessage["UnableToGetPeerToPeerConversationIdentifier"] = "Unable to get peer to peer conversation identifier";
|
|
31
|
+
ErrorMessage["WrongConversation"] = "Wrong conversation";
|
|
32
|
+
ErrorMessage["WrongConversationIdentifier"] = "Wrong conversation identifier";
|
|
33
|
+
ErrorMessage["WrongFileName"] = "Wrong file name";
|
|
34
|
+
ErrorMessage["WrongMessage"] = "Wrong message";
|
|
35
|
+
ErrorMessage["WrongMessageType"] = "Wrong message type";
|
|
36
|
+
ErrorMessage["WrongRequestType"] = "Wrong request type";
|
|
37
|
+
})(ErrorMessage || (ErrorMessage = {}));
|
|
38
|
+
var StopStatus;
|
|
39
|
+
(function (StopStatus) {
|
|
40
|
+
StopStatus["Deleted"] = "Deleted";
|
|
41
|
+
StopStatus["FailedConnect"] = "Failed connect";
|
|
42
|
+
StopStatus["FailedJoin"] = "Failed join";
|
|
43
|
+
StopStatus["FailedProcessConversationRequest"] = "Failed processing conversation request";
|
|
44
|
+
StopStatus["FailedProcessMessage"] = "Failed processing message";
|
|
45
|
+
StopStatus["FailedProcessRequest"] = "Failed processing request";
|
|
46
|
+
StopStatus["FailedWatch"] = "Failed watch";
|
|
47
|
+
StopStatus["Removed"] = "Removed";
|
|
48
|
+
StopStatus["RemovedByPrticipant"] = "Removed by new participant";
|
|
49
|
+
StopStatus["Stopped"] = "Stopped";
|
|
50
|
+
})(StopStatus || (StopStatus = {}));
|
|
12
51
|
export var WsClientState;
|
|
13
52
|
(function (WsClientState) {
|
|
14
53
|
WsClientState[WsClientState["None"] = 0] = "None";
|
|
@@ -19,12 +58,12 @@ export var WsClientState;
|
|
|
19
58
|
WsClientState[WsClientState["Disconnected"] = 255] = "Disconnected";
|
|
20
59
|
})(WsClientState || (WsClientState = {}));
|
|
21
60
|
const defaultSize = 100;
|
|
22
|
-
const sendStates = [WsClientState.Connected, WsClientState.Session, WsClientState.WatchSession];
|
|
23
|
-
const connectedRequestTypes = ['close', 'delete', 'load', 'update'];
|
|
61
|
+
const sendStates = new Set([WsClientState.Connected, WsClientState.Session, WsClientState.WatchSession]);
|
|
62
|
+
const connectedRequestTypes = new Set(['close', 'delete', 'find', 'load', 'update']);
|
|
24
63
|
const types = ['file', 'text'];
|
|
25
64
|
let instanceId = undefined;
|
|
26
65
|
let logger;
|
|
27
|
-
let queue
|
|
66
|
+
let queue;
|
|
28
67
|
let store = undefined;
|
|
29
68
|
let userStore = undefined;
|
|
30
69
|
export class WsClient {
|
|
@@ -32,12 +71,13 @@ export class WsClient {
|
|
|
32
71
|
static connectedClients = new Set();
|
|
33
72
|
static watchers = new Map();
|
|
34
73
|
static conversations = new Map();
|
|
74
|
+
static joinedParticipants = new Map();
|
|
35
75
|
static conversationsCache = new Map();
|
|
36
76
|
connectionId;
|
|
37
|
-
conversation;
|
|
38
|
-
state = WsClientState.None;
|
|
39
77
|
id;
|
|
78
|
+
state = WsClientState.None;
|
|
40
79
|
transport;
|
|
80
|
+
conversation;
|
|
41
81
|
lastError;
|
|
42
82
|
constructor(t) {
|
|
43
83
|
this.transport = t;
|
|
@@ -47,17 +87,17 @@ export class WsClient {
|
|
|
47
87
|
}
|
|
48
88
|
static async addClient(conversation, wc) {
|
|
49
89
|
let info = WsClient.conversations.get(conversation.id);
|
|
50
|
-
if (
|
|
90
|
+
if (info) {
|
|
91
|
+
info.clients.push(wc);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
51
94
|
info = { participants: new Set(conversation.participants), clients: [wc] };
|
|
52
95
|
WsClient.conversations.set(conversation.id, info);
|
|
53
96
|
WsClient.conversationsCache.delete(conversation.id);
|
|
54
97
|
}
|
|
55
|
-
else {
|
|
56
|
-
info.clients.push(wc);
|
|
57
|
-
}
|
|
58
98
|
for (const c of info.clients) {
|
|
59
99
|
if (c.id && !info.participants.has(c.id)) {
|
|
60
|
-
await c.stop(
|
|
100
|
+
await c.stop(StopStatus.RemovedByPrticipant);
|
|
61
101
|
}
|
|
62
102
|
}
|
|
63
103
|
}
|
|
@@ -83,16 +123,9 @@ export class WsClient {
|
|
|
83
123
|
return true;
|
|
84
124
|
}
|
|
85
125
|
static addWatchClient(wc) {
|
|
86
|
-
|
|
87
|
-
WsClient.watchers.set(wc.id, wc);
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
return false;
|
|
126
|
+
WsClient.watchers.set(wc.id, wc);
|
|
91
127
|
}
|
|
92
128
|
static removeWatchClient(wc) {
|
|
93
|
-
if (!wc.id) {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
129
|
const result = WsClient.watchers.delete(wc.id);
|
|
97
130
|
if (result) {
|
|
98
131
|
const toRemove = [];
|
|
@@ -106,7 +139,7 @@ export class WsClient {
|
|
|
106
139
|
toRemove.push(k);
|
|
107
140
|
}
|
|
108
141
|
});
|
|
109
|
-
toRemove.forEach(WsClient.conversationsCache.delete);
|
|
142
|
+
toRemove.forEach(id => WsClient.conversationsCache.delete(id));
|
|
110
143
|
}
|
|
111
144
|
return result;
|
|
112
145
|
}
|
|
@@ -137,7 +170,7 @@ export class WsClient {
|
|
|
137
170
|
}
|
|
138
171
|
let participants = WsClient.conversationsCache.get(conversationId);
|
|
139
172
|
if (!participants) {
|
|
140
|
-
const conversation = await store.
|
|
173
|
+
const conversation = await store.getParticipantConversationById(undefined, conversationId);
|
|
141
174
|
if (!conversation) {
|
|
142
175
|
return;
|
|
143
176
|
}
|
|
@@ -146,12 +179,11 @@ export class WsClient {
|
|
|
146
179
|
}
|
|
147
180
|
return participants;
|
|
148
181
|
}
|
|
149
|
-
static async publishToWsList(conversationId, action
|
|
182
|
+
static async publishToWsList(conversationId, action) {
|
|
150
183
|
const tasks = [];
|
|
151
184
|
const info = WsClient.conversations.get(conversationId);
|
|
152
185
|
if (info) {
|
|
153
186
|
info.clients.forEach(client => {
|
|
154
|
-
l?.push(client.id);
|
|
155
187
|
tasks.push(action(client, info.participants));
|
|
156
188
|
});
|
|
157
189
|
}
|
|
@@ -160,7 +192,6 @@ export class WsClient {
|
|
|
160
192
|
participants?.forEach(id => {
|
|
161
193
|
const client = WsClient.watchers.get(id);
|
|
162
194
|
if (client) {
|
|
163
|
-
l?.push(client.id);
|
|
164
195
|
tasks.push(action(client));
|
|
165
196
|
}
|
|
166
197
|
});
|
|
@@ -168,7 +199,7 @@ export class WsClient {
|
|
|
168
199
|
return Promise.all(tasks);
|
|
169
200
|
}
|
|
170
201
|
static async syncConversation(conversationId) {
|
|
171
|
-
const conversation = await store.
|
|
202
|
+
const conversation = await store.getParticipantConversationById(undefined, conversationId);
|
|
172
203
|
if (!conversation) {
|
|
173
204
|
return false;
|
|
174
205
|
}
|
|
@@ -197,10 +228,10 @@ export class WsClient {
|
|
|
197
228
|
WsClient.publishToWatchList(qm.fromId, wc => {
|
|
198
229
|
if (qm.connectionId !== wc.connectionId || qm.instanceId !== instanceId) {
|
|
199
230
|
wc.send({
|
|
231
|
+
type: qm.type,
|
|
200
232
|
id: qm.id,
|
|
201
233
|
connectionId: qm.connectionId,
|
|
202
234
|
fromId: qm.fromId,
|
|
203
|
-
type: qm.type,
|
|
204
235
|
createdAt: qm.createdAt,
|
|
205
236
|
});
|
|
206
237
|
}
|
|
@@ -208,14 +239,14 @@ export class WsClient {
|
|
|
208
239
|
return;
|
|
209
240
|
}
|
|
210
241
|
if (['closed', 'deleted'].includes(qm.type)) {
|
|
211
|
-
const conversationId = qm.data
|
|
242
|
+
const conversationId = qm.data?.conversationId ?? qm.conversationId;
|
|
212
243
|
if (conversationId) {
|
|
213
244
|
await WsClient.publishToWsList(conversationId, async (wc, _) => {
|
|
214
245
|
if (qm.connectionId !== wc.connectionId || qm.instanceId !== instanceId) {
|
|
215
246
|
wc.send(qm);
|
|
216
247
|
}
|
|
217
248
|
if (wc.conversation?.id === conversationId && qm.type === 'deleted') {
|
|
218
|
-
await wc.stop(
|
|
249
|
+
await wc.stop(StopStatus.Deleted);
|
|
219
250
|
}
|
|
220
251
|
});
|
|
221
252
|
if (qm.type === 'deleted') {
|
|
@@ -225,32 +256,51 @@ export class WsClient {
|
|
|
225
256
|
return;
|
|
226
257
|
}
|
|
227
258
|
switch (qm.type) {
|
|
259
|
+
case 'joined':
|
|
260
|
+
if (qm.conversationId) {
|
|
261
|
+
const participants = WsClient.joinedParticipants.get(qm.conversationId);
|
|
262
|
+
if (participants) {
|
|
263
|
+
participants.add(qm.fromId);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
WsClient.joinedParticipants.set(qm.conversationId, new Set([qm.fromId]));
|
|
267
|
+
}
|
|
268
|
+
await WsClient.publishToWsList(qm.conversationId, async (wc, _) => wc.send(qm));
|
|
269
|
+
}
|
|
270
|
+
break;
|
|
271
|
+
case 'left':
|
|
272
|
+
if (qm.conversationId) {
|
|
273
|
+
const participants = WsClient.joinedParticipants.get(qm.conversationId);
|
|
274
|
+
if (participants) {
|
|
275
|
+
participants.delete(qm.fromId);
|
|
276
|
+
if (!participants.size) {
|
|
277
|
+
WsClient.joinedParticipants.delete(qm.conversationId);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
await WsClient.publishToWsList(qm.conversationId, async (wc, _) => wc.send(qm));
|
|
281
|
+
}
|
|
282
|
+
break;
|
|
228
283
|
case 'text':
|
|
229
284
|
case 'file':
|
|
230
|
-
if (null
|
|
285
|
+
if (null == qm.data) {
|
|
231
286
|
break;
|
|
232
287
|
}
|
|
233
288
|
/* FALLTHROUGH */
|
|
234
|
-
case 'joined':
|
|
235
|
-
case 'left':
|
|
236
289
|
case 'message-updated':
|
|
237
290
|
case 'message-deleted':
|
|
238
291
|
if (qm.conversationId) {
|
|
239
|
-
|
|
240
|
-
await WsClient.publishToWsList(qm.conversationId, async (wc, _) => {
|
|
241
|
-
wc.send(qm);
|
|
242
|
-
}, ids);
|
|
292
|
+
await WsClient.publishToWsList(qm.conversationId, async (wc, _) => wc.send(qm));
|
|
243
293
|
}
|
|
244
294
|
break;
|
|
245
295
|
case 'updated':
|
|
246
296
|
{
|
|
247
|
-
const conversationId = qm.data
|
|
297
|
+
const conversationId = qm.data?.conversationId ?? qm.conversationId;
|
|
248
298
|
if (conversationId) {
|
|
249
299
|
const updated = await WsClient.syncConversation(conversationId);
|
|
250
300
|
await WsClient.publishToWsList(conversationId, async (wc, participants) => {
|
|
251
301
|
wc.send(qm);
|
|
252
302
|
if (updated && false === participants?.has(wc.id)) {
|
|
253
|
-
await wc.stop(
|
|
303
|
+
await wc.stop(StopStatus.Removed);
|
|
254
304
|
}
|
|
255
305
|
});
|
|
256
306
|
}
|
|
@@ -267,40 +317,46 @@ export class WsClient {
|
|
|
267
317
|
conversationId: this.conversation?.id,
|
|
268
318
|
participants: this.conversation?.participants,
|
|
269
319
|
connectionId: this.connectionId,
|
|
270
|
-
clientMessageId: clientMessageId,
|
|
271
320
|
fromId: this.id,
|
|
321
|
+
clientMessageId: clientMessageId,
|
|
272
322
|
createdAt,
|
|
273
323
|
data: data,
|
|
274
324
|
};
|
|
275
325
|
const response = await store.saveMessage(m);
|
|
276
326
|
if (response.result !== 'created') {
|
|
277
|
-
|
|
327
|
+
const err = ErrorMessage.IndexMessageFailed;
|
|
328
|
+
if (!this.lastError) {
|
|
329
|
+
this.lastError = err;
|
|
330
|
+
}
|
|
331
|
+
logger?.error(err);
|
|
278
332
|
return false;
|
|
279
333
|
}
|
|
280
334
|
id = response?._id;
|
|
281
335
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
336
|
+
const message = {
|
|
337
|
+
type,
|
|
338
|
+
id,
|
|
339
|
+
instanceId,
|
|
340
|
+
conversationId: this.conversation?.id,
|
|
341
|
+
participants: this.conversation?.participants,
|
|
342
|
+
connectionId: this.connectionId,
|
|
343
|
+
fromId: this.id,
|
|
344
|
+
clientMessageId: clientMessageId,
|
|
345
|
+
createdAt,
|
|
346
|
+
data: data,
|
|
347
|
+
};
|
|
348
|
+
if (queue && (!Array.isArray(queue.acceptTypes) || queue.acceptTypes.includes(type))) {
|
|
349
|
+
return await queue.publish(message);
|
|
295
350
|
}
|
|
351
|
+
await WsClient.translateQueueMessage(message);
|
|
296
352
|
return true;
|
|
297
353
|
}
|
|
298
354
|
send(msg) {
|
|
299
|
-
if (this.transport && this.transport.readyState === TransportState.OPEN && sendStates.
|
|
355
|
+
if (this.transport && this.transport.readyState === TransportState.OPEN && sendStates.has(this.state)) {
|
|
300
356
|
return this.transport.send(JSON.stringify(msg), { binary: false, fin: true });
|
|
301
357
|
}
|
|
302
358
|
}
|
|
303
|
-
async stop(
|
|
359
|
+
async stop(status, err) {
|
|
304
360
|
if (logger && err?.message) {
|
|
305
361
|
logger.error(err.message);
|
|
306
362
|
}
|
|
@@ -310,6 +366,7 @@ export class WsClient {
|
|
|
310
366
|
this.state = WsClientState.Disconnected;
|
|
311
367
|
const maxStatusLen = 123;
|
|
312
368
|
const dotSpace = '. ';
|
|
369
|
+
let statusDescription = status;
|
|
313
370
|
[this.lastError, err?.message].forEach(v => {
|
|
314
371
|
if (v && statusDescription.length + dotSpace.length < maxStatusLen) {
|
|
315
372
|
statusDescription += dotSpace + v.substring(0, maxStatusLen - statusDescription.length - dotSpace.length);
|
|
@@ -324,9 +381,6 @@ export class WsClient {
|
|
|
324
381
|
if ([TransportState.CLOSING, TransportState.CLOSED].includes(this.transport.readyState)) {
|
|
325
382
|
return;
|
|
326
383
|
}
|
|
327
|
-
if (statusDescription.length > maxStatusLen) {
|
|
328
|
-
statusDescription = statusDescription.substring(0, maxStatusLen);
|
|
329
|
-
}
|
|
330
384
|
this.transport.close(err ? 1011 : 1000, statusDescription);
|
|
331
385
|
this.transport.removeAllListeners();
|
|
332
386
|
}
|
|
@@ -344,7 +398,7 @@ export class WsClient {
|
|
|
344
398
|
if (data.conversationId) {
|
|
345
399
|
conversation = await store.getParticipantConversationById(this.id, data.conversationId);
|
|
346
400
|
if (!conversation?.id) {
|
|
347
|
-
this.lastError =
|
|
401
|
+
this.lastError = ErrorMessage.WrongConversation;
|
|
348
402
|
return false;
|
|
349
403
|
}
|
|
350
404
|
}
|
|
@@ -352,42 +406,45 @@ export class WsClient {
|
|
|
352
406
|
const participants = new Set(data.participants?.map(p => p.trim()).filter(s => s.length));
|
|
353
407
|
participants.add(this.id);
|
|
354
408
|
if (participants.size < 2) {
|
|
355
|
-
this.lastError =
|
|
409
|
+
this.lastError = ErrorMessage.LessThanTwoParticipants;
|
|
356
410
|
return false;
|
|
357
411
|
}
|
|
358
412
|
let conversationId;
|
|
359
413
|
const participantsArray = Array.from(participants);
|
|
360
414
|
if (!data.title && participants.size == 2) {
|
|
361
|
-
|
|
362
|
-
if (!
|
|
363
|
-
this.lastError =
|
|
415
|
+
const conversationIdResult = await store.getPeerToPeerConversationId(participantsArray[0], participantsArray[1]);
|
|
416
|
+
if (!conversationIdResult?.id) {
|
|
417
|
+
this.lastError = ErrorMessage.UnableToGetPeerToPeerConversationIdentifier;
|
|
364
418
|
logger?.error(this.lastError);
|
|
365
419
|
return false;
|
|
366
420
|
}
|
|
367
|
-
|
|
421
|
+
created = conversationIdResult.result === 'created';
|
|
422
|
+
conversationId = conversationIdResult?.id;
|
|
423
|
+
conversation = await store.getParticipantConversationById(undefined, conversationId);
|
|
368
424
|
}
|
|
369
425
|
else if (!data.title) {
|
|
370
|
-
this.lastError =
|
|
426
|
+
this.lastError = ErrorMessage.ConversationTitleRequired;
|
|
371
427
|
return false;
|
|
372
428
|
}
|
|
373
429
|
const conversationsParticipans = conversation ? new Set(conversation.participants) : undefined;
|
|
374
|
-
if (
|
|
375
|
-
|| participants.size !== conversationsParticipans.size
|
|
430
|
+
if (participants.size !== conversationsParticipans?.size
|
|
376
431
|
|| participantsArray.some(p => !conversationsParticipans.has(p))) {
|
|
377
432
|
const now = new Date();
|
|
378
433
|
conversation = {
|
|
379
434
|
id: conversationId,
|
|
380
435
|
participants: participantsArray,
|
|
381
|
-
title:
|
|
382
|
-
createdBy: conversation?.createdBy ?? this.id,
|
|
383
|
-
updatedAt: conversation?.createdAt ? now : undefined,
|
|
436
|
+
title: data.title,
|
|
437
|
+
createdBy: conversation?.createdBy ?? (conversationId ? '' : this.id),
|
|
384
438
|
createdAt: conversation?.createdAt ?? now,
|
|
439
|
+
updatedAt: conversation?.createdAt ? now : undefined,
|
|
385
440
|
};
|
|
386
441
|
const response = await store.saveConversation(conversation);
|
|
387
|
-
created
|
|
442
|
+
if (!created) {
|
|
443
|
+
created = response.result === 'created';
|
|
444
|
+
}
|
|
388
445
|
if (!created && response.result !== 'updated') {
|
|
389
446
|
logger?.error(`Save conversation with id ${conversation.id} failed`);
|
|
390
|
-
this.lastError =
|
|
447
|
+
this.lastError = ErrorMessage.SaveConversationFailed;
|
|
391
448
|
return false;
|
|
392
449
|
}
|
|
393
450
|
conversation.id = response._id;
|
|
@@ -396,9 +453,9 @@ export class WsClient {
|
|
|
396
453
|
this.state = WsClientState.Session;
|
|
397
454
|
this.conversation = conversation;
|
|
398
455
|
await WsClient.addClient(conversation, this);
|
|
399
|
-
const size = data.messagesSize
|
|
456
|
+
const size = data.messagesSize ?? defaultSize;
|
|
400
457
|
let lastMessage = undefined;
|
|
401
|
-
let
|
|
458
|
+
let messages = undefined;
|
|
402
459
|
if (!created) {
|
|
403
460
|
const fr = {
|
|
404
461
|
size,
|
|
@@ -407,19 +464,17 @@ export class WsClient {
|
|
|
407
464
|
sort: 'createdAt',
|
|
408
465
|
sortDesc: true,
|
|
409
466
|
};
|
|
410
|
-
|
|
467
|
+
messages = await store.findMessages(fr);
|
|
411
468
|
lastMessage = await store.getParticipantLastMessage(this.id, conversation.id);
|
|
412
469
|
}
|
|
413
|
-
const connected = conversation.participants.filter(p => WsClient.
|
|
470
|
+
const connected = conversation.participants.filter(p => p === this.id || WsClient.joinedParticipants.get(conversation.id)?.has(p));
|
|
414
471
|
const joined = {
|
|
415
472
|
type: 'conversation',
|
|
416
473
|
clientMessageId: request.clientMessageId,
|
|
417
474
|
conversation,
|
|
418
475
|
connected,
|
|
419
|
-
messages
|
|
420
|
-
total: oldMessages?.total,
|
|
476
|
+
messages,
|
|
421
477
|
leftAt: lastMessage?.createdAt,
|
|
422
|
-
closedAt: conversation.closedAt,
|
|
423
478
|
};
|
|
424
479
|
this.send(joined);
|
|
425
480
|
logger?.debug(`Client with id ${this.id} added successfully`);
|
|
@@ -427,21 +482,23 @@ export class WsClient {
|
|
|
427
482
|
}
|
|
428
483
|
onMessage(data, isBinary) {
|
|
429
484
|
try {
|
|
430
|
-
if (!(data instanceof Buffer)) {
|
|
431
|
-
throw new Error('Wrong message');
|
|
432
|
-
}
|
|
433
485
|
if (isBinary) {
|
|
434
|
-
|
|
486
|
+
logger?.error('Binary message received');
|
|
487
|
+
throw new Error('Binary message');
|
|
488
|
+
}
|
|
489
|
+
if (!(data instanceof Buffer)) {
|
|
490
|
+
throw new TypeError('Wrong transport');
|
|
435
491
|
}
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
492
|
+
const msg = JSON.parse(data.toString());
|
|
493
|
+
if (msg && sendStates.has(this.state)) {
|
|
494
|
+
const request = msg;
|
|
495
|
+
if (request && connectedRequestTypes.has(request.type)) {
|
|
496
|
+
this.processRequest(request).then(result => {
|
|
440
497
|
if (!result) {
|
|
441
|
-
this.stop(
|
|
498
|
+
this.stop(StopStatus.FailedProcessRequest);
|
|
442
499
|
}
|
|
443
500
|
}).catch(e => {
|
|
444
|
-
this.stop(
|
|
501
|
+
this.stop(StopStatus.FailedProcessRequest, e);
|
|
445
502
|
});
|
|
446
503
|
return;
|
|
447
504
|
}
|
|
@@ -449,32 +506,37 @@ export class WsClient {
|
|
|
449
506
|
switch (this.state) {
|
|
450
507
|
case WsClientState.None:
|
|
451
508
|
{
|
|
452
|
-
const request =
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
509
|
+
const request = msg;
|
|
510
|
+
if (request) {
|
|
511
|
+
this.connect(request).then(response => {
|
|
512
|
+
if (!response) {
|
|
513
|
+
this.stop(StopStatus.FailedConnect);
|
|
514
|
+
}
|
|
515
|
+
}).catch(e => {
|
|
516
|
+
this.stop(StopStatus.FailedConnect, e);
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
else {
|
|
520
|
+
this.stop(StopStatus.FailedConnect);
|
|
521
|
+
}
|
|
460
522
|
}
|
|
461
523
|
break;
|
|
462
524
|
case WsClientState.Connected:
|
|
463
525
|
{
|
|
464
|
-
const request =
|
|
465
|
-
switch (request
|
|
526
|
+
const request = msg;
|
|
527
|
+
switch (request?.type) {
|
|
466
528
|
case 'join':
|
|
467
529
|
this.join(request).then(response => {
|
|
468
530
|
if (!response) {
|
|
469
|
-
this.stop(
|
|
531
|
+
this.stop(StopStatus.FailedJoin);
|
|
470
532
|
}
|
|
471
533
|
}).catch(e => {
|
|
472
|
-
this.stop(
|
|
534
|
+
this.stop(StopStatus.FailedJoin, e);
|
|
473
535
|
});
|
|
474
536
|
break;
|
|
475
537
|
case 'watch':
|
|
476
538
|
this.watch().catch(e => {
|
|
477
|
-
this.stop(
|
|
539
|
+
this.stop(StopStatus.FailedWatch, e);
|
|
478
540
|
});
|
|
479
541
|
break;
|
|
480
542
|
default:
|
|
@@ -483,39 +545,35 @@ export class WsClient {
|
|
|
483
545
|
}
|
|
484
546
|
break;
|
|
485
547
|
case WsClientState.Session:
|
|
486
|
-
case WsClientState.WatchSession:
|
|
487
548
|
{
|
|
488
|
-
const request =
|
|
549
|
+
const request = msg;
|
|
489
550
|
if (request) {
|
|
490
551
|
this.processConversationRequest(request).then(result => {
|
|
491
552
|
if (!result) {
|
|
492
|
-
this.stop(
|
|
553
|
+
this.stop(StopStatus.FailedProcessConversationRequest);
|
|
493
554
|
}
|
|
494
555
|
}).catch(e => {
|
|
495
|
-
this.stop(
|
|
556
|
+
this.stop(StopStatus.FailedProcessConversationRequest, e);
|
|
496
557
|
});
|
|
497
558
|
}
|
|
498
559
|
else {
|
|
499
|
-
|
|
560
|
+
throw new Error('Wrong message');
|
|
500
561
|
}
|
|
501
562
|
}
|
|
502
563
|
break;
|
|
503
|
-
case WsClientState.Disconnected:
|
|
504
|
-
break;
|
|
505
564
|
}
|
|
506
565
|
}
|
|
507
566
|
catch (e) {
|
|
508
|
-
this.stop(
|
|
567
|
+
this.stop(StopStatus.FailedProcessMessage, e);
|
|
509
568
|
}
|
|
510
569
|
}
|
|
511
570
|
onClose() {
|
|
512
|
-
this.stop(
|
|
571
|
+
this.stop(StopStatus.Stopped).finally(() => {
|
|
513
572
|
if (this.conversation?.id) {
|
|
514
573
|
WsClient.removeClient(this.conversation.id, this);
|
|
515
574
|
logger?.debug(`Client with id ${this.id} removed successfully`);
|
|
516
575
|
}
|
|
517
|
-
else if (
|
|
518
|
-
WsClient.removeWatchClient(this);
|
|
576
|
+
else if (WsClient.removeWatchClient(this)) {
|
|
519
577
|
logger?.debug(`Watch client with id ${this.id} removed successfully`);
|
|
520
578
|
}
|
|
521
579
|
delete this.conversation;
|
|
@@ -525,17 +583,22 @@ export class WsClient {
|
|
|
525
583
|
const findResult = await store.findMessages({
|
|
526
584
|
ids: [request.messageId],
|
|
527
585
|
conversationIds: [this.conversation.id],
|
|
586
|
+
types,
|
|
528
587
|
});
|
|
529
588
|
const message = findResult.messages?.[0];
|
|
530
|
-
if (!message
|
|
531
|
-
this.lastError =
|
|
589
|
+
if (!message) {
|
|
590
|
+
this.lastError = ErrorMessage.WrongMessage;
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
593
|
+
if (message.fromId != this.id) {
|
|
594
|
+
this.lastError = ErrorMessage.UserNotAllowedToDeleteMessage;
|
|
532
595
|
return false;
|
|
533
596
|
}
|
|
534
|
-
message.deletedAt =
|
|
597
|
+
message.deletedAt = request.deletedAt;
|
|
535
598
|
const response = await store.saveMessage(message);
|
|
536
599
|
if (response.result !== 'updated') {
|
|
537
600
|
logger?.error(`Delete message with id ${message.id} failed`);
|
|
538
|
-
this.lastError =
|
|
601
|
+
this.lastError = ErrorMessage.DeleteMessageFailed;
|
|
539
602
|
return false;
|
|
540
603
|
}
|
|
541
604
|
logger?.debug(`Message with id ${message.id} was deleted successfully`);
|
|
@@ -545,20 +608,25 @@ export class WsClient {
|
|
|
545
608
|
const findResult = await store.findMessages({
|
|
546
609
|
ids: [request.messageId],
|
|
547
610
|
conversationIds: [this.conversation.id],
|
|
611
|
+
types,
|
|
548
612
|
});
|
|
549
613
|
const message = findResult.messages?.[0];
|
|
550
614
|
if (!message) {
|
|
551
|
-
this.lastError =
|
|
615
|
+
this.lastError = ErrorMessage.WrongMessage;
|
|
552
616
|
return false;
|
|
553
617
|
}
|
|
554
618
|
if (message.fromId !== this.id) {
|
|
555
|
-
this.lastError =
|
|
619
|
+
this.lastError = ErrorMessage.UserNotAllowedToUpdateMessage;
|
|
556
620
|
return false;
|
|
557
621
|
}
|
|
558
622
|
switch (message.type) {
|
|
559
623
|
case 'file':
|
|
560
624
|
{
|
|
561
625
|
const { link, name, type, size } = request;
|
|
626
|
+
if (!name) {
|
|
627
|
+
this.lastError = ErrorMessage.WrongFileName;
|
|
628
|
+
return false;
|
|
629
|
+
}
|
|
562
630
|
message.data = { link, name, type, size };
|
|
563
631
|
}
|
|
564
632
|
break;
|
|
@@ -569,32 +637,30 @@ export class WsClient {
|
|
|
569
637
|
}
|
|
570
638
|
break;
|
|
571
639
|
}
|
|
572
|
-
message.updatedAt =
|
|
640
|
+
message.updatedAt = request.updatedAt;
|
|
573
641
|
const response = await store.saveMessage(message);
|
|
574
642
|
if (response.result !== 'updated') {
|
|
575
643
|
logger?.error(`Update message with id ${message.id} failed`);
|
|
576
|
-
this.lastError =
|
|
644
|
+
this.lastError = ErrorMessage.UpdateMessageFailed;
|
|
577
645
|
return false;
|
|
578
646
|
}
|
|
579
647
|
logger?.debug(`Message with id ${message.id} was updated successfully`);
|
|
580
648
|
return true;
|
|
581
649
|
}
|
|
582
650
|
async updateConversation(data) {
|
|
583
|
-
const conversation = data.conversationId ? await store.
|
|
651
|
+
const conversation = data.conversationId ? await store.getParticipantConversationById(this.id, data.conversationId) : this.conversation;
|
|
584
652
|
if (!conversation || this.id !== conversation.createdBy) {
|
|
585
653
|
//Only creator can update conversation
|
|
586
|
-
this.lastError =
|
|
654
|
+
this.lastError = ErrorMessage.UserNotAllowedToUpdateConversation;
|
|
587
655
|
return false;
|
|
588
656
|
}
|
|
589
657
|
conversation.title = data.title;
|
|
590
658
|
conversation.updatedAt = data.updatedAt;
|
|
591
|
-
|
|
592
|
-
data.participants?.forEach(p => participants.add(p));
|
|
593
|
-
conversation.participants = Array.from(participants);
|
|
659
|
+
conversation.participants = data.participants;
|
|
594
660
|
const response = await store.saveConversation(conversation);
|
|
595
661
|
if (response.result !== 'updated') {
|
|
596
662
|
logger?.error(`Update conversation with id ${conversation.id} failed`);
|
|
597
|
-
this.lastError =
|
|
663
|
+
this.lastError = ErrorMessage.UpdateConversationFailed;
|
|
598
664
|
return false;
|
|
599
665
|
}
|
|
600
666
|
logger?.debug(`Conversation with id ${conversation.id} was updated successfully`);
|
|
@@ -603,21 +669,17 @@ export class WsClient {
|
|
|
603
669
|
async closeDeleteConversation(data, del) {
|
|
604
670
|
const id = data.conversationId ?? this.conversation?.id;
|
|
605
671
|
if (!id) {
|
|
606
|
-
this.lastError =
|
|
672
|
+
this.lastError = ErrorMessage.WrongConversationIdentifier;
|
|
607
673
|
return null;
|
|
608
674
|
}
|
|
609
|
-
const conversation = await store.
|
|
675
|
+
const conversation = await store.getParticipantConversationById(this.id, id);
|
|
610
676
|
if (!conversation) {
|
|
611
677
|
//Only creator can close or delete conversation
|
|
612
|
-
this.lastError =
|
|
678
|
+
this.lastError = ErrorMessage.ConversationNotFound;
|
|
613
679
|
return null;
|
|
614
680
|
}
|
|
615
681
|
if (!del && conversation.closedAt) {
|
|
616
|
-
this.lastError =
|
|
617
|
-
return null;
|
|
618
|
-
}
|
|
619
|
-
if (conversation.deletedAt) {
|
|
620
|
-
this.lastError = 'Conversation already deleted';
|
|
682
|
+
this.lastError = ErrorMessage.ConversationAlreadyClosed;
|
|
621
683
|
return null;
|
|
622
684
|
}
|
|
623
685
|
let type = 'updated';
|
|
@@ -634,22 +696,18 @@ export class WsClient {
|
|
|
634
696
|
}
|
|
635
697
|
else if (del) {
|
|
636
698
|
//leave conversation
|
|
637
|
-
const count = conversation.participants.length;
|
|
638
699
|
conversation.participants = conversation.participants.filter(p => p !== this.id);
|
|
639
|
-
|
|
640
|
-
this.lastError = 'User is not allowed to delete conversation';
|
|
641
|
-
return null;
|
|
642
|
-
}
|
|
700
|
+
conversation.updatedAt = data.deletedAt;
|
|
643
701
|
data.participants = conversation.participants;
|
|
644
702
|
}
|
|
645
703
|
else {
|
|
646
|
-
this.lastError =
|
|
704
|
+
this.lastError = ErrorMessage.UserNotAllowedToCloseConversation;
|
|
647
705
|
return null;
|
|
648
706
|
}
|
|
649
707
|
const response = await store.saveConversation(conversation);
|
|
650
708
|
if (response.result !== 'updated') {
|
|
651
709
|
logger?.error(`Close conversation with id ${conversation.id} failed`);
|
|
652
|
-
this.lastError =
|
|
710
|
+
this.lastError = ErrorMessage.CloseConversationFailed;
|
|
653
711
|
return null;
|
|
654
712
|
}
|
|
655
713
|
logger?.debug(`Conversation with id ${conversation.id} was updated successfully`);
|
|
@@ -657,44 +715,57 @@ export class WsClient {
|
|
|
657
715
|
}
|
|
658
716
|
async processRequest(request) {
|
|
659
717
|
if (!request.data) {
|
|
660
|
-
this.lastError =
|
|
718
|
+
this.lastError = ErrorMessage.WrongMessage;
|
|
661
719
|
return false;
|
|
662
720
|
}
|
|
721
|
+
const clientMessageId = request.clientMessageId;
|
|
663
722
|
switch (request.type) {
|
|
664
723
|
case 'close':
|
|
665
724
|
case 'delete':
|
|
666
725
|
{
|
|
726
|
+
const { conversationId } = request.data;
|
|
667
727
|
const now = new Date();
|
|
668
|
-
|
|
669
|
-
conversationId
|
|
728
|
+
const data = {
|
|
729
|
+
conversationId,
|
|
670
730
|
closedAt: now,
|
|
671
731
|
};
|
|
672
732
|
const del = request.type === 'delete';
|
|
673
733
|
if (del) {
|
|
674
734
|
data.deletedAt = now;
|
|
675
735
|
}
|
|
676
|
-
|
|
736
|
+
const type = await this.closeDeleteConversation(data, del);
|
|
677
737
|
if (type) {
|
|
678
|
-
|
|
679
|
-
|
|
738
|
+
if (type === "updated") {
|
|
739
|
+
delete data.closedAt;
|
|
740
|
+
delete data.deletedAt;
|
|
741
|
+
data.updatedAt = now;
|
|
742
|
+
}
|
|
743
|
+
this.send({ type, clientMessageId, data });
|
|
744
|
+
return this.publishMessage(type, clientMessageId, data, true);
|
|
680
745
|
}
|
|
681
746
|
}
|
|
682
747
|
break;
|
|
748
|
+
case 'find':
|
|
749
|
+
await this.findMessages(request.data, clientMessageId);
|
|
750
|
+
return true;
|
|
683
751
|
case 'load':
|
|
684
|
-
await this.loadConversations(request.data,
|
|
752
|
+
await this.loadConversations(request.data, clientMessageId);
|
|
685
753
|
return true;
|
|
686
754
|
case 'update':
|
|
687
755
|
{
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
756
|
+
const { conversationId, title, participants } = request.data;
|
|
757
|
+
const participantsSet = new Set([this.id]);
|
|
758
|
+
participants?.forEach(p => participantsSet.add(p.trim()));
|
|
759
|
+
const data = {
|
|
760
|
+
conversationId,
|
|
761
|
+
title,
|
|
762
|
+
participants: Array.from(participantsSet),
|
|
692
763
|
updatedAt: new Date(),
|
|
693
764
|
};
|
|
694
765
|
if (await this.updateConversation(data)) {
|
|
695
766
|
const type = 'updated';
|
|
696
|
-
this.send({ type, clientMessageId
|
|
697
|
-
return this.publishMessage(type,
|
|
767
|
+
this.send({ type, clientMessageId, data });
|
|
768
|
+
return this.publishMessage(type, clientMessageId, data, true);
|
|
698
769
|
}
|
|
699
770
|
}
|
|
700
771
|
break;
|
|
@@ -703,12 +774,12 @@ export class WsClient {
|
|
|
703
774
|
}
|
|
704
775
|
async processConversationRequest(request) {
|
|
705
776
|
if (!request.data) {
|
|
706
|
-
this.lastError =
|
|
777
|
+
this.lastError = ErrorMessage.WrongMessage;
|
|
707
778
|
return false;
|
|
708
779
|
}
|
|
709
780
|
const verifyConversation = () => {
|
|
710
781
|
if (this.conversation.closedAt) {
|
|
711
|
-
this.lastError =
|
|
782
|
+
this.lastError = ErrorMessage.ConversationClosed;
|
|
712
783
|
return false;
|
|
713
784
|
}
|
|
714
785
|
return true;
|
|
@@ -725,30 +796,29 @@ export class WsClient {
|
|
|
725
796
|
return false;
|
|
726
797
|
}
|
|
727
798
|
if (!request.data.name) {
|
|
728
|
-
this.lastError =
|
|
799
|
+
this.lastError = ErrorMessage.WrongFileName;
|
|
729
800
|
return false;
|
|
730
801
|
}
|
|
731
802
|
break;
|
|
732
803
|
case 'message-update':
|
|
804
|
+
request.data.updatedAt = new Date();
|
|
733
805
|
if (!await this.updateMessage(request.data)) {
|
|
734
806
|
return false;
|
|
735
807
|
}
|
|
736
808
|
broadcastType = 'message-updated';
|
|
737
809
|
break;
|
|
738
810
|
case 'message-delete':
|
|
811
|
+
request.data.deletedAt = new Date();
|
|
739
812
|
if (!await this.deleteMessage(request.data)) {
|
|
740
813
|
return false;
|
|
741
814
|
}
|
|
742
815
|
broadcastType = 'message-deleted';
|
|
743
816
|
break;
|
|
744
|
-
case 'find':
|
|
745
|
-
await this.findMessages(request.data, request.clientMessageId);
|
|
746
|
-
return true;
|
|
747
817
|
case 'load-messages':
|
|
748
818
|
await this.loadMessages(request.data, request.clientMessageId);
|
|
749
819
|
return true;
|
|
750
820
|
default:
|
|
751
|
-
this.lastError =
|
|
821
|
+
this.lastError = ErrorMessage.WrongMessageType;
|
|
752
822
|
return false;
|
|
753
823
|
}
|
|
754
824
|
return this.publishMessage(broadcastType, request.clientMessageId, request.data, true);
|
|
@@ -756,7 +826,7 @@ export class WsClient {
|
|
|
756
826
|
async connect(request) {
|
|
757
827
|
this.id = request?.authInfo && await userStore.authenticate(request.authInfo);
|
|
758
828
|
if (!this.id) {
|
|
759
|
-
this.lastError =
|
|
829
|
+
this.lastError = ErrorMessage.AuthenticationFailed;
|
|
760
830
|
return false;
|
|
761
831
|
}
|
|
762
832
|
this.state = WsClientState.Authenticated;
|
|
@@ -777,18 +847,24 @@ export class WsClient {
|
|
|
777
847
|
}), { binary: false, fin: true });
|
|
778
848
|
return this.publishMessage('connected', undefined, null, false);
|
|
779
849
|
}
|
|
780
|
-
async getConversations(from = 0, conversationsSize, excludeIds) {
|
|
850
|
+
async getConversations(from = 0, conversationsSize, ids, excludeIds) {
|
|
781
851
|
const size = conversationsSize != null && conversationsSize >= 0 ? conversationsSize : defaultSize;
|
|
782
|
-
const result = await store.getParticipantConversations(this.id, excludeIds
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
852
|
+
const result = await store.getParticipantConversations(this.id, ids, excludeIds, from, size);
|
|
853
|
+
if (!result.conversations?.length) {
|
|
854
|
+
return {
|
|
855
|
+
conversations: [],
|
|
856
|
+
from,
|
|
857
|
+
size,
|
|
858
|
+
total: result.total,
|
|
859
|
+
};
|
|
786
860
|
}
|
|
787
|
-
const
|
|
861
|
+
const conversationIds = result.conversations.map(c => c.id);
|
|
862
|
+
const messagesInfo = await store.getLastMessagesTimestamps(this.id, conversationIds);
|
|
788
863
|
const conversations = result.conversations.map(c => ({
|
|
789
|
-
|
|
790
|
-
leftAt: c.id in messagesInfo ? messagesInfo[c.id].left : undefined,
|
|
791
|
-
latestMessage: c.id in messagesInfo ? messagesInfo[c.id].latest : undefined,
|
|
864
|
+
conversation: c,
|
|
865
|
+
leftAt: (c.id) in messagesInfo ? messagesInfo[c.id].left : undefined,
|
|
866
|
+
latestMessage: (c.id) in messagesInfo ? messagesInfo[c.id].latest : undefined,
|
|
867
|
+
connected: c.participants.filter(p => WsClient.joinedParticipants.get(c.id)?.has(p)),
|
|
792
868
|
}));
|
|
793
869
|
return {
|
|
794
870
|
conversations,
|
|
@@ -798,20 +874,12 @@ export class WsClient {
|
|
|
798
874
|
};
|
|
799
875
|
}
|
|
800
876
|
async findMessages(request, clientMessageId) {
|
|
801
|
-
const result = await store.getParticipantConversations(this.id,
|
|
802
|
-
|
|
803
|
-
request.conversationIds = Array.from(new Set(result.conversations.map(c => c.id).concat(request.conversationIds)));
|
|
804
|
-
}
|
|
805
|
-
else {
|
|
806
|
-
request.conversationIds = result.conversations.map(c => c.id);
|
|
807
|
-
}
|
|
877
|
+
const result = await store.getParticipantConversations(this.id, request.conversationIds, undefined, request.from ?? 0, request.size ?? defaultSize);
|
|
878
|
+
request.conversationIds = result.conversations.map(c => c.id);
|
|
808
879
|
const findResult = await store.findMessages(request);
|
|
809
880
|
this.send({ type: 'find', clientMessageId, messages: findResult.messages, from: findResult.from, size: findResult.size, total: findResult.total });
|
|
810
881
|
}
|
|
811
882
|
async loadMessages(request, clientMessageId) {
|
|
812
|
-
if (!this.conversation?.id) {
|
|
813
|
-
return;
|
|
814
|
-
}
|
|
815
883
|
const findRequest = {
|
|
816
884
|
from: request.from,
|
|
817
885
|
size: request.size,
|
|
@@ -827,7 +895,7 @@ export class WsClient {
|
|
|
827
895
|
this.send({ type: 'loaded-messages', clientMessageId, messages: result.messages, count: result.total });
|
|
828
896
|
}
|
|
829
897
|
async loadConversations(request, clientMessageId) {
|
|
830
|
-
const result = await this.getConversations(request.from, request.size, request.excludeIds);
|
|
898
|
+
const result = await this.getConversations(request.from, request.size, request.ids, request.excludeIds);
|
|
831
899
|
this.send({ type: 'loaded', clientMessageId, conversations: result.conversations, count: result.total });
|
|
832
900
|
}
|
|
833
901
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@only-chat/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Client for only-chat",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -17,19 +17,18 @@
|
|
|
17
17
|
"author": "only-chat",
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@jest/globals": "^
|
|
21
|
-
"@only-chat/in-memory-queue": "0.
|
|
22
|
-
"@only-chat/in-memory-store": "0.
|
|
23
|
-
"@only-chat/in-memory-user-store": "0.
|
|
24
|
-
"@only-chat/types": "0.
|
|
25
|
-
"@types/jest": "^
|
|
26
|
-
"
|
|
27
|
-
"jest
|
|
28
|
-
"ts-
|
|
20
|
+
"@jest/globals": "^30.2.0",
|
|
21
|
+
"@only-chat/in-memory-queue": "1.0.0",
|
|
22
|
+
"@only-chat/in-memory-store": "1.0.0",
|
|
23
|
+
"@only-chat/in-memory-user-store": "1.0.0",
|
|
24
|
+
"@only-chat/types": "1.0.0",
|
|
25
|
+
"@types/jest": "^30.0.0",
|
|
26
|
+
"@types/node": "^25.2.3",
|
|
27
|
+
"jest": "^30.2.0",
|
|
28
|
+
"jest-ts-webcompat-resolver": "^1.0.1",
|
|
29
|
+
"ts-jest": "^29.4.6",
|
|
29
30
|
"ts-node": "^10.9.2",
|
|
30
|
-
"typescript": "^5.
|
|
31
|
-
},
|
|
32
|
-
"dependencies": {
|
|
31
|
+
"typescript": "^5.9.3"
|
|
33
32
|
},
|
|
34
33
|
"files": [
|
|
35
34
|
"dist/"
|