quickblox-react-ui-kit 0.2.0 → 0.2.2

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 (114) hide show
  1. package/dist/CommonTypes/FunctionResult.d.ts +47 -0
  2. package/dist/Data/DefaultConfigurations.d.ts +7 -0
  3. package/dist/Data/Stubs.d.ts +1 -1
  4. package/dist/Data/source/AISource.d.ts +13 -0
  5. package/dist/Domain/entity/MessageEntity.d.ts +1 -1
  6. package/dist/Presentation/Views/Base/BaseViewModel.d.ts +10 -6
  7. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget.d.ts +16 -0
  8. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.d.ts +14 -0
  9. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/SliderMenu.d.ts +23 -0
  10. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.d.ts +15 -0
  11. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.d.ts +10 -0
  12. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.d.ts +10 -0
  13. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.d.ts +10 -0
  14. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/useDefaultVoiceInputWidget.d.ts +2 -2
  15. package/dist/Presentation/components/UI/Dialogs/MessagesView/ContextMenu.d.ts +2 -1
  16. package/dist/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.d.ts +26 -0
  17. package/dist/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.d.ts +11 -0
  18. package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.d.ts +3 -0
  19. package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.d.ts +15 -0
  20. package/dist/Presentation/components/UI/Dialogs/MessagesView/MessagesView.d.ts +5 -5
  21. package/dist/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.d.ts +9 -0
  22. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/BookIcon/BookIcon.d.ts +3 -0
  23. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/HammerIcon/index.d.ts +3 -0
  24. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/HandshakeIcon/index.d.ts +3 -0
  25. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/MuscleIcon/index.d.ts +3 -0
  26. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/NecktieIcon/index.d.ts +3 -0
  27. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/NeutralFaceIcon/index.d.ts +3 -0
  28. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PalmsUpTogetherIcon/index.d.ts +3 -0
  29. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PerformingArtsIcon/index.d.ts +3 -0
  30. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PointUpIcon/index.d.ts +3 -0
  31. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/SmileyIcon/index.d.ts +3 -0
  32. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/SmirkIcon/index.d.ts +3 -0
  33. package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/WhiteCheckMarkIcon/index.d.ts +3 -0
  34. package/dist/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/index.d.ts +4 -0
  35. package/dist/Presentation/components/UI/svgs/Icons/Actions/Summarize/index.d.ts +4 -0
  36. package/dist/Presentation/components/UI/svgs/Icons/Actions/Tone/index.d.ts +4 -0
  37. package/dist/Presentation/components/UI/svgs/Icons/Media/Translate/index.d.ts +4 -0
  38. package/dist/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.d.ts +5 -5
  39. package/dist/Presentation/components/providers/QuickBloxUIKitProvider/QuickBloxUIKitProvider.d.ts +1 -1
  40. package/dist/QBconfig.d.ts +23 -0
  41. package/dist/index-ui.d.ts +5 -1
  42. package/dist/index-ui.js +361 -42
  43. package/global.d.ts +48 -6
  44. package/package.json +1 -1
  45. package/src/App.tsx +20 -14
  46. package/src/CommonTypes/FunctionResult.ts +54 -0
  47. package/src/Data/DefaultConfigurations.ts +197 -0
  48. package/src/Data/Stubs.ts +15 -15
  49. package/src/Data/mapper/MessageLocalDTOMapper.ts +3 -2
  50. package/src/Data/mapper/MessageRemoteDTOMapper.ts +3 -2
  51. package/src/Data/source/AISource.ts +133 -0
  52. package/src/Data/source/remote/Mapper/MessageDTOMapper.ts +3 -3
  53. package/src/Domain/entity/MessageEntity.ts +1 -1
  54. package/src/Presentation/Views/Base/BaseViewModel.ts +9 -4
  55. package/src/Presentation/Views/Dialogs/Dialogs.tsx +37 -21
  56. package/src/Presentation/components/UI/Dialogs/HeaderDialogs/HeaderDialogs.scss +2 -2
  57. package/src/Presentation/components/UI/Dialogs/HeaderDialogs/HeaderDialogs.tsx +5 -5
  58. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/{AIWidget.ts → AIMessageWidget.ts} +14 -3
  59. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.scss +55 -0
  60. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.tsx +116 -0
  61. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/SliderMenu.tsx +172 -0
  62. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.ts +21 -0
  63. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.tsx +99 -0
  64. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.tsx +105 -0
  65. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.tsx +106 -0
  66. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/useDefaultVoiceInputWidget.tsx +7 -6
  67. package/src/Presentation/components/UI/Dialogs/MessagesView/ContextMenu.tsx +5 -6
  68. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.scss +84 -0
  69. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.tsx +105 -0
  70. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.scss +50 -0
  71. package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.tsx +43 -0
  72. package/src/Presentation/components/UI/Dialogs/MessagesView/HeaderMessages/HeaderMessages.tsx +14 -11
  73. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.scss +39 -0
  74. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.tsx +26 -0
  75. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.scss +394 -0
  76. package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.tsx +747 -0
  77. package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.scss +88 -4
  78. package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.tsx +589 -246
  79. package/src/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.scss +7 -0
  80. package/src/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.tsx +99 -0
  81. package/src/Presentation/components/UI/Dialogs/MessagesView/useMessagesViewModel.ts +7 -5
  82. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/BookIcon/BookIcon.tsx +7 -0
  83. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/HammerIcon/index.tsx +7 -0
  84. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/HandshakeIcon/index.tsx +7 -0
  85. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/MuscleIcon/index.tsx +7 -0
  86. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/NecktieIcon/index.tsx +7 -0
  87. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/NeutralFaceIcon/index.tsx +7 -0
  88. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PalmsUpTogetherIcon/index.tsx +7 -0
  89. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PerformingArtsIcon/index.tsx +7 -0
  90. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PointUpIcon/index.tsx +7 -0
  91. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/SmileyIcon/index.tsx +20 -0
  92. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/SmirkIcon/index.tsx +7 -0
  93. package/src/Presentation/components/UI/svgs/Icons/AIWidgets/WhiteCheckMarkIcon/index.tsx +7 -0
  94. package/src/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/AssistAnswer.svg +3 -0
  95. package/src/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/index.tsx +93 -0
  96. package/src/Presentation/components/UI/svgs/Icons/Actions/Summarize/Summarize.svg +6 -0
  97. package/src/Presentation/components/UI/svgs/Icons/Actions/Summarize/index.tsx +58 -0
  98. package/src/Presentation/components/UI/svgs/Icons/Actions/Tone/Tone.svg +3 -0
  99. package/src/Presentation/components/UI/svgs/Icons/Actions/Tone/index.tsx +34 -0
  100. package/src/Presentation/components/UI/svgs/Icons/Media/Translate/Translate.svg +3 -0
  101. package/src/Presentation/components/UI/svgs/Icons/Media/Translate/index.tsx +35 -0
  102. package/src/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.tsx +110 -36
  103. package/src/Presentation/components/providers/QuickBloxUIKitProvider/QuickBloxUIKitProvider.tsx +7 -6
  104. package/src/QBconfig.ts +33 -3
  105. package/src/index-ui.ts +9 -0
  106. package/src/utils/parse.ts +1 -1
  107. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidget.d.ts +0 -8
  108. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy.d.ts +0 -9
  109. package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultTextInputWidget.d.ts +0 -2
  110. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy.tsx +0 -136
  111. package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultTextInputWidget.tsx +0 -60
  112. /package/dist/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/index.d.ts +0 -0
  113. /package/src/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/Send.svg +0 -0
  114. /package/src/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/index.tsx +0 -0
