@vserifsaglam/chat-react-client 1.0.2 → 1.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.
@@ -1,4 +1,4 @@
1
- import { AuthConfig, Conversation, ConversationSearchResult, MessagesResponse, SendMessageRequest, SendMessageResponse, MarkConversationReadResponse, UpdateMessageRequest, UpdateMessageResponse, DeleteMessageResponse, FileUploadResponse, ApiResponse, BanClientRequest, UnbanClientRequest, AdminBanClientRequest, AdminUnbanClientRequest, BanStatusResponse, ClientProfileResponse, ClientPreferencesResponse, UpdatePreferencesRequest, UpdatePreferencesResponse } from '../types';
1
+ import { AuthConfig, Conversation, ConversationSearchResult, MessagesResponse, SendMessageRequest, SendMessageResponse, MarkConversationReadResponse, UpdateMessageRequest, UpdateMessageResponse, DeleteMessageResponse, FileUploadResponse, ApiResponse, BanClientRequest, UnbanClientRequest, AdminBanClientRequest, AdminUnbanClientRequest, BanStatusResponse, ClientProfileResponse, ClientPreferencesResponse, UpdatePreferencesRequest, UpdatePreferencesResponse, RemainingLimitResponse } from '../types';
2
2
  /**
3
3
  * Chat API client for making requests to the chat backend
4
4
  */
@@ -97,6 +97,15 @@ export declare class ChatApi {
97
97
  * @returns A promise that resolves to a delete message response
98
98
  */
99
99
  deleteMessage(messageId: number): Promise<DeleteMessageResponse>;
100
+ /**
101
+ * Get remaining message limit
102
+ * @param params Query with receiver_client_id or conversation_uid
103
+ * @returns A promise that resolves to a remaining limit response
104
+ */
105
+ getRemainingLimit(params: {
106
+ receiver_client_id?: string;
107
+ conversation_uid?: string;
108
+ }): Promise<RemainingLimitResponse>;
100
109
  /**
101
110
  * Upload a file
102
111
  * @param file The file to upload
@@ -138,6 +147,15 @@ export declare class ChatApi {
138
147
  * @returns A promise that resolves to a client profile response
139
148
  */
140
149
  getClientProfile(): Promise<ClientProfileResponse>;
150
+ /**
151
+ * Get the preferences of the authenticated client
152
+ * @returns A promise that resolves to a client preferences response
153
+ */
141
154
  getClientPreferences(): Promise<ClientPreferencesResponse>;
155
+ /**
156
+ * Update client preferences
157
+ * @param request The update preferences request
158
+ * @returns A promise that resolves to an update preferences response
159
+ */
142
160
  updateClientPreferences(request: UpdatePreferencesRequest): Promise<UpdatePreferencesResponse>;
143
161
  }
