1
- import React , { useState , useCallback , memo , useContext } from 'react' ;
1
+ import React , {
2
+ useState ,
3
+ useCallback ,
4
+ memo ,
5
+ useContext ,
6
+ useEffect ,
7
+ } from 'react' ;
2
8
import PropTypes from 'prop-types' ;
3
9
import {
4
10
Box ,
@@ -20,16 +26,18 @@ import FilePreviewHeader from './FilePreviewHeader';
20
26
import { MessageBody as FileBody } from '../Message/MessageBody' ;
21
27
import { FileMetrics } from './FileMetrics' ;
22
28
import { useRCContext } from '../../context/RCInstance' ;
23
- import { useMessageStore } from '../../store' ;
29
+ import { useChannelStore , useMessageStore } from '../../store' ;
24
30
import { fileDisplayStyles as styles } from './Files.styles' ;
25
31
26
- const FileMessage = ( { fileMessage } ) => {
32
+ const FileMessage = ( { fileMessage, onDeleteFile } ) => {
27
33
const { classNames, styleOverrides } = useComponentOverrides ( 'FileMessage' ) ;
28
34
const dispatchToastMessage = useToastBarDispatch ( ) ;
29
35
const { RCInstance } = useRCContext ( ) ;
30
36
const messages = useMessageStore ( ( state ) => state . messages ) ;
31
-
37
+ const [ files , setFiles ] = useState ( [ ] ) ;
32
38
const theme = useTheme ( ) ;
39
+ const isChannelPrivate = useChannelStore ( ( state ) => state . isChannelPrivate ) ;
40
+ const [ isFetching , setIsFetching ] = useState ( true ) ;
33
41
const { mode } = theme ;
34
42
const messageStyles = styles . message ;
35
43
@@ -75,6 +83,19 @@ const FileMessage = ({ fileMessage }) => {
75
83
} ,
76
84
[ messages , RCInstance , dispatchToastMessage ]
77
85
) ;
86
+ useEffect ( ( ) => {
87
+ const fetchAllFiles = async ( ) => {
88
+ const res = await RCInstance . getAllFiles ( isChannelPrivate , '' ) ;
89
+ if ( res ?. files ) {
90
+ const sortedFiles = res . files . sort (
91
+ ( a , b ) => new Date ( b . uploadedAt ) - new Date ( a . uploadedAt )
92
+ ) ;
93
+ setFiles ( sortedFiles ) ;
94
+ setIsFetching ( false ) ;
95
+ }
96
+ } ;
97
+ fetchAllFiles ( ) ;
98
+ } , [ RCInstance , isChannelPrivate , messages , fileToDelete ] ) ;
78
99
79
100
const handleOnClose = ( ) => {
80
101
setFileToDelete ( { } ) ;
@@ -148,6 +169,7 @@ const FileMessage = ({ fileMessage }) => {
148
169
149
170
FileMessage . propTypes = {
150
171
fileMessage : PropTypes . any . isRequired ,
172
+ onDeleteFile : PropTypes . func ,
151
173
} ;
152
174
153
175
export default memo ( FileMessage ) ;
0 commit comments