quickblox-react-ui-kit 0.2.3 → 0.2.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.
Files changed (68) hide show
  1. package/dist/CommonTypes/FunctionResult.d.ts +5 -1
  2. package/dist/Data/DefaultConfigurations.d.ts +2 -2
  3. package/dist/Domain/use_cases/ai/AIAnswerAssistUseCase.d.ts +13 -0
  4. package/dist/Domain/use_cases/ai/AIAnswerAssistWithProxyUseCase.d.ts +13 -0
  5. package/dist/Domain/use_cases/ai/AITranslateUseCase.d.ts +14 -0
  6. package/dist/Domain/use_cases/ai/AITranslateWithProxyUseCase.d.ts +14 -0
  7. package/dist/Presentation/Views/Base/BaseViewModel.d.ts +2 -0
  8. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget.d.ts +4 -1
  9. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.d.ts +3 -2
  10. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.d.ts +5 -13
  11. package/dist/Presentation/components/UI/Dialogs/MessagesView/DefaultAttachmentComponent/DefaultAttachmentComponent.d.ts +7 -0
  12. package/dist/Presentation/components/UI/Dialogs/MessagesView/ErrorToast/ErrorToast.d.ts +7 -0
  13. package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.d.ts +3 -1
  14. package/dist/Presentation/components/UI/Dialogs/PreviewDialog/PreviewAudioFile/PreviewAudioFile.d.ts +7 -0
  15. package/dist/Presentation/components/UI/Dialogs/PreviewDialog/PreviewDefaultFile/PreviewDefaultFile.d.ts +7 -0
  16. package/dist/Presentation/components/UI/Dialogs/PreviewDialog/PreviewImageFile/PreviewImageFile.d.ts +8 -0
  17. package/dist/Presentation/components/UI/Dialogs/PreviewDialog/PreviewVideoFile/PreviewVideoFile.d.ts +7 -0
  18. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/BotIcon/BotIcon.d.ts +4 -0
  19. package/dist/QBconfig.d.ts +14 -3
  20. package/dist/index-ui.js +316 -33
  21. package/dist/utils/utils.d.ts +9 -0
  22. package/global.d.ts +12 -4
  23. package/package.json +5 -1
  24. package/src/CommonTypes/FunctionResult.ts +6 -1
  25. package/src/Data/DefaultConfigurations.ts +155 -19
  26. package/src/Domain/use_cases/ai/AIAnswerAssistUseCase.ts +69 -0
  27. package/src/Domain/use_cases/ai/AIAnswerAssistWithProxyUseCase.ts +71 -0
  28. package/src/Domain/use_cases/ai/AIRephraseUseCase.ts +38 -36
  29. package/src/Domain/use_cases/ai/AIRephraseWithProxyUseCase.ts +25 -21
  30. package/src/Domain/use_cases/ai/AITranslateUseCase.ts +76 -0
  31. package/src/Domain/use_cases/ai/AITranslateWithProxyUseCase.ts +79 -0
  32. package/src/Presentation/Views/Base/BaseViewModel.ts +2 -0
  33. package/src/Presentation/Views/Dialogs/Dialogs.tsx +1 -1
  34. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget.ts +7 -2
  35. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.tsx +10 -4
  36. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.ts +29 -15
  37. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.tsx +10 -6
  38. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy.tsx +10 -6
  39. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.tsx +17 -0
  40. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidgetWithProxy.tsx +16 -0
  41. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.tsx +13 -12
  42. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidgetWithProxy.tsx +13 -12
  43. package/src/Presentation/components/UI/Dialogs/MessagesView/DefaultAttachmentComponent/DefaultAttachmentComponent.scss +76 -0
  44. package/src/Presentation/components/UI/Dialogs/MessagesView/DefaultAttachmentComponent/DefaultAttachmentComponent.tsx +34 -0
  45. package/src/Presentation/components/UI/Dialogs/MessagesView/ErrorToast/ErrorToast.scss +26 -0
  46. package/src/Presentation/components/UI/Dialogs/MessagesView/ErrorToast/ErrorToast.tsx +25 -0
  47. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.scss +4 -6
  48. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.tsx +93 -405
  49. package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.scss +2 -3
  50. package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.tsx +561 -400
  51. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewAudioFile/PreviewAudioFile.scss +62 -0
  52. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewAudioFile/PreviewAudioFile.tsx +25 -0
  53. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewDefaultFile/PreviewDefaultFile.scss +61 -0
  54. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewDefaultFile/PreviewDefaultFile.tsx +32 -0
  55. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewDialog.scss +2 -2
  56. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewDialog.tsx +50 -2
  57. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewImageFile/PreviewImageFile.scss +40 -0
  58. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewImageFile/PreviewImageFile.tsx +26 -0
  59. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewVideoFile/PreviewVideoFile.scss +62 -0
  60. package/src/Presentation/components/UI/Dialogs/PreviewDialog/PreviewVideoFile/PreviewVideoFile.tsx +25 -0
  61. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/BotIcon/BotIcon.svg +5 -0
  62. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/BotIcon/BotIcon.tsx +50 -0
  63. package/src/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.tsx +3 -15
  64. package/src/Presentation/components/providers/QuickBloxUIKitProvider/useQbInitializedDataContext.ts +15 -14
  65. package/src/QBconfig.ts +156 -10
  66. package/src/package_artan_react_ui.json +13 -9
  67. package/src/package_original.json +5 -1
  68. package/src/utils/utils.ts +63 -0
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import './ErrorToast.scss';
3
+
4
+ type ErrorToastProps = {
5
+ messageText: string;
6
+ // displayTimeout: number;
7
+ };
8
+
9
+ // eslint-disable-next-line react/function-component-definition
10
+ export const ErrorToast: React.FC<ErrorToastProps> = ({
11
+ messageText,
12
+ }: // displayTimeout,
13
+ ErrorToastProps) => {
14
+ return (
15
+ // <div>
16
+ // {messageText} - {displayTimeout}
17
+ // </div>
18
+
19
+ <div className="error-toast">
20
+ <div className="translation-failed-try-again">
21
+ {messageText} Try again.
22
+ </div>
23
+ </div>
24
+ );
25
+ };
@@ -289,7 +289,7 @@
289
289
  font: var(--label-label-small, 500 11px/16px "Roboto", sans-serif);
