quickblox-react-ui-kit 0.2.0 → 0.2.1

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 (108) hide show
  1. package/dist/Data/DefaultConfigurations.d.ts +11 -0
  2. package/dist/Data/Stubs.d.ts +1 -1
  3. package/dist/Data/source/AISource.d.ts +13 -0
  4. package/dist/Domain/entity/MessageEntity.d.ts +1 -1
  5. package/dist/Presentation/Views/Base/BaseViewModel.d.ts +10 -6
  6. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget.d.ts +16 -0
  7. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.d.ts +14 -0
  8. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/SliderMenu.d.ts +23 -0
  9. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.d.ts +15 -0
  10. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.d.ts +10 -0
  11. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.d.ts +10 -0
  12. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.d.ts +10 -0
  13. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/useDefaultVoiceInputWidget.d.ts +2 -2
  14. package/dist/Presentation/components/UI/Dialogs/MessagesView/ContextMenu.d.ts +2 -1
  15. package/dist/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.d.ts +26 -0
  16. package/dist/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.d.ts +11 -0
  17. package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.d.ts +3 -0
  18. package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.d.ts +15 -0
  19. package/dist/Presentation/components/UI/Dialogs/MessagesView/MessagesView.d.ts +5 -5
  20. package/dist/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.d.ts +9 -0
  21. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/BookIcon/BookIcon.d.ts +3 -0
  22. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/HammerIcon/index.d.ts +3 -0
  23. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/HandshakeIcon/index.d.ts +3 -0
  24. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/MuscleIcon/index.d.ts +3 -0
  25. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/NecktieIcon/index.d.ts +3 -0
  26. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/NeutralFaceIcon/index.d.ts +3 -0
  27. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PalmsUpTogetherIcon/index.d.ts +3 -0
  28. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PerformingArtsIcon/index.d.ts +3 -0
  29. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PointUpIcon/index.d.ts +3 -0
  30. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/SmileyIcon/index.d.ts +3 -0
  31. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/SmirkIcon/index.d.ts +3 -0
  32. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/WhiteCheckMarkIcon/index.d.ts +3 -0
  33. package/dist/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/index.d.ts +4 -0
  34. package/dist/Presentation/components/UI/svgs/Icons/Actions/Summarize/index.d.ts +4 -0
  35. package/dist/Presentation/components/UI/svgs/Icons/Actions/Tone/index.d.ts +4 -0
  36. package/dist/Presentation/components/UI/svgs/Icons/Media/Translate/index.d.ts +4 -0
  37. package/dist/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.d.ts +5 -5
  38. package/dist/QBconfig.d.ts +22 -0
  39. package/dist/index-ui.d.ts +5 -1
  40. package/dist/index-ui.js +360 -41
  41. package/package.json +1 -1
  42. package/src/App.tsx +14 -1
  43. package/src/Data/DefaultConfigurations.ts +128 -0
  44. package/src/Data/Stubs.ts +15 -15
  45. package/src/Data/mapper/MessageLocalDTOMapper.ts +3 -2
  46. package/src/Data/mapper/MessageRemoteDTOMapper.ts +3 -2
  47. package/src/Data/source/AISource.ts +133 -0
  48. package/src/Data/source/remote/Mapper/MessageDTOMapper.ts +1 -1
  49. package/src/Domain/entity/MessageEntity.ts +1 -1
  50. package/src/Presentation/Views/Base/BaseViewModel.ts +9 -4
  51. package/src/Presentation/Views/Dialogs/Dialogs.tsx +37 -21
  52. package/src/Presentation/components/UI/Dialogs/HeaderDialogs/HeaderDialogs.scss +2 -2
  53. package/src/Presentation/components/UI/Dialogs/HeaderDialogs/HeaderDialogs.tsx +5 -5
  54. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/{AIWidget.ts → AIMessageWidget.ts} +14 -3
  55. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.scss +55 -0
  56. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.tsx +116 -0
  57. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/SliderMenu.tsx +172 -0
  58. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.ts +21 -0
  59. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.tsx +99 -0
  60. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.tsx +105 -0
  61. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.tsx +106 -0
  62. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/useDefaultVoiceInputWidget.tsx +7 -6
  63. package/src/Presentation/components/UI/Dialogs/MessagesView/ContextMenu.tsx +5 -6
  64. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.scss +84 -0
  65. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.tsx +105 -0
  66. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.scss +50 -0
  67. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.tsx +43 -0
  68. package/src/Presentation/components/UI/Dialogs/MessagesView/HeaderMessages/HeaderMessages.tsx +14 -11
  69. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.scss +39 -0
  70. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.tsx +26 -0
  71. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.scss +394 -0
  72. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.tsx +747 -0
  73. package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.scss +88 -4
  74. package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.tsx +589 -246
  75. package/src/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.scss +7 -0
  76. package/src/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.tsx +99 -0
  77. package/src/Presentation/components/UI/Dialogs/MessagesView/useMessagesViewModel.ts +2 -2
  78. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/BookIcon/BookIcon.tsx +7 -0
  79. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/HammerIcon/index.tsx +7 -0
  80. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/HandshakeIcon/index.tsx +7 -0
  81. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/MuscleIcon/index.tsx +7 -0
  82. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/NecktieIcon/index.tsx +7 -0
  83. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/NeutralFaceIcon/index.tsx +7 -0
  84. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PalmsUpTogetherIcon/index.tsx +7 -0
  85. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PerformingArtsIcon/index.tsx +7 -0
  86. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PointUpIcon/index.tsx +7 -0
  87. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/SmileyIcon/index.tsx +20 -0
  88. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/SmirkIcon/index.tsx +7 -0
  89. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/WhiteCheckMarkIcon/index.tsx +7 -0
  90. package/src/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/AssistAnswer.svg +3 -0
  91. package/src/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/index.tsx +93 -0
  92. package/src/Presentation/components/UI/svgs/Icons/Actions/Summarize/Summarize.svg +6 -0
  93. package/src/Presentation/components/UI/svgs/Icons/Actions/Summarize/index.tsx +58 -0
  94. package/src/Presentation/components/UI/svgs/Icons/Actions/Tone/Tone.svg +3 -0
  95. package/src/Presentation/components/UI/svgs/Icons/Actions/Tone/index.tsx +34 -0
  96. package/src/Presentation/components/UI/svgs/Icons/Media/Translate/Translate.svg +3 -0
  97. package/src/Presentation/components/UI/svgs/Icons/Media/Translate/index.tsx +35 -0
  98. package/src/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.tsx +110 -29
  99. package/src/QBconfig.ts +32 -3
  100. package/src/index-ui.ts +9 -0
  101. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidget.d.ts +0 -8
  102. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy.d.ts +0 -9
  103. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultTextInputWidget.d.ts +0 -2
  104. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy.tsx +0 -136
  105. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultTextInputWidget.tsx +0 -60
  106. /package/dist/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/index.d.ts +0 -0
  107. /package/src/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/Send.svg +0 -0
  108. /package/src/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/index.tsx +0 -0
