Skip to content

Commit 0bfe159

Browse files
authored
ref(UploadModal): simplify the use of Dialog (#948)
1 parent e89670d commit 0bfe159

3 files changed

Lines changed: 11 additions & 45 deletions

File tree

web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
"flexsearch": "0.7.43",
6161
"i18nifty": "^3.2.5",
6262
"json5": "2.2.3",
63-
"keycloakify": "^11.8.17",
63+
"keycloakify": "^11.8.19",
6464
"memoizee": "^0.4.17",
6565
"minimal-polyfills": "^2.2.3",
6666
"mui-icons-material-lazy": "^1.0.4",

web/src/ui/pages/myFiles/Explorer/ExplorerUploadModal/ExplorerUploadModal.tsx

Lines changed: 6 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, memo } from "react";
1+
import { memo } from "react";
22
import { useTranslation } from "ui/i18n";
33
import { tss } from "tss";
44
import { ExplorerUploadModalDropArea } from "./ExplorerUploadModalDropArea";
@@ -7,10 +7,7 @@ import { ExplorerUploadProgress } from "./ExplorerUploadProgress";
77
import { Dialog } from "onyxia-ui/Dialog";
88
import { Button } from "onyxia-ui/Button";
99
import { 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+
1411
import { declareComponentKeys } from "i18nifty";
1512

1613
export 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

9059
const { 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}

web/yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5224,10 +5224,10 @@ jsonify@^0.0.1:
52245224
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
52255225
integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
52265226

5227-
keycloakify@^11.8.17:
5228-
version "11.8.17"
5229-
resolved "https://registry.yarnpkg.com/keycloakify/-/keycloakify-11.8.17.tgz#9e4fda7959ab2cfad1c388e54a5d9df5e6056e0f"
5230-
integrity sha512-4VaQADY77wyiu1YeDnJMoH0QQsYZUFJ58wa7vCw6QkB8Ktgp3NAIWver5/cNSB2VYXHoeWXe3Wa13dzqqdKSWg==
5227+
keycloakify@^11.8.19:
5228+
version "11.8.19"
5229+
resolved "https://registry.yarnpkg.com/keycloakify/-/keycloakify-11.8.19.tgz#1d7d7961ebdc3c56e2d0600b997c9336dcfcf7aa"
5230+
integrity sha512-a698r7KvAGycJGfs07cIs8W+jFJZfKj2ze/cJgYAzXwbFAZ1ST0WneoECfXz6Dxqwi1bg/9R3WG8p59IRufNBw==
52315231
dependencies:
52325232
tsafe "^1.8.5"
52335233

0 commit comments

Comments
 (0)