290
290
  position: relative;
291
291
  }
292
- .icon {
292
+ .icon-translate {
293
293
  border-radius: 4px;
294
294
  display: flex;
295
295
  flex-direction: row;
@@ -349,16 +349,15 @@
349
349
  }
350
350
 
351
351
  .ai-translate-action {
352
- color: var(--secondary-secondary-300, #636d78);
352
+ color: var(--tertiary-elements);
353
353
  text-align: right;
354
- font: var(--label-label-small, 500 11px/16px "Roboto", sans-serif);
354
+ font: 500 11px/16px "Roboto", sans-serif;
355
355
  position: relative;
356
- cursor: pointer;
357
356
  }
358
357
 
359
358
 
360
359
  // --- AIAssist
361
- .assist-answer {
360
+ .ai-assist-answer {
362
361
  display: flex;
363
362
  flex-direction: row;
364
363
  gap: 10px;
@@ -367,7 +366,6 @@
367
366
  align-self: stretch;
368
367
  flex-shrink: 0;
369
368
  position: relative;
370
- cursor: pointer;
371
369
  }
372
370
  .icon {
373
371
  border-radius: 4px;
@@ -15,30 +15,28 @@ import ImageFile from '../../../svgs/Icons/Media/ImageFile';
15
15
  import ColumnContainer from '../../../../containers/ColumnContainer/ColumnContainer';
16
16
  import { HighLightLink, messageHasUrls } from '../HighLightLink/HighLightLink';
17
17
  import { AIMessageWidget } from '../AIWidgets/AIMessageWidget';
18
- import { loopToLimitTokens } from '../../../../../../utils/utils';
19
18
  import LoaderComponent from '../../../Placeholders/LoaderComponent/LoaderComponent';
20
- import { IChatMessage } from '../../../../../../Data/source/AISource';
21
- import AssistAnswer from '../../../svgs/Icons/Actions/AssistAnswer';
22
19
  import AIWidgetActions from '../AIWidgets/AIWidgetActions/AIWidgetActions';
23
20
  import TranslateIcon from '../../../svgs/Icons/Media/Translate';
24
21
  import AvatarContentIncomingUser from './AvatarContentIncomingUser/AvatarContentIncomingUser';
25
22
  import { DefaultConfigurations } from '../../../../../../Data/DefaultConfigurations';
23
+ import useQbInitializedDataContext from '../../../../providers/QuickBloxUIKitProvider/useQbInitializedDataContext';
24
+ import { AIUtils } from '../../../../../../utils/utils';
25
+ import BotIcon from '../../../svgs/Icons/AIWidgets/BotIcon/BotIcon';
26
26
 
27
27
  export function InComingMessage(props: {
28
28
  theme: UiKitTheme | undefined;
29
29
  senderName: string | undefined;
30
30
  message: MessageEntity;
31
- // element: JSX.Element;
32
- onLoader: () => void;
33
- // renderWidget: JSX.Element | undefined;
31
+ onStartLoader: () => void;
32
+ onStopLoader: () => void;
33
+ onErrorToast: (messageError: string) => void;
34
34
  currentUserId?: number;
35
35
  messagesToView: MessageEntity[];
36
36
  AITranslation?: AIMessageWidget;
37
37
  AIAnswerToMessage?: AIMessageWidget;
38
- // index?: number;
39
- // updateData?: (index: number, text: string) => void;
40
- // translationDATA?: Record<number, string>;
41
38
  }) {
39
+ const currentContext = useQbInitializedDataContext();
42
40
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
41
  const [haveHover, setHaveHover] = useState(false);
44
42
  // const [openMenu, setOpenMenu] = useState(false);
@@ -47,21 +45,13 @@ export function InComingMessage(props: {
47
45
  useState<boolean>(false);
48
46
  const [widgetTextContent, setWidgetTextContent] = useState<string>('');
49
47
  const [originalTextMessage, setOriginalTextMessage] = useState<boolean>(true);
50
- // const [errorAITranslate, setErrorAITranslate] = useState<boolean>(false);
51
48
 
52
- // useEffect(() => {
53
- // setWaitAIWidget(false);
54
- // if (
55
- // props.AIRephraseMessage?.textToContent &&
56
- // props.AIRephraseMessage?.textToContent.length > 0
57
- // ) {
58
- // setMessageTextState(props.AIRephraseMessage?.textToContent);
59
- // setWidgetTextContent(props.AIRephraseMessage?.textToContent);
60
- // setTimeout(() => {
61
- // setWidgetTextContent('');
62
- // }, 45 * 1000);
63
- // }
64
- // }, [props.AIRephraseMessage?.textToContent]);
49
+ const maxTokensForAITranslate =
50
+ currentContext.InitParams.qbConfig.configAIApi.AITranslateWidgetConfig
51
+ .maxTokens;
52
+ const maxTokensForAnswerAssist =
53
+ currentContext.InitParams.qbConfig.configAIApi.AIAnswerAssistWidgetConfig
54
+ .maxTokens;
65
55
 
66
56
  useEffect(() => {
67
57
  setWaitAIWidget(false);
@@ -69,16 +59,6 @@ export function InComingMessage(props: {
69
59
  //
70
60
  useEffect(() => {
71
61
  setWaitAIWidget(false);
72
- // if (
73
- // props.AIAnswerToMessage?.textToContent &&
74
- // props.AIAnswerToMessage?.textToContent.length > 0
75
- // ) {
76
- // // setMessageTextState(props.AIAnswerToMessage?.textToContent);
77
- // setWidgetTextContent(props.AIAnswerToMessage?.textToContent);
78
- // setTimeout(() => {
79
- // setWidgetTextContent('');
80
- // }, 45 * 1000);
81
- // }
82
62
  }, [props.AIAnswerToMessage?.textToContent]);
83
63
 
84
64
  const messageContentRender = (
@@ -172,32 +152,6 @@ export function InComingMessage(props: {
172
152
  return messageContent;
173
153
  };
174
154
 
175
- const messageEntitiesToIChatMessageCollection = (
176
- messageEntities: MessageEntity[],
177
- currentUserId?: number,
178
- ): IChatMessage[] => {
179
- const MAX_TOKENS = 3584;
180
- const items = messageEntities.filter(
181
- (it) =>
182
- !it.notification_type ||
183
- (it.notification_type && it.notification_type.length === 0),
184
- );
185
- const messages = loopToLimitTokens(
186
- MAX_TOKENS,
187
- items,
188
- ({ message }) => message || '',
189
- ).reverse();
190
- const chatCompletionMessages: IChatMessage[] = messages.map(
191
- ({ message, sender_id }) => ({
192
- role: sender_id === currentUserId ? 'user' : 'assistant',
193
- content: message,
194
- }),
195
- );
196
-
197
- //
198
- return chatCompletionMessages;
199
- };
200
-
201
155
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
202
156
  async function sendMessageToTranslate(
203
157
  message: MessageEntity,
@@ -206,31 +160,36 @@ export function InComingMessage(props: {
206
160
  AITranslation?: AIMessageWidget,
207
161
  selectedLanguage?: string,
208
162
  ) {
209
- // setErrorAITranslate(false);
210
163
  if (!waitAITranslateWidget) {
211
164
  setWaitAITranslateWidget(true);
212
165
  await AITranslation?.textToWidget(
213
166
  message.message,
214
- messageEntitiesToIChatMessageCollection(messagesToView, currentUserId),
167
+ AIUtils.messageEntitiesToIChatMessageCollection(
168
+ messagesToView,
169
+ currentUserId,
170
+ maxTokensForAITranslate,
171
+ ),
215
172
  {
216
173
  language:
217
174
  selectedLanguage ||
218
- DefaultConfigurations.getDefaultLanguageForAITranslate(),
219
- // language: DefaultConfigurations.getDefaultLanguageForAITranslate()
220
- // selectedLanguage ||
221
- // QBConfig.configAIApi.AITranslateWidgetConfig.defaultLanguage ||
222
- // 'English',
175
+ DefaultConfigurations.getDefaultLanguageForAITranslate(
176
+ currentContext.InitParams.qbConfig.configAIApi
177
+ .AITranslateWidgetConfig,
178
+ ),
223
179
  },
224
180
  )
225
181
  .then((textTranslate) => {
226
182
  // eslint-disable-next-line promise/always-return
227
183
  setWidgetTextContent(textTranslate || '');
184
+ // eslint-disable-next-line promise/always-return
185
+ if (textTranslate === 'Translation failed.') {
186
+ props.onErrorToast('Translation failed.');
187
+ }
228
188
  setWaitAITranslateWidget(false);
229
189
  setOriginalTextMessage(false);
230
190
  })
231
191
  .catch(() => {
232
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
233
- // setErrorAITranslate(true);
192
+ props.onErrorToast('Translation failed.');
234
193
  setWaitAITranslateWidget(false);
235
194
  setOriginalTextMessage(true);
236
195
  });
@@ -249,12 +208,29 @@ export function InComingMessage(props: {
249
208
  ) {
250
209
  if (!waitAIWidget) {
251
210
  setWaitAIWidget(true);
252
- props.onLoader();
211
+ props.onStartLoader();
253
212
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call
254
213
  AIAnswerToMessage?.textToWidget(
255
214
  message.message,
256
- messageEntitiesToIChatMessageCollection(messagesToView, currentUserId),
257
- );
215
+ AIUtils.messageEntitiesToIChatMessageCollection(
216
+ messagesToView,
217
+ currentUserId,
218
+ maxTokensForAnswerAssist,
219
+ ),
220
+ )
221
+ .then((answerText) => {
222
+ // eslint-disable-next-line promise/always-return
223
+ if (answerText === 'Assist failed.') {
224
+ props.onErrorToast('Assist failed.');
225
+ }
226
+ setWaitAIWidget(false);
227
+ props.onStopLoader();
228
+ })
229
+ .catch(() => {
230
+ props.onErrorToast('Assist failed.');
231
+ setWaitAIWidget(false);
232
+ props.onStopLoader();
233
+ });
258
234
  }
259
235
  }
260
236
 
@@ -270,17 +246,23 @@ export function InComingMessage(props: {
270
246
  <div className="caption2">
271
247
  <div
272
248
  className="ai-translate-action"
249
+ style={{
250
+ cursor: !waitAITranslateWidget ? 'pointer' : '',
251
+ }}
273
252
  onClick={() => {
274
- if (originalTextMessage) {
275
- sendMessageToTranslate(
276
- mc,
277
- messagesToView,
278
- currentUserId,
279
- AITranslate,
280
- );
281
- } else {
282
- setOriginalTextMessage(true);
283
- setWidgetTextContent('');
253
+ console.log('click translate....');
254
+ if (!waitAITranslateWidget) {
255
+ if (originalTextMessage) {
256
+ sendMessageToTranslate(
257
+ mc,
258
+ messagesToView,
259
+ currentUserId,
260
+ AITranslate,
261
+ );
262
+ } else {
263
+ setOriginalTextMessage(true);
264
+ setWidgetTextContent('');
265
+ }
284
266
  }
285
267
  }}
286
268
  >
@@ -288,8 +270,14 @@ export function InComingMessage(props: {
288
270
  </div>
289
271
  </div>
290
272
  <AIWidgetActions
273
+ disabled={!waitAITranslateWidget}
291
274
  widgetToRender={
292
- <div className="icon">
275
+ <div
276
+ className="icon-translate"
277
+ style={{
278
+ cursor: !waitAITranslateWidget ? 'pointer' : '',
279
+ }}
280
+ >
293
281
  <TranslateIcon
294
282
  width="16"
295
283
  height="16"
@@ -298,11 +286,15 @@ export function InComingMessage(props: {
298
286
  />
299
287
  </div>
300
288
  }
301
- items={DefaultConfigurations.getAdditionalLanguagesForAITranslate().map(
302
- (item) => {
303
- return {
304
- title: item,
305
- action: () => {
289
+ items={DefaultConfigurations.getAdditionalLanguagesForAITranslate(
290
+ currentContext.InitParams.qbConfig.configAIApi
291
+ .AITranslateWidgetConfig,
292
+ ).map((item) => {
293
+ return {
294
+ title: item,
295
+ action: () => {
296
+ console.log('click translate....');
297
+ if (!waitAITranslateWidget) {
306
298
  sendMessageToTranslate(
307
299
  mc,
308
300
  messagesToView,
@@ -310,204 +302,12 @@ export function InComingMessage(props: {
310
302
  AITranslate,
311
303
  item,
312
304
  );
313
- },
314
- };
315
- },
316
- )}
317
- // items={[
318
- // {
319
- // title: 'English',
320
- // // eslint-disable-next-line @typescript-eslint/no-empty-function
321
- // action: () => {
322
- // sendMessageToTranslate(
323
- // mc,
324
- // messagesToView,
325
- // currentUserId,
326
- // AITranslation,
327
- // 'English',
328
- // );
329
- // },
330
- // },
331
- // {
332
- // title: 'Ukrainian',
333
- // action: () => {
334
- // sendMessageToTranslate(
335
- // mc,
336
- // messagesToView,
337
- // currentUserId,
338
- // AITranslation,
339
- // 'Ukrainian',
340
- // );
341
- // },
342
- // },
343
- // {
344
- // title: 'Spanish',
345
- // action: () => {
346
- // sendMessageToTranslate(
347
- // mc,
348
- // messagesToView,
349
- // currentUserId,
350
- // AITranslation,
351
- // 'Spanish',
352
- // );
353
- // },
354
- // },
355
- // {
356
- // title: 'Portuguese',
357
- // action: () => {
358
- // sendMessageToTranslate(
359
- // mc,
360
- // messagesToView,
361
- // currentUserId,
362
- // AITranslation,
363
- // 'Portuguese',
364
- // );
365
- // },
366
- // },
367
- // {
368
- // title: 'French',
369
- // action: () => {
370
- // sendMessageToTranslate(
371
- // mc,
372
- // messagesToView,
373
- // currentUserId,
374
- // AITranslation,
375
- // 'French',
376
- // );
377
- // },
378
- // },
379
- // // {
380
- // // title: 'German',
381
- // // action: () => {},
382
- // // },
383
- // ]}
305
+ }
306
+ },
307
+ };
308
+ })}
384
309
  />
385
310
  </div>
386
- // <div className="widget-ai-translate-with-choice-languages-container">
387
- // <div
388
- // className="widget-ai-translate-with-choice-languages-container--default-language"
389
- // onClick={() => {
390
- // if (originalTextMessage) {
391
- // sendMessageToTranslate(
392
- // mc,
393
- // messagesToView,
394
- // currentUserId,
395
- // AITranslation,
396
- // );
397
- // } else {
398
- // setOriginalTextMessage(true);
399
- // setWidgetTextContent('');
400
- // }
401
- // }}
402
- // >
403
- // {originalTextMessage ? 'Show translation' : 'Show original'}
404
- // </div>
405
- // <div className="widget-ai-translate-with-choice-languages-container--separator">
406
- // {' '}
407
- // </div>
408
- // <div className="widget-ai-translate-with-choice-languages-container--select-language">
409
- // <AIWidgetActions
410
- // widgetToRender={
411
- // <AIWidgetIcon
412
- // applyZoom
413
- // color="var(--main-elements)"
414
- // width="16"
415
- // height="16"
416
- // />
417
- // }
418
- // items={[
419
- // {
420
- // title: 'English',
421
- // // eslint-disable-next-line @typescript-eslint/no-empty-function
422
- // action: () => {
423
- // sendMessageToTranslate(
424
- // mc,
425
- // messagesToView,
426
- // currentUserId,
427
- // AITranslation,
428
- // 'English',
429
- // );
430
- // },
431
- // },
432
- // {
433
- // title: 'Ukrainian',
434
- // action: () => {
435
- // sendMessageToTranslate(
436
- // mc,
437
- // messagesToView,
438
- // currentUserId,
439
- // AITranslation,
440
- // 'Ukrainian',
441
- // );
442
- // },
443
- // },
444
- // {
445
- // title: 'Spanish',
446
- // action: () => {
447
- // sendMessageToTranslate(
448
- // mc,
449
- // messagesToView,
450
- // currentUserId,
451
- // AITranslation,
452
- // 'Spanish',
453
- // );
454
- // },
455
- // },
456
- // {
457
- // title: 'Portuguese',
458
- // action: () => {
459
- // sendMessageToTranslate(
460
- // mc,
461
- // messagesToView,
462
- // currentUserId,
463
- // AITranslation,
464
- // 'Portuguese',
465
- // );
466
- // },
467
- // },
468
- // {
469
- // title: 'French',
470
- // action: () => {
471
- // sendMessageToTranslate(
472
- // mc,
473
- // messagesToView,
474
- // currentUserId,
475
- // AITranslation,
476
- // 'French',
477
- // );
478
- // },
479
- // },
480
- // // {
481
- // // title: 'German',
482
- // // action: () => {},
483
- // // },
484
- // ]}
485
- // />
486
- // </div>
487
- // {waitAITranslateWidget && (
488
- // <div
489
- // className="widget-ai-translate-with-choice-languages-container--separator"
490
- // style={{
491
- // height: '16px',
492
- // width: '16px',
493
- // }}
494
- // >
495
- // <LoaderComponent
496
- // width="16"
497
- // height="16"
498
- // color="var(--color-background-info)"
499
- // />
500
- // </div>
501
- // )}
502
- // {errorAITranslate && (
503
- // <div className="widget-ai-translate-with-choice-languages-container--separator">
504
- // <ErrorMessageIcon
505
- // errorMessageText="OpenAI server does not response"
506
- // errorsDescriptions={[]}
507
- // />
508
- // </div>
509
- // )}
510
- // </div>
511
311
  )
512
312
  );
513
313
  };
@@ -520,9 +320,14 @@ export function InComingMessage(props: {
520
320
  ) => {
521
321
  return (
522
322
  AIAnswer && (
523
- <div className="assist-answer">
323
+ <div
324
+ className="ai-assist-answer"
325
+ style={{
326
+ cursor: !waitAIWidget ? 'pointer' : '',
327
+ }}
328
+ >
524
329
  <div
525
- className="icon"
330
+ className="ai-assist-icon"
526
331
  onClick={() =>
527
332
  sendMessageToAIAssistAnswer(
528
333
  mc,
@@ -541,11 +346,11 @@ export function InComingMessage(props: {
541
346
  overflow: 'visible',
542
347
  }}
543
348
  >
544
- <AssistAnswer
349
+ <BotIcon
545
350
  width="24"
546
- height="24"
351
+ height="25"
547
352
  applyZoom
548
- color="var(--main-elements)"
353
+ color="var(--primary)"
549
354
  />
550
355
  </div>
551
356
  </div>
@@ -626,122 +431,5 @@ export function InComingMessage(props: {
626
431
  </div>
627
432
  </div>
628
433
  </div>
629
- // <div
630
- // className="message-view-container--incoming-message-wrapper"
631
- // onMouseEnter={() => setHaveHover(true)}
632
- // onMouseLeave={() => setHaveHover(false)}
633
- // >
634
- // <div className="message-view-container--incoming-message-wrapper__message">
635
- // <div className="message-view-container--incoming-message-wrapper__avatar">
636
- // <div
637
- // style={
638
- // props.theme
639
- // ? { backgroundColor: props.theme.disabledElements() }
640
- // : {}
641
- // }
642
- // className="message-view-container__sender-avatar"
643
- // >
644
- // <User
645
- // width="24"
646
- // height="24"
647
- // applyZoom
648
- // color="var(--secondary-text)"
649
- // />
650
- // </div>
651
- // </div>
652
- // <div className="message-view-container--incoming-message-container">
653
- // <div
654
- // style={props.theme ? { color: props.theme.secondaryText() } : {}}
655
- // className="message-view-container__sender-name"
656
- // >
657
- // {props.senderName || props.message.sender_id.toString()}
658
- // </div>
659
- // <div
660
- // style={
661
- // props.theme
662
- // ? {
663
- // color: props.theme.mainText(),
664
- // backgroundColor: props.theme.incomingBackground(),
665
- // }
666
- // : {}
667
- // }
668
- // className="message-view-container__sender-message"
669
- // >
670
- // {/* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */}
671
- // {messageContentRender(
672
- // props.message,
673
- // widgetTextContent,
674
- // props.theme,
675
- // )}
676
- // </div>
677
- // </div>
678
- // {haveHover || openMenu ? (
679
- // <div
680
- // className="message-view-container--incoming-message-wrapper--context-menu"
681
- // onClick={() => {
682
- // setOpenMenu(!openMenu);
683
- // }}
684
- // >
685
- // <EditDots
686
- // color={
687
- // props.theme
688
- // ? props.theme.secondaryText()
689
- // : 'var(--secondary-text)'
690
- // }
691
- // />
692
- // {/* {openMenu ? ( */}
693
- // {/* <DropDownMenu */}
694
- // {/* items={contextMessageMenu} */}
695
- // {/* itemsAI={contextMessageMenuAI} */}
696
- // {/* /> */}
697
- // {/* ) : null} */}
698
- // </div>
699
- // ) : (
700
- // <div
701
- // style={props.theme ? { color: props.theme.mainText() } : {}}
702
- // className="message-view-container__incoming-time"
703
- // >
704
- // {getTimeShort24hFormat(props.message.date_sent)}
705
- // </div>
706
- // )}
707
- //
708
- // <div
709
- // className="message-view-container__incoming-time"
710
- // onClick={props.onClick}
711
- // >
712
- // {/* {props.renderWidget} */}
713
- // {renderWidgetAIAssist(
714
- // props.message,
715
- // props.messagesToView,
716
- // props.currentUserId,
717
- // props.AITranslation,
718
- // props.AIAnswerToMessage,
719
- // )}
720
- // </div>
721
- // {waitAIWidget && (
722
- // <div
723
- // className="message-view-container__incoming-time"
724
- // style={{
725
- // height: '24px',
726
- // width: '24px',
727
- // }}
728
- // >
729
- // <LoaderComponent
730
- // width="24"
731
- // height="24"
732
- // color="var(--color-background-info)"
733
- // />
734
- // </div>
735
- // )}
736
- // </div>
737
- // <div className="message-view-container__widget-ai-translate">
738
- // {renderWidgetAITranslate(
739
- // props.message,
740
- // props.messagesToView,
741
- // props.currentUserId,
742
- // props.AITranslation,
743
- // )}
744
- // </div>
745
- // </div>
746
434
  );
747
435
  }