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.
- package/dist/CommonTypes/FunctionResult.d.ts +47 -0
- package/dist/Data/DefaultConfigurations.d.ts +7 -0
- package/dist/Data/Stubs.d.ts +1 -1
- package/dist/Data/source/AISource.d.ts +13 -0
- package/dist/Domain/entity/MessageEntity.d.ts +1 -1
- package/dist/Presentation/Views/Base/BaseViewModel.d.ts +10 -6
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIMessageWidget.d.ts +16 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.d.ts +14 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/SliderMenu.d.ts +23 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.d.ts +15 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.d.ts +10 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.d.ts +10 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.d.ts +10 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/useDefaultVoiceInputWidget.d.ts +2 -2
- package/dist/Presentation/components/UI/Dialogs/MessagesView/ContextMenu.d.ts +2 -1
- package/dist/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.d.ts +26 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.d.ts +11 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.d.ts +3 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.d.ts +15 -0
- package/dist/Presentation/components/UI/Dialogs/MessagesView/MessagesView.d.ts +5 -5
- package/dist/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.d.ts +9 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/BookIcon/BookIcon.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/HammerIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/HandshakeIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/MuscleIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/NecktieIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/NeutralFaceIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PalmsUpTogetherIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PerformingArtsIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/PointUpIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/SmileyIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/SmirkIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/AIWidgets/WhiteCheckMarkIcon/index.d.ts +3 -0
- package/dist/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/index.d.ts +4 -0
- package/dist/Presentation/components/UI/svgs/Icons/Actions/Summarize/index.d.ts +4 -0
- package/dist/Presentation/components/UI/svgs/Icons/Actions/Tone/index.d.ts +4 -0
- package/dist/Presentation/components/UI/svgs/Icons/Media/Translate/index.d.ts +4 -0
- package/dist/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.d.ts +5 -5
- package/dist/Presentation/components/providers/QuickBloxUIKitProvider/QuickBloxUIKitProvider.d.ts +1 -1
- package/dist/QBconfig.d.ts +23 -0
- package/dist/index-ui.d.ts +5 -1
- package/dist/index-ui.js +361 -42
- package/global.d.ts +48 -6
- package/package.json +1 -1
- package/src/App.tsx +20 -14
- package/src/CommonTypes/FunctionResult.ts +54 -0
- package/src/Data/DefaultConfigurations.ts +197 -0
- package/src/Data/Stubs.ts +15 -15
- package/src/Data/mapper/MessageLocalDTOMapper.ts +3 -2
- package/src/Data/mapper/MessageRemoteDTOMapper.ts +3 -2
- package/src/Data/source/AISource.ts +133 -0
- package/src/Data/source/remote/Mapper/MessageDTOMapper.ts +3 -3
- package/src/Domain/entity/MessageEntity.ts +1 -1
- package/src/Presentation/Views/Base/BaseViewModel.ts +9 -4
- package/src/Presentation/Views/Dialogs/Dialogs.tsx +37 -21
- package/src/Presentation/components/UI/Dialogs/HeaderDialogs/HeaderDialogs.scss +2 -2
- package/src/Presentation/components/UI/Dialogs/HeaderDialogs/HeaderDialogs.tsx +5 -5
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/{AIWidget.ts → AIMessageWidget.ts} +14 -3
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.scss +55 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidgetActions/AIWidgetActions.tsx +116 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/SliderMenu.tsx +172 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/Tone.ts +21 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidget.tsx +99 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIRephraseMessageWidget.tsx +105 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAITranslateWidget.tsx +106 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/useDefaultVoiceInputWidget.tsx +7 -6
- package/src/Presentation/components/UI/Dialogs/MessagesView/ContextMenu.tsx +5 -6
- package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.scss +84 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/DropDownMenu.tsx +105 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.scss +50 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/DropDownMenu/ItemDropDownMenu/ItemDropDownMenu.tsx +43 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/HeaderMessages/HeaderMessages.tsx +14 -11
- package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.scss +39 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/AvatarContentIncomingUser/AvatarContentIncomingUser.tsx +26 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.scss +394 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/InComingMessage/InComingMessage.tsx +747 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.scss +88 -4
- package/src/Presentation/components/UI/Dialogs/MessagesView/MessagesView.tsx +589 -246
- package/src/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.scss +7 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/OutGoingMessage/OutGoingMessage.tsx +99 -0
- package/src/Presentation/components/UI/Dialogs/MessagesView/useMessagesViewModel.ts +7 -5
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/BookIcon/BookIcon.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/HammerIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/HandshakeIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/MuscleIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/NecktieIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/NeutralFaceIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PalmsUpTogetherIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PerformingArtsIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/PointUpIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/SmileyIcon/index.tsx +20 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/SmirkIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/AIWidgets/WhiteCheckMarkIcon/index.tsx +7 -0
- package/src/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/AssistAnswer.svg +3 -0
- package/src/Presentation/components/UI/svgs/Icons/Actions/AssistAnswer/index.tsx +93 -0
- package/src/Presentation/components/UI/svgs/Icons/Actions/Summarize/Summarize.svg +6 -0
- package/src/Presentation/components/UI/svgs/Icons/Actions/Summarize/index.tsx +58 -0
- package/src/Presentation/components/UI/svgs/Icons/Actions/Tone/Tone.svg +3 -0
- package/src/Presentation/components/UI/svgs/Icons/Actions/Tone/index.tsx +34 -0
- package/src/Presentation/components/UI/svgs/Icons/Media/Translate/Translate.svg +3 -0
- package/src/Presentation/components/UI/svgs/Icons/Media/Translate/index.tsx +35 -0
- package/src/Presentation/components/layouts/Desktop/QuickBloxUIKitDesktopLayout.tsx +110 -36
- package/src/Presentation/components/providers/QuickBloxUIKitProvider/QuickBloxUIKitProvider.tsx +7 -6
- package/src/QBconfig.ts +33 -3
- package/src/index-ui.ts +9 -0
- package/src/utils/parse.ts +1 -1
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/AIWidget.d.ts +0 -8
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy.d.ts +0 -9
- package/dist/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultTextInputWidget.d.ts +0 -2
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultAIAssistAnswerWidgetWithProxy.tsx +0 -136
- package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultTextInputWidget.tsx +0 -60
- /package/dist/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/index.d.ts +0 -0
- /package/src/Presentation/components/UI/svgs/Icons/{Media → AIWidgets}/AIWidget/Send.svg +0 -0
- /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 {
|
|
20
|
-
import
|
|
21
|
-
import
|
|
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?:
|
|
22
|
+
AIWidget?: AIMessageWidget;
|
|
27
23
|
};
|
|
28
24
|
|
|
29
25
|
type QuickBloxUIKitDesktopLayoutProps = {
|
|
30
26
|
theme?: UiKitTheme;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
38
|
+
AITranslate = undefined,
|
|
43
39
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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 (
|
|
76
|
-
defaultAIAnswerToMessageWidget =
|
|
69
|
+
if (AIAssist?.enabled && !AIAssist?.default) {
|
|
70
|
+
defaultAIAnswerToMessageWidget = AIAssist.AIWidget;
|
|
77
71
|
} else if (
|
|
78
|
-
|
|
72
|
+
AIAssist?.enabled ||
|
|
79
73
|
QBConfig.configAIApi.AIAnswerAssistWidgetConfig.useDefault
|
|
80
74
|
) {
|
|
81
75
|
if (
|
|
82
76
|
!QBConfig.configAIApi.AIAnswerAssistWidgetConfig.useDefault ||
|
|
83
|
-
(
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
) : (
|
package/src/Presentation/components/providers/QuickBloxUIKitProvider/QuickBloxUIKitProvider.tsx
CHANGED
|
@@ -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
|
|
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:
|
|
110
|
-
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: '',
|
|
11
|
+
apiKey: '',
|
|
12
12
|
useDefault: true,
|
|
13
13
|
proxyConfig: {
|
|
14
14
|
api: 'v1/chat/completions',
|
|
15
|
-
servername: '
|
|
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
|
};
|
package/src/utils/parse.ts
CHANGED
|
@@ -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,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
|
-
}
|
package/src/Presentation/components/UI/Dialogs/MessagesView/AIWidgets/UseDefaultTextInputWidget.tsx
DELETED
|
@@ -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
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|