@webitel/chat-web-sdk 0.0.3 → 0.0.4
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/dist/index.d.ts +27 -9
- package/dist/index.js +124 -12
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _webitel_api_services_gen_models from '@webitel/api-services/gen/models';
|
|
2
|
-
import { WebitelImApiGatewayV1HistoryMessage, WebitelImApiGatewayV1SearchMessageHistoryResponse, WebitelImApiGatewayV1ContactList, WebitelImApiGatewayV1Contact, WebitelImApiGatewayV1SendTextRequest, WebitelImApiGatewayV1SendTextResponse, ContactsSearchParams, MessageHistorySearchThreadMessagesHistoryWebitelImApiGatewayV1MessageHistoryParams, WebitelImApiGatewayV1Thread, WebitelImApiGatewayV1SearchThreadResponse, ThreadManagementSearchParams } from '@webitel/api-services/gen/models';
|
|
2
|
+
import { WebitelImApiGatewayV1HistoryMessage, WebitelImApiGatewayV1SearchMessageHistoryResponse, WebitelImApiGatewayV1SendDocumentRequest, WebitelImApiGatewayV1SendImageRequest, WebitelImApiGatewayV1ContactList, WebitelImApiGatewayV1Contact, WebitelImApiGatewayV1SendTextRequest, WebitelImApiGatewayV1SendTextResponse, ContactsSearchParams, MessageHistorySearchThreadMessagesHistoryWebitelImApiGatewayV1MessageHistoryParams, WebitelImApiGatewayV1SendDocumentResponse, WebitelImApiGatewayV1SendImageResponse, WebitelImApiGatewayV1Thread, WebitelImApiGatewayV1SearchThreadResponse, ThreadManagementSearchParams } from '@webitel/api-services/gen/models';
|
|
3
3
|
export { WebitelImApiGatewayV1Authorization as AccountModel, WebitelImApiGatewayV1Contact as ContactModel, ContactsSearchParams as ContactSearchParams, MessageHistorySearchThreadMessagesHistoryWebitelImApiGatewayV1MessageHistoryParams as MessageHistorySearchParams, WebitelImApiGatewayV1HistoryMessage as MessageModel, WebitelImApiGatewayV1Thread as ThreadModel, ThreadManagementSearchParams as ThreadSearchParams } from '@webitel/api-services/gen/models';
|
|
4
4
|
import { AxiosInstance } from 'axios';
|
|
5
5
|
|
|
@@ -41,8 +41,18 @@ interface IMessage extends WebitelImApiGatewayV1HistoryMessage {
|
|
|
41
41
|
/**
|
|
42
42
|
* API response with `messages` replaced by instantiated SDK `Message` classes.
|
|
43
43
|
*/
|
|
44
|
-
type MessageHistorySearchResult = Omit<WebitelImApiGatewayV1SearchMessageHistoryResponse, '
|
|
45
|
-
|
|
44
|
+
type MessageHistorySearchResult = Omit<WebitelImApiGatewayV1SearchMessageHistoryResponse, 'items'> & {
|
|
45
|
+
items: IMessage[];
|
|
46
|
+
};
|
|
47
|
+
type MessageSendFileParams = Omit<WebitelImApiGatewayV1SendDocumentRequest, 'document'> & {
|
|
48
|
+
document?: NonNullable<WebitelImApiGatewayV1SendDocumentRequest['document']>;
|
|
49
|
+
file: File;
|
|
50
|
+
threadId: string;
|
|
51
|
+
};
|
|
52
|
+
type MessageSendImageParams = Omit<WebitelImApiGatewayV1SendImageRequest, 'image'> & {
|
|
53
|
+
image?: NonNullable<WebitelImApiGatewayV1SendImageRequest['image']>;
|
|
54
|
+
file: File;
|
|
55
|
+
threadId: string;
|
|
46
56
|
};
|
|
47
57
|
|
|
48
58
|
interface IContact extends WebitelImApiGatewayV1Contact, ServiceConfigurable {
|
|
@@ -56,10 +66,13 @@ declare function useContactsService(config: ServiceConfig): {
|
|
|
56
66
|
fetchContacts: (params?: ContactsSearchParams) => Promise<ContactSearchResult>;
|
|
57
67
|
};
|
|
58
68
|
|
|
59
|
-
|
|
69
|
+
interface IMessagesService {
|
|
60
70
|
fetchMessageHistory: (threadId: string, params?: MessageHistorySearchThreadMessagesHistoryWebitelImApiGatewayV1MessageHistoryParams) => Promise<MessageHistorySearchResult>;
|
|
61
|
-
sendTextMessage: (params: WebitelImApiGatewayV1SendTextRequest) => Promise<
|
|
62
|
-
|
|
71
|
+
sendTextMessage: (params: WebitelImApiGatewayV1SendTextRequest) => Promise<WebitelImApiGatewayV1SendTextResponse>;
|
|
72
|
+
sendFileMessage: (params: MessageSendFileParams) => Promise<WebitelImApiGatewayV1SendDocumentResponse>;
|
|
73
|
+
sendImageMessage: (params: MessageSendImageParams) => Promise<WebitelImApiGatewayV1SendImageResponse>;
|
|
74
|
+
}
|
|
75
|
+
declare function useMessagesService(config: ServiceConfig): IMessagesService;
|
|
63
76
|
|
|
64
77
|
/**
|
|
65
78
|
* @see https://github.com/webitel/im-delivery-service/blob/main/api/asyncapi/asyncapi.yaml#L56
|
|
@@ -103,13 +116,18 @@ declare class ChatsSocketClient implements IChatsSocketClient {
|
|
|
103
116
|
}
|
|
104
117
|
declare function createChatsSocketClient(config: SocketConfig): ChatsSocketClient;
|
|
105
118
|
|
|
119
|
+
type ThreadSendTextMessageParams = Omit<WebitelImApiGatewayV1SendTextRequest, 'body' | 'to'>;
|
|
120
|
+
type ThreadSendFileMessageParams = Omit<MessageSendFileParams, 'file' | 'threadId' | 'to'>;
|
|
121
|
+
type ThreadSendImageMessageParams = Omit<MessageSendImageParams, 'file' | 'threadId' | 'to'>;
|
|
106
122
|
interface IThread extends WebitelImApiGatewayV1Thread, ServiceConfigurable {
|
|
107
123
|
id: string;
|
|
108
124
|
fetchMessageHistory: (params?: MessageHistorySearchThreadMessagesHistoryWebitelImApiGatewayV1MessageHistoryParams) => Promise<MessageHistorySearchResult>;
|
|
109
|
-
sendTextMessage: (body: string, params?:
|
|
125
|
+
sendTextMessage: (body: string, params?: ThreadSendTextMessageParams) => Promise<WebitelImApiGatewayV1SendTextResponse>;
|
|
126
|
+
sendFileMessage: (file: File, params?: ThreadSendFileMessageParams) => Promise<WebitelImApiGatewayV1SendDocumentResponse>;
|
|
127
|
+
sendImageMessage: (file: File, params?: ThreadSendImageMessageParams) => Promise<WebitelImApiGatewayV1SendImageResponse>;
|
|
110
128
|
}
|
|
111
|
-
type ThreadSearchResult = Omit<WebitelImApiGatewayV1SearchThreadResponse, '
|
|
112
|
-
|
|
129
|
+
type ThreadSearchResult = Omit<WebitelImApiGatewayV1SearchThreadResponse, 'items'> & {
|
|
130
|
+
items: IThread[];
|
|
113
131
|
};
|
|
114
132
|
|
|
115
133
|
declare function useThreadsService(config: ServiceConfig): {
|
package/dist/index.js
CHANGED
|
@@ -7170,6 +7170,41 @@ var getMessagesService = ({ axiosInstance }) => {
|
|
|
7170
7170
|
return applyTransform(response.data, [
|
|
7171
7171
|
snakeToCamel_transformer_default()
|
|
7172
7172
|
]);
|
|
7173
|
+
},
|
|
7174
|
+
uploadFile: async (threadId, file2) => {
|
|
7175
|
+
const formData = new FormData();
|
|
7176
|
+
formData.append("file", file2);
|
|
7177
|
+
const response = await axiosInstance.post(
|
|
7178
|
+
`/api/storage/file/${threadId}/upload`,
|
|
7179
|
+
formData
|
|
7180
|
+
);
|
|
7181
|
+
return applyTransform(response.data, [
|
|
7182
|
+
snakeToCamel_transformer_default()
|
|
7183
|
+
]);
|
|
7184
|
+
},
|
|
7185
|
+
sendFileMessage: async (params) => {
|
|
7186
|
+
const transformedParams = applyTransform(params, [
|
|
7187
|
+
camelToSnake_transformer_default()
|
|
7188
|
+
]);
|
|
7189
|
+
const response = await axiosInstance.post(
|
|
7190
|
+
"/v1/messages/file",
|
|
7191
|
+
transformedParams
|
|
7192
|
+
);
|
|
7193
|
+
return applyTransform(response.data, [
|
|
7194
|
+
snakeToCamel_transformer_default()
|
|
7195
|
+
]);
|
|
7196
|
+
},
|
|
7197
|
+
sendImageMessage: async (params) => {
|
|
7198
|
+
const transformedParams = applyTransform(params, [
|
|
7199
|
+
camelToSnake_transformer_default()
|
|
7200
|
+
]);
|
|
7201
|
+
const response = await axiosInstance.post(
|
|
7202
|
+
"/v1/messages/image",
|
|
7203
|
+
transformedParams
|
|
7204
|
+
);
|
|
7205
|
+
return applyTransform(response.data, [
|
|
7206
|
+
snakeToCamel_transformer_default()
|
|
7207
|
+
]);
|
|
7173
7208
|
}
|
|
7174
7209
|
};
|
|
7175
7210
|
};
|
|
@@ -7195,12 +7230,67 @@ var fetchMessageHistory = async (config3, threadId, params = {}) => {
|
|
|
7195
7230
|
const rawResponse = await fetchRawMessageHistory(config3)(threadId, params);
|
|
7196
7231
|
return {
|
|
7197
7232
|
...rawResponse,
|
|
7198
|
-
|
|
7233
|
+
items: instantiateMessages(rawResponse.items ?? [], {
|
|
7199
7234
|
serviceConfig: config3
|
|
7200
7235
|
})
|
|
7201
7236
|
};
|
|
7202
7237
|
};
|
|
7203
7238
|
|
|
7239
|
+
// src/modules/messages/utils/sendFileMessage.ts
|
|
7240
|
+
var sendFileMessage = async (config3, params) => {
|
|
7241
|
+
const { file: file2, threadId, document, ...restParams } = params;
|
|
7242
|
+
const uploadResponse = await getMessagesService(config3).uploadFile(
|
|
7243
|
+
threadId,
|
|
7244
|
+
file2
|
|
7245
|
+
);
|
|
7246
|
+
const fileId = uploadResponse.id ?? uploadResponse.fileId;
|
|
7247
|
+
if (!fileId) {
|
|
7248
|
+
throw new Error("Storage upload did not return file id");
|
|
7249
|
+
}
|
|
7250
|
+
return getMessagesService(config3).sendFileMessage({
|
|
7251
|
+
...restParams,
|
|
7252
|
+
document: {
|
|
7253
|
+
...document,
|
|
7254
|
+
documents: [
|
|
7255
|
+
{
|
|
7256
|
+
fileName: file2.name,
|
|
7257
|
+
id: fileId,
|
|
7258
|
+
mimeType: file2.type,
|
|
7259
|
+
sizeBytes: String(file2.size),
|
|
7260
|
+
url: uploadResponse.fileUrl
|
|
7261
|
+
}
|
|
7262
|
+
]
|
|
7263
|
+
}
|
|
7264
|
+
});
|
|
7265
|
+
};
|
|
7266
|
+
|
|
7267
|
+
// src/modules/messages/utils/sendImageMessage.ts
|
|
7268
|
+
var sendImageMessage = async (config3, params) => {
|
|
7269
|
+
const { file: file2, threadId, image, ...restParams } = params;
|
|
7270
|
+
const uploadResponse = await getMessagesService(config3).uploadFile(
|
|
7271
|
+
threadId,
|
|
7272
|
+
file2
|
|
7273
|
+
);
|
|
7274
|
+
const imageId = uploadResponse.id ?? uploadResponse.fileId;
|
|
7275
|
+
if (!imageId) {
|
|
7276
|
+
throw new Error("Storage upload did not return file id");
|
|
7277
|
+
}
|
|
7278
|
+
return getMessagesService(config3).sendImageMessage({
|
|
7279
|
+
...restParams,
|
|
7280
|
+
image: {
|
|
7281
|
+
...image,
|
|
7282
|
+
images: [
|
|
7283
|
+
{
|
|
7284
|
+
id: imageId,
|
|
7285
|
+
link: uploadResponse.fileUrl,
|
|
7286
|
+
mimeType: file2.type,
|
|
7287
|
+
name: file2.name
|
|
7288
|
+
}
|
|
7289
|
+
]
|
|
7290
|
+
}
|
|
7291
|
+
});
|
|
7292
|
+
};
|
|
7293
|
+
|
|
7204
7294
|
// src/modules/messages/utils/sendTextMessage.ts
|
|
7205
7295
|
var sendTextMessage = async (config3, params) => {
|
|
7206
7296
|
return getMessagesService(config3).sendTextMessage(params);
|
|
@@ -7210,15 +7300,17 @@ var sendTextMessage = async (config3, params) => {
|
|
|
7210
7300
|
function useMessagesService(config3) {
|
|
7211
7301
|
return {
|
|
7212
7302
|
fetchMessageHistory: (threadId, params) => fetchMessageHistory(config3, threadId, params ?? {}),
|
|
7213
|
-
sendTextMessage: (params) => sendTextMessage(config3, params)
|
|
7303
|
+
sendTextMessage: (params) => sendTextMessage(config3, params),
|
|
7304
|
+
sendFileMessage: (params) => sendFileMessage(config3, params),
|
|
7305
|
+
sendImageMessage: (params) => sendImageMessage(config3, params)
|
|
7214
7306
|
};
|
|
7215
7307
|
}
|
|
7216
7308
|
|
|
7217
7309
|
// src/modules/contacts/classes/Contact.class.ts
|
|
7218
7310
|
var Contact = class {
|
|
7219
7311
|
_serviceConfig;
|
|
7220
|
-
|
|
7221
|
-
|
|
7312
|
+
sub;
|
|
7313
|
+
iss;
|
|
7222
7314
|
constructor(rawContact, {
|
|
7223
7315
|
serviceConfig
|
|
7224
7316
|
}) {
|
|
@@ -7231,8 +7323,8 @@ var Contact = class {
|
|
|
7231
7323
|
body,
|
|
7232
7324
|
to: {
|
|
7233
7325
|
contact: {
|
|
7234
|
-
sub: this.
|
|
7235
|
-
iss: this.
|
|
7326
|
+
sub: this.sub,
|
|
7327
|
+
iss: this.iss
|
|
7236
7328
|
}
|
|
7237
7329
|
}
|
|
7238
7330
|
});
|
|
@@ -7317,11 +7409,11 @@ var SocketClientConnectionStatus = {
|
|
|
7317
7409
|
|
|
7318
7410
|
// src/modules/socket/utils/getSocketMessageNameFromEvent.ts
|
|
7319
7411
|
var wireToGetter = {
|
|
7320
|
-
[ChatsSocketMessage.Connected]: (e) => e.connected,
|
|
7321
|
-
[ChatsSocketMessage.Disconnected]: (e) => e.disconnected,
|
|
7322
|
-
[ChatsSocketMessage.Error]: (e) => e.error,
|
|
7323
|
-
[ChatsSocketMessage.ThreadMessage]: (e) => e.message,
|
|
7324
|
-
[ChatsSocketMessage.ThreadCreated]: (e) => e.threadCreated
|
|
7412
|
+
// [ChatsSocketMessage.Connected]: (e) => e.connected,
|
|
7413
|
+
// [ChatsSocketMessage.Disconnected]: (e) => e.disconnected,
|
|
7414
|
+
// [ChatsSocketMessage.Error]: (e) => e.error,
|
|
7415
|
+
// [ChatsSocketMessage.ThreadMessage]: (e) => e.message,
|
|
7416
|
+
// [ChatsSocketMessage.ThreadCreated]: (e) => e.threadCreated,
|
|
7325
7417
|
};
|
|
7326
7418
|
function getSocketMessageNameFromEvent(sourceEvent) {
|
|
7327
7419
|
for (const value of Object.values(ChatsSocketMessage)) {
|
|
@@ -7413,6 +7505,26 @@ var Thread = class {
|
|
|
7413
7505
|
}
|
|
7414
7506
|
});
|
|
7415
7507
|
}
|
|
7508
|
+
async sendFileMessage(file2, params = {}) {
|
|
7509
|
+
return useMessagesService(this.serviceConfig).sendFileMessage({
|
|
7510
|
+
...params,
|
|
7511
|
+
file: file2,
|
|
7512
|
+
threadId: this.id,
|
|
7513
|
+
to: {
|
|
7514
|
+
threadId: this.id
|
|
7515
|
+
}
|
|
7516
|
+
});
|
|
7517
|
+
}
|
|
7518
|
+
async sendImageMessage(file2, params = {}) {
|
|
7519
|
+
return useMessagesService(this.serviceConfig).sendImageMessage({
|
|
7520
|
+
...params,
|
|
7521
|
+
file: file2,
|
|
7522
|
+
threadId: this.id,
|
|
7523
|
+
to: {
|
|
7524
|
+
threadId: this.id
|
|
7525
|
+
}
|
|
7526
|
+
});
|
|
7527
|
+
}
|
|
7416
7528
|
get serviceConfig() {
|
|
7417
7529
|
return this._serviceConfig;
|
|
7418
7530
|
}
|
|
@@ -7460,7 +7572,7 @@ var fetchThreads = async (config3, params = {}) => {
|
|
|
7460
7572
|
const rawThreadsResponse = await fetchRawThreads(config3)(params);
|
|
7461
7573
|
return {
|
|
7462
7574
|
...rawThreadsResponse,
|
|
7463
|
-
|
|
7575
|
+
items: instantiateThreads(rawThreadsResponse.items ?? [], {
|
|
7464
7576
|
serviceConfig: config3
|
|
7465
7577
|
})
|
|
7466
7578
|
};
|