@@ -16,21 +16,27 @@ import { Pagination } from '../../../../Domain/repository/Pagination';
16
16
  // import { DialogEventInfo } from '../../../../Domain/entity/DialogEventInfo';
17
17
  import UiKitTheme from '../../../assets/UiKitTheme';
18
18
  import BaseViewModel from '../../../Views/Base/BaseViewModel';
19
- import { AIWidget } from '../../UI/Dialogs/MessagesView/AIWidgets/AIWidget';
19
+ import { AIMessageWidget } from '../../UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget';
20
20
  import { QBConfig } from '../../../../QBconfig';
21
- import UseDefaultAIAssistAnswerWidgetWithProxy from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy';
21
+ import UseDefaultAIAssistAnswerWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget';
22
+ import UseDefaultAITranslateWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget';
23
+ import UseDefaultAIRephraseMessageWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget';
24
+ import {
25
+ DefaultConfigurations,
26
+ ProxyConfig,
27
+ } from '../../../../Data/DefaultConfigurations';
22
28
 
23
29
  type AIWidgetPlaceHolder = {
24
30
  enabled: boolean;
25
31
  default: boolean;
26
- AIWidget?: AIWidget;
32
+ AIWidget?: AIMessageWidget;
27
33
  };
28
34
 
29
35
  type QuickBloxUIKitDesktopLayoutProps = {
30
36
  theme?: UiKitTheme;
31
- AIEditMessage?: AIWidgetPlaceHolder;
32
- AITranslation?: AIWidgetPlaceHolder;
33
- AIAnswerToMessage?: AIWidgetPlaceHolder;
37
+ AIRephrase?: AIWidgetPlaceHolder;
38
+ AITranslate?: AIWidgetPlaceHolder;
39
+ AIAssist?: AIWidgetPlaceHolder;
34
40
  };
