Skip to content

Commit c8be820

Browse files
feat: enable navigation from files list to corresponding messages in chat body
1 parent 4d80839 commit c8be820

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

packages/react/src/views/FileMessage/FileMessage.js

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ import FilePreviewHeader from './FilePreviewHeader';
1717
import { MessageBody as FileBody } from '../Message/MessageBody';
1818
import { FileMetrics } from './FileMetrics';
1919
import { useRCContext } from '../../context/RCInstance';
20-
import { useMessageStore } from '../../store';
20+
import { useMessageStore, useSidebarStore } from '../../store';
2121
import { fileDisplayStyles as styles } from './Files.styles';
2222

2323
const FileMessage = ({ fileMessage }) => {
2424
const { classNames, styleOverrides } = useComponentOverrides('FileMessage');
2525
const dispatchToastMessage = useToastBarDispatch();
2626
const { RCInstance } = useRCContext();
2727
const messages = useMessageStore((state) => state.messages);
28+
const setShowSidebar = useSidebarStore((state) => state.setShowSidebar);
2829

2930
const [fileToDelete, setFileToDelete] = useState({});
3031

@@ -37,6 +38,23 @@ const FileMessage = ({ fileMessage }) => {
3738
document.body.removeChild(anchor);
3839
}, []);
3940

41+
const navigateToFile = (id) => {
42+
const message = messages.find((msg) => msg?.file?._id === id);
43+
if (message) {
44+
const element = document.getElementById(`ec-message-body-${message._id}`);
45+
if (element) {
46+
element.style.backgroundColor = '#ffeb3b';
47+
element.scrollIntoView({ behavior: 'smooth', block: 'center' });
48+
setShowSidebar(false);
49+
50+
setTimeout(() => {
51+
element.style.backgroundColor = '';
52+
element.style.transition = 'background-color 0.5s ease-out';
53+
}, 2000);
54+
}
55+
}
56+
};
57+
4058
const deleteFile = useCallback(
4159
async (file) => {
4260
messages.forEach(async (message) => {
@@ -92,10 +110,16 @@ const FileMessage = ({ fileMessage }) => {
92110
},
93111
{
94112
id: 'delete',
95-
action: () => setFileToDelete(fileMessage),
113+
action: () => setFileToDelete(fileMessage._id),
96114
label: 'Delete',
97115
icon: 'trash',
98116
},
117+
{
118+
id: 'navigate',
119+
action: () => navigateToFile(fileMessage._id),
120+
label: 'Navigate',
121+
icon: 'arrow-back',
122+
},
99123
]}
100124
/>
101125
</Box>

0 commit comments

Comments
 (0)