rohit-chat-widget 1.0.38 → 1.0.41
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/lib/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/lib/components/MessageInput/MessageInput.js +32 -33
- package/lib/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/index.esm.js +31 -32
- package/lib/index.esm.js.map +1 -1
- package/lib/src/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAShD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"MessageInput.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAShD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyPpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState, useRef } from 'react';
|
|
3
3
|
import { useChatInit } from '../../hooks';
|
|
4
4
|
import { useDispatch, useSelector } from 'react-redux';
|
|
5
|
-
import { addNewMessage, updateMessageStatus
|
|
5
|
+
import { addNewMessage, updateMessageStatus } from '@/store/slices/messagesSlice';
|
|
6
6
|
import { v4 as uuidv4 } from 'uuid';
|
|
7
7
|
import styles from './MessageInput.module.scss';
|
|
8
8
|
import { selectThread, selectUserInfo } from '@/store';
|
|
@@ -13,7 +13,7 @@ export const MessageInput = ({ disabled = false, className, onMessageSent }) =>
|
|
|
13
13
|
const [selectedFile, setSelectedFile] = useState(null);
|
|
14
14
|
const [fileError, setFileError] = useState(null);
|
|
15
15
|
const fileInputRef = useRef(null);
|
|
16
|
-
const { sendMessage, isInitialized } = useChatInit();
|
|
16
|
+
const { sendMessage, isInitialized, loadMessages } = useChatInit();
|
|
17
17
|
const dispatch = useDispatch();
|
|
18
18
|
const thread = useSelector(selectThread);
|
|
19
19
|
const userInformation = useSelector(selectUserInfo);
|
|
@@ -66,10 +66,13 @@ export const MessageInput = ({ disabled = false, className, onMessageSent }) =>
|
|
|
66
66
|
// If there's a file, upload it first
|
|
67
67
|
if (selectedFile) {
|
|
68
68
|
const tempFileId = `local-${uuidv4()}`;
|
|
69
|
-
//
|
|
69
|
+
// Show optimistic upload message
|
|
70
70
|
dispatch(addNewMessage({
|
|
71
71
|
id: tempFileId,
|
|
72
|
-
content:
|
|
72
|
+
content: JSON.stringify({
|
|
73
|
+
displayFileName: selectedFile.name,
|
|
74
|
+
azureFileName: null // Will be set after backend upload
|
|
75
|
+
}),
|
|
73
76
|
senderDisplayName: userInformation?.firstName + " " + userInformation?.lastName || 'You',
|
|
74
77
|
senderACSId: thread.acsUserId,
|
|
75
78
|
version: 1,
|
|
@@ -84,40 +87,36 @@ export const MessageInput = ({ disabled = false, className, onMessageSent }) =>
|
|
|
84
87
|
formData.append('acsToken', thread.acsAccessToken);
|
|
85
88
|
const apiConfig = getApiConfig();
|
|
86
89
|
const uploadUrl = `${apiConfig.baseUrl}/chat/send-attachment`;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (!uploadResponse.ok) {
|
|
95
|
-
dispatch(updateMessageStatus({ id: tempFileId, status: 'failed' }));
|
|
96
|
-
throw new Error('File upload failed');
|
|
97
|
-
}
|
|
98
|
-
const uploadResult = await uploadResponse.json();
|
|
99
|
-
console.log('File uploaded successfully:', uploadResult);
|
|
100
|
-
// Backend sends the actual message to ACS, so we update our optimistic message
|
|
101
|
-
const blobUrl = uploadResult.data?.azureFileName || uploadResult.azureFileName;
|
|
102
|
-
console.log('Extracted blob URL:', blobUrl);
|
|
103
|
-
if (blobUrl) {
|
|
104
|
-
const updatedAttachmentContent = JSON.stringify({
|
|
105
|
-
displayFileName: selectedFile.name,
|
|
106
|
-
azureFileName: blobUrl
|
|
90
|
+
try {
|
|
91
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
92
|
+
method: 'POST',
|
|
93
|
+
headers: {
|
|
94
|
+
'api_secret_key': apiConfig.apiKey,
|
|
95
|
+
},
|
|
96
|
+
body: formData,
|
|
107
97
|
});
|
|
108
|
-
|
|
98
|
+
if (!uploadResponse.ok) {
|
|
99
|
+
dispatch(updateMessageStatus({ id: tempFileId, status: 'failed' }));
|
|
100
|
+
throw new Error('File upload failed');
|
|
101
|
+
}
|
|
102
|
+
const uploadResult = await uploadResponse.json();
|
|
103
|
+
console.log('File uploaded successfully:', uploadResult);
|
|
104
|
+
// Mark as sent
|
|
109
105
|
dispatch(updateMessageStatus({ id: tempFileId, status: 'sent', isDoubleTickVisible: true }));
|
|
106
|
+
// Clear the file after successful upload
|
|
107
|
+
setSelectedFile(null);
|
|
108
|
+
if (fileInputRef.current) {
|
|
109
|
+
fileInputRef.current.value = '';
|
|
110
|
+
}
|
|
111
|
+
// Reload messages to fetch the actual message from ACS (which will replace our optimistic one)
|
|
112
|
+
await loadMessages();
|
|
113
|
+
onMessageSent?.(true);
|
|
110
114
|
}
|
|
111
|
-
|
|
112
|
-
console.error('
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.error('File upload error:', error);
|
|
113
117
|
dispatch(updateMessageStatus({ id: tempFileId, status: 'failed' }));
|
|
118
|
+
onMessageSent?.(false);
|
|
114
119
|
}
|
|
115
|
-
// Clear the file after successful upload
|
|
116
|
-
setSelectedFile(null);
|
|
117
|
-
if (fileInputRef.current) {
|
|
118
|
-
fileInputRef.current.value = '';
|
|
119
|
-
}
|
|
120
|
-
onMessageSent?.(true);
|
|
121
120
|
}
|
|
122
121
|
// If there's a text message, send it
|
|
123
122
|
if (message.trim()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageInput.js","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"MessageInput.js","sourceRoot":"","sources":["../../../src/components/MessageInput/MessageInput.tsx"],"names":[],"mappings":"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"}
|
package/lib/index.esm.js
CHANGED
|
@@ -20743,7 +20743,7 @@ const MessageInput = ({ disabled = false, className, onMessageSent }) => {
|
|
|
20743
20743
|
const [selectedFile, setSelectedFile] = useState(null);
|
|
20744
20744
|
const [fileError, setFileError] = useState(null);
|
|
20745
20745
|
const fileInputRef = useRef(null);
|
|
20746
|
-
const { sendMessage, isInitialized } = useChatInit();
|
|
20746
|
+
const { sendMessage, isInitialized, loadMessages } = useChatInit();
|
|
20747
20747
|
const dispatch = useDispatch();
|
|
20748
20748
|
const thread = useSelector(selectThread);
|
|
20749
20749
|
const userInformation = useSelector(selectUserInfo);
|
|
@@ -20796,10 +20796,13 @@ const MessageInput = ({ disabled = false, className, onMessageSent }) => {
|
|
|
20796
20796
|
// If there's a file, upload it first
|
|
20797
20797
|
if (selectedFile) {
|
|
20798
20798
|
const tempFileId = `local-${v4()}`;
|
|
20799
|
-
//
|
|
20799
|
+
// Show optimistic upload message
|
|
20800
20800
|
dispatch(addNewMessage({
|
|
20801
20801
|
id: tempFileId,
|
|
20802
|
-
content:
|
|
20802
|
+
content: JSON.stringify({
|
|
20803
|
+
displayFileName: selectedFile.name,
|
|
20804
|
+
azureFileName: null // Will be set after backend upload
|
|
20805
|
+
}),
|
|
20803
20806
|
senderDisplayName: userInformation?.firstName + " " + userInformation?.lastName || 'You',
|
|
20804
20807
|
senderACSId: thread.acsUserId,
|
|
20805
20808
|
version: 1,
|
|
@@ -20814,40 +20817,36 @@ const MessageInput = ({ disabled = false, className, onMessageSent }) => {
|
|
|
20814
20817
|
formData.append('acsToken', thread.acsAccessToken);
|
|
20815
20818
|
const apiConfig = getApiConfig();
|
|
20816
20819
|
const uploadUrl = `${apiConfig.baseUrl}/chat/send-attachment`;
|
|
20817
|
-
|
|
20818
|
-
|
|
20819
|
-
|
|
20820
|
-
|
|
20821
|
-
|
|
20822
|
-
|
|
20823
|
-
|
|
20824
|
-
if (!uploadResponse.ok) {
|
|
20825
|
-
dispatch(updateMessageStatus({ id: tempFileId, status: 'failed' }));
|
|
20826
|
-
throw new Error('File upload failed');
|
|
20827
|
-
}
|
|
20828
|
-
const uploadResult = await uploadResponse.json();
|
|
20829
|
-
console.log('File uploaded successfully:', uploadResult);
|
|
20830
|
-
// Backend sends the actual message to ACS, so we update our optimistic message
|
|
20831
|
-
const blobUrl = uploadResult.data?.azureFileName || uploadResult.azureFileName;
|
|
20832
|
-
console.log('Extracted blob URL:', blobUrl);
|
|
20833
|
-
if (blobUrl) {
|
|
20834
|
-
const updatedAttachmentContent = JSON.stringify({
|
|
20835
|
-
displayFileName: selectedFile.name,
|
|
20836
|
-
azureFileName: blobUrl
|
|
20820
|
+
try {
|
|
20821
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
20822
|
+
method: 'POST',
|
|
20823
|
+
headers: {
|
|
20824
|
+
'api_secret_key': apiConfig.apiKey,
|
|
20825
|
+
},
|
|
20826
|
+
body: formData,
|
|
20837
20827
|
});
|
|
20838
|
-
|
|
20828
|
+
if (!uploadResponse.ok) {
|
|
20829
|
+
dispatch(updateMessageStatus({ id: tempFileId, status: 'failed' }));
|
|
20830
|
+
throw new Error('File upload failed');
|
|
20831
|
+
}
|
|
20832
|
+
const uploadResult = await uploadResponse.json();
|
|
20833
|
+
console.log('File uploaded successfully:', uploadResult);
|
|
20834
|
+
// Mark as sent
|
|
20839
20835
|
dispatch(updateMessageStatus({ id: tempFileId, status: 'sent', isDoubleTickVisible: true }));
|
|
20836
|
+
// Clear the file after successful upload
|
|
20837
|
+
setSelectedFile(null);
|
|
20838
|
+
if (fileInputRef.current) {
|
|
20839
|
+
fileInputRef.current.value = '';
|
|
20840
|
+
}
|
|
20841
|
+
// Reload messages to fetch the actual message from ACS (which will replace our optimistic one)
|
|
20842
|
+
await loadMessages();
|
|
20843
|
+
onMessageSent?.(true);
|
|
20840
20844
|
}
|
|
20841
|
-
|
|
20842
|
-
console.error('
|
|
20845
|
+
catch (error) {
|
|
20846
|
+
console.error('File upload error:', error);
|
|
20843
20847
|
dispatch(updateMessageStatus({ id: tempFileId, status: 'failed' }));
|
|
20848
|
+
onMessageSent?.(false);
|
|
20844
20849
|
}
|
|
20845
|
-
// Clear the file after successful upload
|
|
20846
|
-
setSelectedFile(null);
|
|
20847
|
-
if (fileInputRef.current) {
|
|
20848
|
-
fileInputRef.current.value = '';
|
|
20849
|
-
}
|
|
20850
|
-
onMessageSent?.(true);
|
|
20851
20850
|
}
|
|
20852
20851
|
// If there's a text message, send it
|
|
20853
20852
|
if (message.trim()) {
|