@@ -8,29 +8,25 @@ import DesktopLayout from './DesktopLayout';
8
8
  import MessagesView from '../../UI/Dialogs/MessagesView/MessagesView';
9
9
  import useDialogsViewModel from '../../../Views/Dialogs/useDialogsViewModel';
10
10
  import { Pagination } from '../../../../Domain/repository/Pagination';
11
- // import { SubscribeToDialogEventsUseCase } from '../../../../Domain/use_cases/SubscribeToDialogEventsUseCase';
12
- // import useEventMessagesRepository from '../../providers/QuickBloxUIKitProvider/useEventMessagesRepository';
13
- // import EventMessageType from '../../../../Domain/entity/EventMessageType';
14
- // import { NotificationTypes } from '../../../../Domain/entity/NotificationTypes';
15
- // import { stringifyError } from '../../../../utils/parse';
16
- // import { DialogEventInfo } from '../../../../Domain/entity/DialogEventInfo';
17
11
  import UiKitTheme from '../../../assets/UiKitTheme';
18
12
  import BaseViewModel from '../../../Views/Base/BaseViewModel';
19
- import { AIWidget } from '../../UI/Dialogs/MessagesView/AIWidgets/AIWidget';
20
- import { QBConfig } from '../../../../QBconfig';
21
- import UseDefaultAIAssistAnswerWidgetWithProxy from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy';
13
+ import { AIMessageWidget } from '../../UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget';
14
+ import UseDefaultAIAssistAnswerWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget';
15
+ import UseDefaultAITranslateWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget';
16
+ import UseDefaultAIRephraseMessageWidget from '../../UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget';
17
+ import { DefaultConfigurations } from '../../../../Data/DefaultConfigurations';
22
18
 