35
41
 
36
42
  const QuickBloxUIKitDesktopLayout: React.FC<
@@ -39,10 +45,10 @@ const QuickBloxUIKitDesktopLayout: React.FC<
39
45
  > = ({
40
46
  theme = undefined,
41
47
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
42
- AITranslation = undefined,
48
+ AITranslate = undefined,
43
49
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
- AIEditMessage = undefined,
45
- AIAnswerToMessage = undefined,
50
+ AIRephrase = undefined,
51
+ AIAssist = undefined,
46
52
  }: QuickBloxUIKitDesktopLayoutProps) => {
47
53
  console.log('create QuickBloxUIKitDesktopLayout');
48
54
  const [selectedDialog, setSelectedDialog] =
@@ -62,25 +68,20 @@ const QuickBloxUIKitDesktopLayout: React.FC<
62
68
  const dialogsViewModel: DialogsViewModel =
63
69
  useDialogsViewModel(currentContext);
64
70
 
65
- const defaultAIEditMessageWidget = AIEditMessage?.AIWidget; // useDefaultTextInputWidget();
66
- const defaultAITranslateWidget = AITranslation?.AIWidget;
67
- // if (!defaultAIEditMessageWidget) {
68
- // defaultAIEditMessageWidget = useDefaultTextInputWidget();
69
- // }
70
- // const defaultAITranslateWidget =
71
- // AITranslation?.AIWidget || useDefaultVoiceInputWidget();
72
- let defaultAIAnswerToMessageWidget;
71
+ let defaultAIEditMessageWidget = AIRephrase?.AIWidget; // useDefaultTextInputWidget();
72
+ let defaultAITranslateWidget = AITranslate?.AIWidget;
73
+ let defaultAIAnswerToMessageWidget = AIAssist?.AIWidget;
73
74
 
74
75
  const getAIAssistAnswer = (): void => {
75
- if (AIAnswerToMessage?.enabled && !AIAnswerToMessage?.default) {
76
- defaultAIAnswerToMessageWidget = AIAnswerToMessage.AIWidget;
76
+ if (AIAssist?.enabled && !AIAssist?.default) {
77
+ defaultAIAnswerToMessageWidget = AIAssist.AIWidget;
77
78
  } else if (
78
- AIAnswerToMessage?.enabled ||
79
+ AIAssist?.enabled ||
79
80
  QBConfig.configAIApi.AIAnswerAssistWidgetConfig.useDefault
80
81
  ) {
81
82
  if (
82
83
  !QBConfig.configAIApi.AIAnswerAssistWidgetConfig.useDefault ||
83
- (AIAnswerToMessage && !AIAnswerToMessage?.default)
84
+ (AIAssist && !AIAssist?.default)
84
85
  ) {
85
86
  defaultAIAnswerToMessageWidget = undefined;
86
87
  } else {
@@ -96,15 +97,95 @@ const QuickBloxUIKitDesktopLayout: React.FC<
96
97
  sessionToken ||
97
98
  '';
98
99
  }
99
- defaultAIAnswerToMessageWidget =
100
- UseDefaultAIAssistAnswerWidgetWithProxy({
101
- ...QBConfig.configAIApi.AIAnswerAssistWidgetConfig.proxyConfig,
102
- sessionToken: token,
103
- });
100
+ const proxyConfig: ProxyConfig =
101
+ QBConfig.configAIApi.AIAnswerAssistWidgetConfig.proxyConfig ||
102
+ DefaultConfigurations.getDefaultProxyConfig();
103
+
104
+ defaultAIAnswerToMessageWidget = UseDefaultAIAssistAnswerWidget({
105
+ ...proxyConfig,
106
+ sessionToken: token,
107
+ apiKey,
108
+ });
109
+ }
110
+ }
111
+ };
112
+ const getAITranslate = (): void => {
113
+ if (AITranslate?.enabled && !AITranslate?.default) {
114
+ defaultAITranslateWidget = AITranslate.AIWidget;
115
+ } else if (
116
+ AITranslate?.enabled ||
117
+ QBConfig.configAIApi.AITranslateWidgetConfig.useDefault
118
+ ) {
119
+ if (
120
+ !QBConfig.configAIApi.AITranslateWidgetConfig.useDefault ||
121
+ (AITranslate && !AITranslate?.default)
122
+ ) {
123
+ defaultAITranslateWidget = undefined;
124
+ } else {
125
+ const { apiKey } = QBConfig.configAIApi.AITranslateWidgetConfig;
126
+ let token = '';
127
+
128
+ if (apiKey) {
129
+ token = apiKey;
130
+ } else {
131
+ token =
132
+ QBConfig.configAIApi.AITranslateWidgetConfig.proxyConfig
133
+ .sessionToken ||
134
+ sessionToken ||
135
+ '';
136
+ }
137
+ const proxyConfig: ProxyConfig =
138
+ QBConfig.configAIApi.AITranslateWidgetConfig.proxyConfig ||
139
+ DefaultConfigurations.getDefaultProxyConfig();
140
+
141
+ defaultAITranslateWidget = UseDefaultAITranslateWidget({
142
+ ...proxyConfig,
143
+ sessionToken: token,
144
+ apiKey,
145
+ });
146
+ }
147
+ }
148
+ };
149
+ const getAIRephrase = (): void => {
150
+ if (AIRephrase?.enabled && !AIRephrase?.default) {
151
+ defaultAIEditMessageWidget = AIRephrase.AIWidget;
152
+ } else if (
153
+ AIRephrase?.enabled ||
154
+ QBConfig.configAIApi.AIRephraseWidgetConfig.useDefault
155
+ ) {
156
+ if (
157
+ !QBConfig.configAIApi.AIRephraseWidgetConfig.useDefault ||
158
+ (AIRephrase && !AIRephrase?.default)
159
+ ) {
160
+ defaultAIEditMessageWidget = undefined;
161
+ } else {
162
+ const { apiKey } = QBConfig.configAIApi.AIRephraseWidgetConfig;
163
+ let token = '';
164
+
165
+ if (apiKey) {
166
+ token = apiKey;
167
+ } else {
168
+ token =
169
+ QBConfig.configAIApi.AIRephraseWidgetConfig.proxyConfig
170
+ .sessionToken ||
171
+ sessionToken ||
172
+ '';
173
+ }
174
+ const proxyConfig: ProxyConfig =
175
+ QBConfig.configAIApi.AIRephraseWidgetConfig.proxyConfig ||
176
+ DefaultConfigurations.getDefaultProxyConfig();
177
+
178
+ defaultAIEditMessageWidget = UseDefaultAIRephraseMessageWidget({
179
+ ...proxyConfig,
180
+ sessionToken: token,
181
+ apiKey,
182
+ });
104
183
  }
105
184
  }
106
185
  };
107
186
 
187
+ getAITranslate();
188
+ getAIRephrase();
108
189
  getAIAssistAnswer();
109
190
 
110
191
  const selectDialogActions = (item: BaseViewModel<DialogEntity>): void => {
@@ -269,9 +350,9 @@ const QuickBloxUIKitDesktopLayout: React.FC<
269
350
  maxWidthToResize={
270
351
  selectedDialog && needDialogInformation ? undefined : '1040px'
271
352
  }
272
- AIEditMessage={defaultAIEditMessageWidget}
273
- AITranslation={defaultAITranslateWidget}
274
- AIAnswerToMessage={defaultAIAnswerToMessageWidget}
353
+ AIRephrase={defaultAIEditMessageWidget}
354
+ AITranslate={defaultAITranslateWidget}
355
+ AIAssist={defaultAIAnswerToMessageWidget}
275
356
  theme={theme}
276
357
  /> // 1 Get Messages + 1 Get User by Id
277
358
  ) : (
package/src/QBconfig.ts CHANGED
@@ -8,12 +8,41 @@ export const QBConfig = {
8
8
  },
9
9
  configAIApi: {
10
10
  AIAnswerAssistWidgetConfig: {
11
- apiKey: '', // Replace with your real API key
11
+ apiKey: '',
12
12
  useDefault: true,
13
13
  proxyConfig: {
14
14
  api: 'v1/chat/completions',
15
- servername: 'https://api.openai.com/',
16
- port: '',
15
+ servername: 'http://localhost',
16
+ port: '3001',
17
+ sessionToken: '',
18
+ },
19
+ },
20
+ AITranslateWidgetConfig: {
21
+ apiKey: '',
22
+ useDefault: true,
23
+ defaultLanguage: 'English',
24
+ languages: [
25
+ 'English',
26
+ 'Spanish',
27
+ 'French',
28
+ 'Portuguese',
29
+ 'German',
30
+ 'Ukrainian',
31
+ ],
32
+ proxyConfig: {
33
+ api: 'v1/chat/completions',
34
+ servername: 'http://localhost',
35
+ port: '3001',
36
+ sessionToken: '',
37
+ },
38
+ },
39
+ AIRephraseWidgetConfig: {
40
+ apiKey: '',
41
+ useDefault: true,
42
+ proxyConfig: {
43
+ api: 'v1/chat/completions',
44
+ servername: 'http://localhost',
45
+ port: '3001',
17
46
  sessionToken: '',
18
47
  },
19
48
  },
package/src/index-ui.ts CHANGED
@@ -33,6 +33,10 @@ import QuickBloxUIKitDesktopLayout from './Presentation/components/layouts/Deskt
33
33
  import DefaultTheme from './Presentation/assets/DefaultThemes/DefaultTheme';
34
34
  import UiKitTheme from './Presentation/assets/UiKitTheme';
35
35
  import useQbUIKitDataContext from './Presentation/components/providers/QuickBloxUIKitProvider/useQbUIKitDataContext';
36
+ import { AIMessageWidget } from './Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget';
37
+ import { AISource, IChatMessage } from './Data/source/AISource';
38
+ import AIWidgetIcon from './Presentation/components/UI/svgs/Icons/AIWidgets/AIWidget';
39
+ import ErrorMessageIcon from './Presentation/components/UI/Dialogs/MessagesView/AIWidgets/ErrorMessageIcon';
36
40
 
37
41
  export {
38
42
  MainButton,
@@ -65,4 +69,9 @@ export {
65
69
  QuickBloxUIKitDesktopLayout,
66
70
  DefaultTheme,
67
71
  type UiKitTheme,
72
+ type AIMessageWidget,
73
+ AISource,
74
+ type IChatMessage,
75
+ AIWidgetIcon,
76
+ ErrorMessageIcon,
68
77
  };
@@ -1,8 +0,0 @@
1
- import { FunctionTypeFileWithContextToToVoid, FunctionTypeJSXElement, FunctionTypeStringWithContextToVoid } from '../../../../../Views/Base/BaseViewModel';
2
- export interface AIWidget {
3
- renderWidget: FunctionTypeJSXElement;
4
- textToWidget: FunctionTypeStringWithContextToVoid;
5
- fileToWidget: FunctionTypeFileWithContextToToVoid;
6
- textToContent: string | undefined;
7
- fileToContent: File | undefined;
8
- }
@@ -1,9 +0,0 @@
1
- import { AIWidget } from './AIWidget';
2
- interface MessageWidgetProps {
3
- servername: string;
4
- api: string;
5
- port: string;
6
- sessionToken: string;
7
- }
8
- export default function UseDefaultAIAssistAnswerWidgetWithProxy({ servername, api, port, sessionToken, }: MessageWidgetProps): AIWidget;
9
- export {};
@@ -1,2 +0,0 @@
1
- import { AIWidget } from './AIWidget';
2
- export default function useDefaultTextInputWidget(): AIWidget;
@@ -1,136 +0,0 @@
1
- import { useState } from 'react';
2
- import { AIWidget } from './AIWidget';
3
- import AIWidgetIcon from '../../../svgs/Icons/Media/AIWidget';
4
- import { IChatMessage } from '../../../../../Views/Base/BaseViewModel';
5
- import { stringifyError } from '../../../../../../utils/parse';
6
- import ErrorMessageIcon from './ErrorMessageIcon';
7
-
8
- interface MessageWidgetProps {
9
- // https://api.openai.com/v1/chat/completions'
10
- // api: 'v1/chat/completions',
11
- // servername: 'https://myproxy.com',
12
- // https://func270519800.azurewebsites.net/api/TranslateTextToEng
13
- servername: string;
14
- api: string;
15
- port: string;
16
- sessionToken: string;
17
- }
18
- export default function UseDefaultAIAssistAnswerWidgetWithProxy({
19
- servername,
20
- api,
21
- port,
22
- sessionToken,
23
- }: MessageWidgetProps): AIWidget {
24
- const [errorMessage, setErrorMessage] = useState<string>('');
25
-
26
- // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function
27
- const fileToWidget = (file: File, context: IChatMessage[]): void => {};
28
-
29
- const renderWidget = (): JSX.Element => {
30
- if (errorMessage && errorMessage.length > 0) {
31
- const errorsDescriptions:
32
- | { title: string; action: () => void }[]
33
- | undefined = [];
34
-
35
- return (
36
- <ErrorMessageIcon
37
- errorMessageText={errorMessage}
38
- errorsDescriptions={errorsDescriptions}
39
- />
40
- );
41
- }
42
-
43
- return <AIWidgetIcon applyZoom color="green" />;
44
- };
45
-
46
- // async function getData(
47
- // textToSend: string,
48
- // dialogMessages: ChatCompletionRequestMessage[],
49
- // ): Promise<string> {
50
- // //
51
- // const apiEndpoint = 'https://api.openai.com/v1/chat/completions';
52
- // const { apiKey } = QBConfig.configAIApi.AIAnswerAssistWidgetConfig; // Замените на ваш реальный ключ API
53
- // const model = 'gpt-3.5-turbo';
54
- // const requestOptions = {
55
- // method: 'POST',
56
- // headers: {
57
- // 'Content-Type': 'application/json',
58
- // Authorization: `Bearer ${apiKey}`,
59
- // },
60
- // body: JSON.stringify({
61
- // messages: [...dialogMessages, { role: 'user', content: textToSend }],
62
- // model,
63
- // temperature: 0.5,
64
- // }),
65
- // };
66
- //
67
- async function getData(
68
- textToSend: string,
69
- dialogMessages: IChatMessage[],
70
- ): Promise<string> {
71
- let outputMessage = '';
72
- const apiEndpoint = `${servername}${port}${api}`;
73
- const apiKey = sessionToken; // Замените на ваш реальный ключ API
74
- const model = 'gpt-3.5-turbo';
75
- const prompt = `Respond as a knowledgeable customer support specialist with access to ChatGPT features, and provide a simple and informative response to the inquiry :"${textToSend}"`;
76
-
77
- const requestOptions = {
78
- method: 'POST',
79
- headers: {
80
- 'Content-Type': 'application/json',
81
- Authorization: `Bearer ${apiKey}`,
82
- },
83
- body: JSON.stringify({
84
- messages: [...dialogMessages, { role: 'user', content: prompt }],
85
- model,
86
- temperature: 0.5,
87
- }),
88
- };
89
-
90
- //
91
- try {
92
- const response = await fetch(apiEndpoint, requestOptions);
93
- const data = await response.json();
94
-
95
- outputMessage = data.choices[0].message?.content || '';
96
- } catch (err) {
97
- outputMessage = stringifyError(err);
98
- setErrorMessage(outputMessage);
99
- }
100
-
101
- return outputMessage;
102
- }
103
-
104
- const [textFromWidgetToContent, setTextFromWidgetToContent] = useState('');
105
- // const textToWidget = (value: string, context: IChatMessage[]): void => {
106
- // if (value && value.length > 0) {
107
- // // eslint-disable-next-line promise/catch-or-return
108
- // getOpenAIApiData(value, context as ChatCompletionRequestMessage[]).then(
109
- // // eslint-disable-next-line promise/always-return
110
- // (data) => {
111
- // setTextFromWidgetToContent(data);
112
- // },
113
- // );
114
- // }
115
- // };
116
-
117
- const textToWidget = (value: string, context: IChatMessage[]): void => {
118
- if (value && value.length > 0) {
119
- // eslint-disable-next-line promise/catch-or-return
120
- getData(value, context).then(
121
- // eslint-disable-next-line promise/always-return
122
- (data) => {
123
- setTextFromWidgetToContent(data);
124
- },
125
- );
126
- }
127
- };
128
-
129
- return {
130
- fileToContent: undefined,
131
- textToContent: textFromWidgetToContent,
132
- fileToWidget,
133
- renderWidget,
134
- textToWidget,
135
- };
136
- }
@@ -1,60 +0,0 @@
1
- import { useState } from 'react';
2
- import { AIWidget } from './AIWidget';
3
-
4
- export default function useDefaultTextInputWidget(): AIWidget {
5
- // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-function
6
- const fileToWidget = (file: File): void => {};
7
-
8
- const renderWidget = (): JSX.Element => {
9
- // return <SendIcon width="21" height="18" applyZoom color="red" />;
10
- return (
11
- <div
12
- style={{
13
- width: '21',
14
- height: '18',
15
- color: 'red',
16
- fontSize: '9px',
17
- fontStyle: 'bold',
18
- fontWeight: '900',
19
- border: '2px solid red',
20
- }}
21
- >
22
- T2V
23
- </div>
24
- );
25
- };
26
-
27
- async function getData(textToSend: string): Promise<string> {
28
- const response = await fetch(
29
- `https://func270519800.azurewebsites.net/api/TranslateTextToEng?text=${textToSend}`,
30
- );
31
-
32
- console.log('getData: response: ', response);
33
- const data = await response.text();
34
-
35
- console.log(
36
- 'getData have response: ',
37
- JSON.stringify(data.replaceAll('\n\n', '')),
38
- );
39
-
40
- return data.replaceAll('\n\n', '');
41
- }
42
-
43
- const [textFromWidgetToInput, setTextFromWidgetToInput] = useState('');
44
- const textToWidget = (value: string): void => {
45
- if (value && value.length > 0) {
46
- // eslint-disable-next-line promise/catch-or-return,promise/always-return
47
- getData(value).then((data) => {
48
- setTextFromWidgetToInput(data);
49
- });
50
- }
51
- };
52
-
53
- return {
54
- fileToContent: undefined,
55
- textToContent: textFromWidgetToInput,
56
- fileToWidget,
57
- renderWidget,
58
- textToWidget,
59
- };
60
- }