@@ -6,8 +6,8 @@ export declare function useMessageManagement(selectedConversationId: string): {
6
6
  fileLoading: boolean;
7
7
  uploadProgress: number;
8
8
  uploadFile: (file: File) => Promise<import("..").FileUploadResponse | null>;
9
- handleSendMessage: (content: string, receiver: SenderReceiverUser) => Promise<boolean | undefined>;
10
- handleSendFileMessage: (content: string, fileId: number, receiver: SenderReceiverUser, filename?: string | undefined, url?: string | undefined) => Promise<boolean | undefined>;
9
+ handleSendMessage: (content: string, receiver: SenderReceiverUser, isAppointment?: boolean | undefined) => Promise<any>;
10
+ handleSendFileMessage: (content: string, fileId: number, receiver: SenderReceiverUser, filename?: string | undefined, url?: string | undefined, isAppointment?: boolean | undefined) => Promise<boolean | undefined>;
11
11
  deleteMessage: (messageId: number) => Promise<import("..").DeleteMessageResponse | null>;
12
12
  updateMessage: (messageId: number, update: import("..").UpdateMessageRequest) => Promise<import("..").UpdateMessageResponse | null>;
13
13
  getMessages: (conversationId?: any, page?: any, pageSize?: any) => Promise<import("..").MessagesResponse | null>;
@@ -16,4 +16,5 @@ export declare function useMessageManagement(selectedConversationId: string): {
16
16
  setMessages: import("react").Dispatch<import("react").SetStateAction<import("..").MessagesResponse | null>>;
17
17
  preferences: import("..").ClientPreferences | null;
18
18
  updatePreferences: (enableRead: boolean) => Promise<boolean>;
19
+ getRemainingLimit: (receiverClientId?: string | undefined, conversationId?: any) => Promise<import("..").RemainingLimitResponse | null>;
19
20
  };
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { MessagesResponse, SendMessageRequest, SendMessageResponse, MarkConversationReadResponse, UpdateMessageRequest, UpdateMessageResponse, DeleteMessageResponse, ApiResponse, Message, ClientPreferences } from '../types';
2
+ import { MessagesResponse, SendMessageRequest, SendMessageResponse, MarkConversationReadResponse, UpdateMessageRequest, UpdateMessageResponse, DeleteMessageResponse, ApiResponse, Message, ClientPreferences, RemainingLimitResponse } from '../types';
3
3
  /**
4
4
  * Hook for managing messages
5
5
  */
@@ -20,4 +20,5 @@ export declare const useMessages: (conversationUid?: string | undefined) => {
20
20
  setMessages: import("react").Dispatch<import("react").SetStateAction<MessagesResponse | null>>;
21
21
  updatePreferences: (enableRead: boolean) => Promise<boolean>;
22
22
  preferences: ClientPreferences | null;
23
+ getRemainingLimit: (receiverClientId?: string | undefined, conversationId?: any) => Promise<RemainingLimitResponse | null>;
23
24
  };
package/dist/index.js CHANGED
@@ -326,7 +326,13 @@ var ChatApi = /*#__PURE__*/function () {
326
326
  _proto.sendMessage = function sendMessage(message) {
327
327
  try {
328
328
  var _this1 = this;
329
- return Promise.resolve(_this1.client.post('/api/messages/send-message', message)).then(function (response) {
329
+ var config = {};
330
+ if (message.isAppointment) {
331
+ config.headers = {
332
+ 'x-disable-limit': true
333
+ };
334
+ }
335
+ return Promise.resolve(_this1.client.post('/api/messages/send-message', message, config)).then(function (response) {
330
336
  return response.data;
331
337
  });
332
338
  } catch (e) {
@@ -363,9 +369,21 @@ var ChatApi = /*#__PURE__*/function () {
363
369
  return Promise.reject(e);
364
370
  }
365
371
  };
366
- _proto.uploadFile = function uploadFile(file) {
372
+ _proto.getRemainingLimit = function getRemainingLimit(params) {
367
373
  try {
368
374
  var _this13 = this;
375
+ return Promise.resolve(_this13.client.get('/api/messages/remaining-limit', {
376
+ params: params
377
+ })).then(function (response) {
378
+ return response.data;
379
+ });
380
+ } catch (e) {
381
+ return Promise.reject(e);
382
+ }
383
+ };
384
+ _proto.uploadFile = function uploadFile(file) {
385
+ try {
386
+ var _this14 = this;
369
387
  var formData = new FormData();
370
388
  formData.append('file', file);
371
389
  var config = {
@@ -373,7 +391,7 @@ var ChatApi = /*#__PURE__*/function () {
373
391
  'Content-Type': 'multipart/form-data'
374
392
  }
375
393
  };
376
- return Promise.resolve(_this13.client.post('/api/files/upload', formData, config)).then(function (response) {
394
+ return Promise.resolve(_this14.client.post('/api/files/upload', formData, config)).then(function (response) {
377
395
  return response.data;
378
396
  });
379
397
  } catch (e) {
@@ -382,8 +400,8 @@ var ChatApi = /*#__PURE__*/function () {
382
400
  };
383
401
  _proto.banClient = function banClient(request) {
384
402
  try {
385
- var _this14 = this;
386
- return Promise.resolve(_this14.client.post('/api/bans/client', request)).then(function (response) {
403
+ var _this15 = this;
404
+ return Promise.resolve(_this15.client.post('/api/bans/client', request)).then(function (response) {
387
405
  return response.data;
388
406
  });
389
407
  } catch (e) {
@@ -392,8 +410,8 @@ var ChatApi = /*#__PURE__*/function () {
392
410
  };
393
411
  _proto.unbanClient = function unbanClient(request) {
394
412
  try {
395
- var _this15 = this;
396
- return Promise.resolve(_this15.client["delete"]('/api/bans/client', {
413
+ var _this16 = this;
414
+ return Promise.resolve(_this16.client["delete"]('/api/bans/client', {
397
415
  data: request
398
416
  })).then(function (response) {
399
417
  return response.data;
@@ -404,8 +422,8 @@ var ChatApi = /*#__PURE__*/function () {
404
422
  };
405
423
  _proto.adminBanClient = function adminBanClient(request) {
406
424
  try {
407
- var _this16 = this;
408
- return Promise.resolve(_this16.client.post('/api/bans/admin', request)).then(function (response) {
425
+ var _this17 = this;
426
+ return Promise.resolve(_this17.client.post('/api/bans/admin', request)).then(function (response) {
409
427
  return response.data;
410
428
  });
411
429
  } catch (e) {
@@ -414,8 +432,8 @@ var ChatApi = /*#__PURE__*/function () {
414
432
  };
415
433
  _proto.adminUnbanClient = function adminUnbanClient(request) {
416
434
  try {
417
- var _this17 = this;
418
- return Promise.resolve(_this17.client["delete"]('/api/bans/admin', {
435
+ var _this18 = this;
436
+ return Promise.resolve(_this18.client["delete"]('/api/bans/admin', {
419
437
  data: request
420
438
  })).then(function (response) {
421
439
  return response.data;
@@ -426,8 +444,8 @@ var ChatApi = /*#__PURE__*/function () {
426
444
  };
427
445
  _proto.checkBanStatus = function checkBanStatus(clientId) {
428
446
  try {
429
- var _this18 = this;
430
- return Promise.resolve(_this18.client.get("/api/bans/status/" + clientId)).then(function (response) {
447
+ var _this19 = this;
448
+ return Promise.resolve(_this19.client.get("/api/bans/status/" + clientId)).then(function (response) {
431
449
  return response.data;
432
450
  });
433
451
  } catch (e) {
@@ -436,8 +454,8 @@ var ChatApi = /*#__PURE__*/function () {
436
454
  };
437
455
  _proto.getClientProfile = function getClientProfile() {
438
456
  try {
439
- var _this19 = this;
440
- return Promise.resolve(_this19.client.get('/api/clients/profile')).then(function (response) {
457
+ var _this20 = this;
458
+ return Promise.resolve(_this20.client.get('/api/clients/profile')).then(function (response) {
441
459
  return response.data;
442
460
  });
443
461
  } catch (e) {
@@ -446,8 +464,8 @@ var ChatApi = /*#__PURE__*/function () {
446
464
  };
447
465
  _proto.getClientPreferences = function getClientPreferences() {
448
466
  try {
449
- var _this20 = this;
450
- return Promise.resolve(_this20.client.get('/api/clients/preferences')).then(function (response) {
467
+ var _this21 = this;
468
+ return Promise.resolve(_this21.client.get('/api/clients/preferences')).then(function (response) {
451
469
  return response.data;
452
470
  });
453
471
  } catch (e) {
@@ -456,8 +474,8 @@ var ChatApi = /*#__PURE__*/function () {
456
474
  };
457
475
  _proto.updateClientPreferences = function updateClientPreferences(request) {
458
476
  try {
459
- var _this21 = this;
460
- return Promise.resolve(_this21.client.put('/api/clients/preferences', request)).then(function (response) {
477
+ var _this22 = this;
478
+ return Promise.resolve(_this22.client.put('/api/clients/preferences', request)).then(function (response) {
461
479
  return response.data;
462
480
  });
463
481
  } catch (e) {
@@ -2068,7 +2086,10 @@ var useMessages = function useMessages(conversationUid) {
2068
2086
  return Promise.reject(e);
2069
2087
  }
2070
2088
  }, [conversationUid]);
2071
- var markMessageAsRead = React.useCallback(function (messageId) {
2089
+ var getRemainingLimit = React.useCallback(function (receiverClientId, conversationId) {
2090
+ if (conversationId === void 0) {
2091
+ conversationId = conversationUid;
2092
+ }
2072
2093
  try {
2073
2094
  if (!api) {
2074
2095
  setError(new Error('API not initialized'));
@@ -2078,9 +2099,12 @@ var useMessages = function useMessages(conversationUid) {
2078
2099
  setError(null);
2079
2100
  return Promise.resolve(_finallyRethrows(function () {
2080
2101
  return _catch(function () {
2081
- return Promise.resolve(api.markMessageAsRead(messageId));
2102
+ return Promise.resolve(api.getRemainingLimit({
2103
+ receiver_client_id: receiverClientId,
2104
+ conversation_uid: conversationId
2105
+ }));
2082
2106
  }, function (err) {
2083
- var error = err instanceof Error ? err : new Error('Failed to mark message as read');
2107
+ var error = err instanceof Error ? err : new Error('Failed to get remaining limit');
2084
2108
  setError(error);
2085
2109
  return null;
2086
2110
  });
@@ -2092,6 +2116,31 @@ var useMessages = function useMessages(conversationUid) {
2092
2116
  } catch (e) {
2093
2117
  return Promise.reject(e);
2094
2118
  }
2119
+ }, [api, conversationUid]);
2120
+ var markMessageAsRead = React.useCallback(function (messageId) {
2121
+ try {
2122
+ if (!api) {
2123
+ setError(new Error('API not initialized'));
2124
+ return Promise.resolve(null);
2125
+ }
2126
+ setLoading(true);
2127
+ setError(null);
2128
+ return Promise.resolve(_finallyRethrows(function () {
2129
+ return _catch(function () {
2130
+ return Promise.resolve(api.markMessageAsRead(messageId));
2131
+ }, function (err) {
2132
+ var error = err instanceof Error ? err : new Error('Failed to mark message as read');
2133
+ setError(error);
2134
+ return null;
2135
+ });
2136
+ }, function (_wasThrown3, _result3) {
2137
+ setLoading(false);
2138
+ if (_wasThrown3) throw _result3;
2139
+ return _result3;
2140
+ }));
2141
+ } catch (e) {
2142
+ return Promise.reject(e);
2143
+ }
2095
2144
  }, []);
2096
2145
  var sendMessage = React.useCallback(function (message) {
2097
2146
  try {
@@ -2112,10 +2161,10 @@ var useMessages = function useMessages(conversationUid) {
2112
2161
  setError(error);
2113
2162
  return null;
2114
2163
  });
2115
- }, function (_wasThrown3, _result3) {
2164
+ }, function (_wasThrown4, _result4) {
2116
2165
  setLoading(false);
2117
- if (_wasThrown3) throw _result3;
2118
- return _result3;
2166
+ if (_wasThrown4) throw _result4;
2167
+ return _result4;
2119
2168
  }));
2120
2169
  } catch (e) {
2121
2170
  return Promise.reject(e);
@@ -2156,10 +2205,10 @@ var useMessages = function useMessages(conversationUid) {
2156
2205
  setError(error);
2157
2206
  return null;
2158
2207
  });
2159
- }, function (_wasThrown4, _result4) {
2208
+ }, function (_wasThrown5, _result5) {
2160
2209
  setLoading(false);
2161
- if (_wasThrown4) throw _result4;
2162
- return _result4;
2210
+ if (_wasThrown5) throw _result5;
2211
+ return _result5;
2163
2212
  }));
2164
2213
  } catch (e) {
2165
2214
  return Promise.reject(e);
@@ -2190,10 +2239,10 @@ var useMessages = function useMessages(conversationUid) {
2190
2239
  setError(error);
2191
2240
  return null;
2192
2241
  });
2193
- }, function (_wasThrown5, _result5) {
2242
+ }, function (_wasThrown6, _result6) {
2194
2243
  setLoading(false);
2195
- if (_wasThrown5) throw _result5;
2196
- return _result5;
2244
+ if (_wasThrown6) throw _result6;
2245
+ return _result6;
2197
2246
  }));
2198
2247
  } catch (e) {
2199
2248
  return Promise.reject(e);
@@ -2224,10 +2273,10 @@ var useMessages = function useMessages(conversationUid) {
2224
2273
  setError(error);
2225
2274
  return null;
2226
2275
  });
2227
- }, function (_wasThrown6, _result6) {
2276
+ }, function (_wasThrown7, _result7) {
2228
2277
  setLoading(false);
2229
- if (_wasThrown6) throw _result6;
2230
- return _result6;
2278
+ if (_wasThrown7) throw _result7;
2279
+ return _result7;
2231
2280
  }));
2232
2281
  } catch (e) {
2233
2282
  return Promise.reject(e);
@@ -2362,7 +2411,8 @@ var useMessages = function useMessages(conversationUid) {
2362
2411
  deleteMessage: deleteMessage,
2363
2412
  setMessages: setMessages,
2364
2413
  updatePreferences: updatePreferences,
2365
- preferences: preferences
2414
+ preferences: preferences,
2415
+ getRemainingLimit: getRemainingLimit
2366
2416
  };
2367
2417
  };
2368
2418
 
@@ -2725,7 +2775,8 @@ function useMessageManagement(selectedConversationId) {
2725
2775
  updateMessage = _useMessages.updateMessage,
2726
2776
  setMessages = _useMessages.setMessages,
2727
2777
  preferences = _useMessages.preferences,
2728
- updatePreferences = _useMessages.updatePreferences;
2778
+ updatePreferences = _useMessages.updatePreferences,
2779
+ getRemainingLimit = _useMessages.getRemainingLimit;
2729
2780
  var _useAllMessageEvents = useAllMessageEvents$1(),
2730
2781
  messageSent = _useAllMessageEvents.messageSent,
2731
2782
  messageEdited = _useAllMessageEvents.messageEdited,
@@ -2770,7 +2821,7 @@ function useMessageManagement(selectedConversationId) {
2770
2821
  return Promise.reject(e);
2771
2822
  }
2772
2823
  }, [messagesLoading, hasMore, getMessages, page, selectedConversationId]);
2773
- var handleSendMessage = React.useCallback(function (content, receiver) {
2824
+ var handleSendMessage = React.useCallback(function (content, receiver, isAppointment) {
2774
2825
  try {
2775
2826
  if (!content.trim() || !selectedConversationId || !profile) return Promise.resolve();
2776
2827
  var tempMessageId = "temp-" + Date.now();
@@ -2795,7 +2846,8 @@ function useMessageManagement(selectedConversationId) {
2795
2846
  return Promise.resolve(sendMessage({
2796
2847
  receiver_client_id: receiver.id,
2797
2848
  content: content,
2798
- conversation_uid: selectedConversationId
2849
+ conversation_uid: selectedConversationId,
2850
+ isAppointment: isAppointment
2799
2851
  })).then(function (success) {
2800
2852
  if (!success) {
2801
2853
  setMessages(function (prevMessages) {
@@ -2807,7 +2859,7 @@ function useMessageManagement(selectedConversationId) {
2807
2859
  })
2808
2860
  });
2809
2861
  });
2810
- return false;
2862
+ return success;
2811
2863
  } else {
2812
2864
  setMessages(function (prevMessages) {
2813
2865
  return _extends({}, prevMessages, {
@@ -2820,10 +2872,11 @@ function useMessageManagement(selectedConversationId) {
2820
2872
  })
2821
2873
  });
2822
2874
  });
2823
- return true;
2875
+ return success;
2824
2876
  }
2825
2877
  });
2826
2878
  }, function (error) {
2879
+ var _error$response$data, _error$response;
2827
2880
  setMessages(function (prevMessages) {
2828
2881
  return _extends({}, prevMessages, {
2829
2882
  messages: ((prevMessages === null || prevMessages === void 0 ? void 0 : prevMessages.messages) || []).filter(function (msg) {
@@ -2831,14 +2884,15 @@ function useMessageManagement(selectedConversationId) {
2831
2884
  })
2832
2885
  });
2833
2886
  });
2834
- console.error('Failed to send message:', error);
2835
- return false;
2887
+ return (_error$response$data = error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data) != null ? _error$response$data : {
2888
+ message: 'Unknown error'
2889
+ };
2836
2890
  }));
2837
2891
  } catch (e) {
2838
2892
  return Promise.reject(e);
2839
2893
  }
2840
2894
  }, [sendMessage, selectedConversationId, profile === null || profile === void 0 ? void 0 : profile.id, setMessages]);
2841
- var handleSendFileMessage = React.useCallback(function (content, fileId, receiver, filename, url) {
2895
+ var handleSendFileMessage = React.useCallback(function (content, fileId, receiver, filename, url, isAppointment) {
2842
2896
  try {
2843
2897
  if (!selectedConversationId) return Promise.resolve();
2844
2898
  var tempMessageId = "temp-file-" + Date.now();
@@ -2868,7 +2922,8 @@ function useMessageManagement(selectedConversationId) {
2868
2922
  receiver_client_id: receiver.id,
2869
2923
  content: content,
2870
2924
  attachments: [fileId],
2871
- conversation_uid: selectedConversationId
2925
+ conversation_uid: selectedConversationId,
2926
+ isAppointment: isAppointment
2872
2927
  })).then(function (success) {
2873
2928
  if (success) {
2874
2929
  setMessages(function (prevMessages) {
@@ -2926,7 +2981,8 @@ function useMessageManagement(selectedConversationId) {
2926
2981
  hasMore: hasMore,
2927
2982
  setMessages: setMessages,
2928
2983
  preferences: preferences,
2929
- updatePreferences: updatePreferences
2984
+ updatePreferences: updatePreferences,
2985
+ getRemainingLimit: getRemainingLimit
2930
2986
  };
2931
2987
  }
2932
2988