diff --git a/packages/react/src/views/FileMessage/FileMessage.js b/packages/react/src/views/FileMessage/FileMessage.js
index 1ae977a0ef..58e5088caa 100644
--- a/packages/react/src/views/FileMessage/FileMessage.js
+++ b/packages/react/src/views/FileMessage/FileMessage.js
@@ -21,6 +21,7 @@ import {
} from '@embeddedchat/ui-elements';
import FilePreviewContainer from './FilePreviewContainer';
import FileBodyContainer from '../Message/MessageBodyContainer';
+import ImageGallery from '../ImageGallery/ImageGallery';
import FilePreviewHeader from './FilePreviewHeader';
import { MessageBody as FileBody } from '../Message/MessageBody';
@@ -34,6 +35,7 @@ const FileMessage = ({ fileMessage, onDeleteFile }) => {
const dispatchToastMessage = useToastBarDispatch();
const { RCInstance } = useRCContext();
const messages = useMessageStore((state) => state.messages);
+ const [showGallery, setShowGallery] = useState(false);
const [files, setFiles] = useState([]);
const theme = useTheme();
const isChannelPrivate = useChannelStore((state) => state.isChannelPrivate);
@@ -61,6 +63,11 @@ const FileMessage = ({ fileMessage, onDeleteFile }) => {
document.body.removeChild(anchor);
}, []);
+ const extractIdFromUrl = (url) => {
+ const match = url.match(/\/file-upload\/(.*?)\//);
+ return match ? match[1] : null;
+ };
+
const deleteFile = useCallback(
async (file) => {
messages.forEach(async (message) => {
@@ -101,12 +108,23 @@ const FileMessage = ({ fileMessage, onDeleteFile }) => {
setFileToDelete({});
};
+ const handleFileClick = (file) => {
+ if (file.typeGroup === 'image') {
+ setShowGallery(true);
+ } else {
+ downloadFile(file.url, file.title);
+ }
+ };
+
return (
<>
{
+ handleFileClick(fileMessage);
+ }}
>
@@ -119,7 +137,9 @@ const FileMessage = ({ fileMessage, onDeleteFile }) => {
+ {showGallery && (
+
+ )}
+
{fileToDelete && Object.keys(fileToDelete).length > 0 && (