1- import { useEffect , memo } from "react" ;
1+ import { memo } from "react" ;
22import { useTranslation } from "ui/i18n" ;
33import { tss } from "tss" ;
44import { ExplorerUploadModalDropArea } from "./ExplorerUploadModalDropArea" ;
@@ -7,10 +7,7 @@ import { ExplorerUploadProgress } from "./ExplorerUploadProgress";
77import { Dialog } from "onyxia-ui/Dialog" ;
88import { Button } from "onyxia-ui/Button" ;
99import { useArrayDiff } from "powerhooks/useArrayDiff" ;
10- import type { StatefulReadonlyEvt } from "evt" ;
11- import { useRerenderOnStateChange } from "evt/hooks/useRerenderOnStateChange" ;
12- import { useConst } from "powerhooks/useConst" ;
13- import { Evt } from "evt" ;
10+
1411import { declareComponentKeys } from "i18nifty" ;
1512
1613export type ExplorerUploadModalProps = {
@@ -37,34 +34,6 @@ export const ExplorerUploadModal = memo((props: ExplorerUploadModalProps) => {
3734 }
3835 } ) ;
3936
40- const evtFilesBeingUploaded = useConst ( ( ) => Evt . create ( filesBeingUploaded ) ) ;
41-
42- useEffect ( ( ) => {
43- evtFilesBeingUploaded . state = filesBeingUploaded ;
44- } , [ filesBeingUploaded ] ) ;
45-
46- return (
47- < DialogWrapper
48- isOpen = { isOpen }
49- onClose = { onClose }
50- evtFilesBeingUploaded = { evtFilesBeingUploaded }
51- onFileSelected = { onFileSelected }
52- />
53- ) ;
54- } ) ;
55-
56- type DialogWrapperProps = Omit < ExplorerUploadModalProps , "filesBeingUploaded" > & {
57- evtFilesBeingUploaded : StatefulReadonlyEvt <
58- ExplorerUploadModalProps [ "filesBeingUploaded" ]
59- > ;
60- } ;
61-
62- //NOTE: Dialog can't re-render the Dialog without unmounting and recreating body and button.
63- // we use a stateful evt that is a constant so that this wrapper component doesn't re render
64- // wen filesBeingUploaded changes.
65- const DialogWrapper = memo ( ( props : DialogWrapperProps ) => {
66- const { evtFilesBeingUploaded, isOpen, onClose, onFileSelected } = props ;
67-
6837 const { t } = useTranslation ( { ExplorerUploadModal } ) ;
6938
7039 return (
@@ -74,7 +43,7 @@ const DialogWrapper = memo((props: DialogWrapperProps) => {
7443 title = { t ( "import files" ) }
7544 body = {
7645 < ExplorerUploadModalBody
77- evtFilesBeingUploaded = { evtFilesBeingUploaded }
46+ filesBeingUploaded = { filesBeingUploaded }
7847 onFileSelected = { onFileSelected }
7948 />
8049 }
@@ -88,20 +57,17 @@ const DialogWrapper = memo((props: DialogWrapperProps) => {
8857} ) ;
8958
9059const { ExplorerUploadModalBody } = ( ( ) => {
91- type Props = Pick < DialogWrapperProps , "evtFilesBeingUploaded" > &
92- Pick < ExplorerUploadModalProps , "onFileSelected" > ;
60+ type Props = Pick < ExplorerUploadModalProps , "onFileSelected" | "filesBeingUploaded" > ;
9361
9462 const ExplorerUploadModalBody = memo ( ( props : Props ) => {
95- const { onFileSelected, evtFilesBeingUploaded } = props ;
63+ const { onFileSelected, filesBeingUploaded } = props ;
9664
9765 const { classes } = useStyles ( ) ;
9866
99- useRerenderOnStateChange ( evtFilesBeingUploaded ) ;
100-
10167 return (
10268 < div className = { classes . root } >
10369 < ExplorerUploadModalDropArea onFileSelected = { onFileSelected } />
104- { evtFilesBeingUploaded . state . map (
70+ { filesBeingUploaded . map (
10571 ( { directoryPath, basename, size, uploadPercent } ) => (
10672 < ExplorerUploadProgress
10773 className = { classes . progress }
0 commit comments