23
19
  type AIWidgetPlaceHolder = {
24
20
  enabled: boolean;
25
21
  default: boolean;
26
- AIWidget?: AIWidget;
22
+ AIWidget?: AIMessageWidget;
27
23
  };
28
24
 
29
25
  type QuickBloxUIKitDesktopLayoutProps = {
30
26
  theme?: UiKitTheme;
31
- AIEditMessage?: AIWidgetPlaceHolder;
32
- AITranslation?: AIWidgetPlaceHolder;
33
- AIAnswerToMessage?: AIWidgetPlaceHolder;
27
+ AIRephrase?: AIWidgetPlaceHolder;
28
+ AITranslate?: AIWidgetPlaceHolder;
29
+ AIAssist?: AIWidgetPlaceHolder;
34
30
  };
35
31
 
36
32
  const QuickBloxUIKitDesktopLayout: React.FC<
@@ -39,16 +35,19 @@ const QuickBloxUIKitDesktopLayout: React.FC<
39
35
  > = ({
40
36
  theme = undefined,
41
37
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
42
- AITranslation = undefined,
38
+ AITranslate = undefined,
43
39
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
- AIEditMessage = undefined,
45
- AIAnswerToMessage = undefined,
40
+ AIRephrase = undefined,
41
+ AIAssist = undefined,
46
42
  }: QuickBloxUIKitDesktopLayoutProps) => {
47
43
  console.log('create QuickBloxUIKitDesktopLayout');
48
44
  const [selectedDialog, setSelectedDialog] =
49
45
  React.useState<BaseViewModel<DialogEntity>>();
50
46
 
51
47
  const currentContext = useQbInitializedDataContext();
48
+ const QBConfig =
49
+ currentContext.InitParams.qbConfig ||
50
+ DefaultConfigurations.getDefaultQBConfig();
52
51
  // const eventMessaging = useEventMessagesRepository();
53
52
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
54
53
  // @ts-ignore
@@ -62,25 +61,20 @@ const QuickBloxUIKitDesktopLayout: React.FC<
62
61
  const dialogsViewModel: DialogsViewModel =
63
62
  useDialogsViewModel(currentContext);
64
63
 
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;
64
+ let defaultAIEditMessageWidget = AIRephrase?.AIWidget; // useDefaultTextInputWidget();
65
+ let defaultAITranslateWidget = AITranslate?.AIWidget;
66
+ let defaultAIAnswerToMessageWidget = AIAssist?.AIWidget;
73
67
 
74
68
  const getAIAssistAnswer = (): void => {
75
- if (AIAnswerToMessage?.enabled && !AIAnswerToMessage?.default) {
76
- defaultAIAnswerToMessageWidget = AIAnswerToMessage.AIWidget;
69
+ if (AIAssist?.enabled && !AIAssist?.default) {
70
+ defaultAIAnswerToMessageWidget = AIAssist.AIWidget;
77
71
  } else if (
78
- AIAnswerToMessage?.enabled ||
72
+ AIAssist?.enabled ||
79
73
  QBConfig.configAIApi.AIAnswerAssistWidgetConfig.useDefault
80
74
  ) {
81
75
  if (
82
76
  !QBConfig.configAIApi.AIAnswerAssistWidgetConfig.useDefault ||
83
- (AIAnswerToMessage && !AIAnswerToMessage?.default)
77
+ (AIAssist && !AIAssist?.default)
84
78
  ) {
85
79
  defaultAIAnswerToMessageWidget = undefined;
86
80
  } else {
@@ -96,15 +90,95 @@ const QuickBloxUIKitDesktopLayout: React.FC<
96
90
  sessionToken ||
97
91
  '';
98
92
  }
99
- defaultAIAnswerToMessageWidget =
100
- UseDefaultAIAssistAnswerWidgetWithProxy({
101
- ...QBConfig.configAIApi.AIAnswerAssistWidgetConfig.proxyConfig,
102
- sessionToken: token,
103
- });
93
+ const proxyConfig: ProxyConfig =
94
+ QBConfig.configAIApi.AIAnswerAssistWidgetConfig.proxyConfig ||
95
+ DefaultConfigurations.getDefaultProxyConfig();
96
+
97
+ defaultAIAnswerToMessageWidget = UseDefaultAIAssistAnswerWidget({
98
+ ...proxyConfig,
99
+ sessionToken: token,
100
+ apiKey,
101
+ });
102
+ }
103
+ }
104
+ };
105
+ const getAITranslate = (): void => {
106
+ if (AITranslate?.enabled && !AITranslate?.default) {
107
+ defaultAITranslateWidget = AITranslate.AIWidget;
108
+ } else if (
109
+ AITranslate?.enabled ||
110
+ QBConfig.configAIApi.AITranslateWidgetConfig.useDefault
111
+ ) {
112
+ if (
113
+ !QBConfig.configAIApi.AITranslateWidgetConfig.useDefault ||
114
+ (AITranslate && !AITranslate?.default)
115
+ ) {
116
+ defaultAITranslateWidget = undefined;
117
+ } else {
118
+ const { apiKey } = QBConfig.configAIApi.AITranslateWidgetConfig;
119
+ let token = '';
120
+
121
+ if (apiKey) {
122
+ token = apiKey;
123
+ } else {
124
+ token =
125
+ QBConfig.configAIApi.AITranslateWidgetConfig.proxyConfig
126
+ .sessionToken ||
127
+ sessionToken ||
128
+ '';
129
+ }
130
+ const proxyConfig: ProxyConfig =
131
+ QBConfig.configAIApi.AITranslateWidgetConfig.proxyConfig ||
132
+ DefaultConfigurations.getDefaultProxyConfig();
133
+
134
+ defaultAITranslateWidget = UseDefaultAITranslateWidget({
135
+ ...proxyConfig,
136
+ sessionToken: token,
137
+ apiKey,
138
+ });
139
+ }
140
+ }
141
+ };
142
+ const getAIRephrase = (): void => {
143
+ if (AIRephrase?.enabled && !AIRephrase?.default) {
144
+ defaultAIEditMessageWidget = AIRephrase.AIWidget;
145
+ } else if (
146
+ AIRephrase?.enabled ||
147
+ QBConfig.configAIApi.AIRephraseWidgetConfig.useDefault
148
+ ) {
149
+ if (
150
+ !QBConfig.configAIApi.AIRephraseWidgetConfig.useDefault ||
151
+ (AIRephrase && !AIRephrase?.default)
152
+ ) {
153
+ defaultAIEditMessageWidget = undefined;
154
+ } else {
155
+ const { apiKey } = QBConfig.configAIApi.AIRephraseWidgetConfig;
156
+ let token = '';
157
+
158
+ if (apiKey) {
159
+ token = apiKey;
160
+ } else {
161
+ token =
162
+ QBConfig.configAIApi.AIRephraseWidgetConfig.proxyConfig
163
+ .sessionToken ||
164
+ sessionToken ||
165
+ '';
166
+ }
167
+ const proxyConfig: ProxyConfig =
168
+ QBConfig.configAIApi.AIRephraseWidgetConfig.proxyConfig ||
169
+ DefaultConfigurations.getDefaultProxyConfig();
170
+
171
+ defaultAIEditMessageWidget = UseDefaultAIRephraseMessageWidget({
172
+ ...proxyConfig,
173
+ sessionToken: token,
174
+ apiKey,
175
+ });
104
176
  }
105
177
  }
106
178
  };
107
179
 
180
+ getAITranslate();
181
+ getAIRephrase();
108
182
  getAIAssistAnswer();
109
183
 
110
184
  const selectDialogActions = (item: BaseViewModel<DialogEntity>): void => {
@@ -269,9 +343,9 @@ const QuickBloxUIKitDesktopLayout: React.FC<
269
343
  maxWidthToResize={
270
344
  selectedDialog && needDialogInformation ? undefined : '1040px'
271
345
  }
272
- AIEditMessage={defaultAIEditMessageWidget}
273
- AITranslation={defaultAITranslateWidget}
274
- AIAnswerToMessage={defaultAIAnswerToMessageWidget}
346
+ AIRephrase={defaultAIEditMessageWidget}
347
+ AITranslate={defaultAITranslateWidget}
348
+ AIAssist={defaultAIAnswerToMessageWidget}
275
349
  theme={theme}
276
350
  /> // 1 Get Messages + 1 Get User by Id
277
351
  ) : (
@@ -10,12 +10,10 @@ import {
10
10
  import DialogsRepository from '../../../../Data/repository/DialogsRepository';
11
11
  import { SyncDialogsUseCase } from '../../../../Domain/use_cases/SyncDialogsUseCase';
12
12
  import { BaseUseCase } from '../../../../Domain/use_cases/base/BaseUseCase';
13
- import { QBConfig } from '../../../../QBconfig';
14
13
  import ConnectionRepository from '../../../../Data/repository/ConnectionRepository';
15
14
  import EventMessagesRepository from '../../../../Data/repository/EventMessagesRepository';
16
15
  import { CallBackFunction } from '../../../../Domain/use_cases/base/IUseCase';
17
-
18
- // import packageInfo from '../../../../../package.json';
16
+ import { DefaultConfigurations } from '../../../../Data/DefaultConfigurations';
19
17
 
20
18
  const initialValues = {
21
19
  LOCAL_DATA_SOURCE: new LocalDataSource(), // localstorage or session storage
@@ -57,7 +55,7 @@ type AccountData = {
57
55
  export type InitParams = {
58
56
  maxFileSize: number;
59
57
  accountData: AccountData;
60
- qbConfig?: QBConfig;
58
+ qbConfig: QBConfig;
61
59
  loginData?: LoginData;
62
60
  };
63
61
 
@@ -106,8 +104,10 @@ const initDataContext: QBDataContextType = {
106
104
  // ),
107
105
  },
108
106
  InitParams: {
109
- accountData: QBConfig.credentials,
110
- maxFileSize: QBConfig.appConfig.maxFileSize,
107
+ accountData: DefaultConfigurations.getDefaultQBConfig().credentials,
108
+ maxFileSize:
109
+ DefaultConfigurations.getDefaultQBConfig().appConfig.maxFileSize,
110
+ qbConfig: DefaultConfigurations.getDefaultQBConfig(),
111
111
  },
112
112
  updateQBInitParams: (InitParams: InitParams) => {
113
113
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
@@ -240,6 +240,7 @@ function QuickBloxUIKitProvider({
240
240
  password: loginData?.password || '',
241
241
  },
242
242
  maxFileSize,
243
+ qbConfig,
243
244
  });
244
245
 
245
246
  console.log('have InitParams useState completed');
package/src/QBconfig.ts CHANGED
@@ -8,12 +8,42 @@ 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: '3011',
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: '3011',
36
+ sessionToken: '',
37
+ },
38
+ },
39
+ AIRephraseWidgetConfig: {
40
+ apiKey: '',
41
+ useDefault: true,
42
+ defaultTone: 'Professional',
43
+ proxyConfig: {
44
+ api: 'v1/chat/completions',
45
+ servername: 'http://localhost',
46
+ port: '3011',
17
47
  sessionToken: '',
18
48
  },
19
49
  },
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
  };
@@ -44,7 +44,7 @@ export function isQBError(error: unknown): error is QBError {
44
44
  return typeof error === 'object' && error !== null && 'message' in error;
45
45
  }
46
46
 
47
- export function stringifyError(error: unknown) {
47
+ export function stringifyError(error: unknown): string {
48
48
  if (typeof error === 'string') return error;
49
49
 
50
50
  if (error && typeof error === 'object') {
@@ -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
- }