diff --git a/web/apps/photos/src/components/Collections/CollectionShare.tsx b/web/apps/photos/src/components/Collections/CollectionShare.tsx index 7a24b30034..6f17ace58e 100644 --- a/web/apps/photos/src/components/Collections/CollectionShare.tsx +++ b/web/apps/photos/src/components/Collections/CollectionShare.tsx @@ -86,7 +86,7 @@ export const CollectionShare: React.FC = ({ props.onClose(); }; const handleDrawerClose: DialogProps["onClose"] = (_, reason) => { - if (reason === "backdropClick") { + if (reason == "backdropClick") { handleRootClose(); } else { props.onClose(); @@ -539,7 +539,7 @@ const AddParticipant: React.FC = ({ }; const handleDrawerClose: DialogProps["onClose"] = (_, reason) => { - if (reason === "backdropClick") { + if (reason == "backdropClick") { handleRootClose(); } else { onClose(); @@ -853,7 +853,7 @@ const ManageEmailShare: React.FC = ({ onRootClose(); }; const handleDrawerClose: DialogProps["onClose"] = (_, reason) => { - if (reason === "backdropClick") { + if (reason == "backdropClick") { handleRootClose(); } else { onClose(); @@ -1037,7 +1037,7 @@ const ManageParticipant: React.FC = ({ const galleryContext = useContext(GalleryContext); const handleDrawerClose: DialogProps["onClose"] = (_, reason) => { - if (reason === "backdropClick") { + if (reason == "backdropClick") { onRootClose(); } else { onClose(); @@ -1356,7 +1356,7 @@ const ManagePublicShareOptions: React.FC = ({ publicShareUrl, }) => { const handleDrawerClose: DialogProps["onClose"] = (_, reason) => { - if (reason === "backdropClick") { + if (reason == "backdropClick") { onRootClose(); } else { onClose(); @@ -1552,7 +1552,7 @@ const ManageLinkExpiry: React.FC = ({ }; const handleDrawerClose: DialogProps["onClose"] = (_, reason) => { - if (reason === "backdropClick") { + if (reason == "backdropClick") { onRootClose(); } else { closeShareExpiryOptionsModalView(); @@ -1684,7 +1684,7 @@ const ManageDeviceLimit: React.FC = ({ }; const handleDrawerClose: DialogProps["onClose"] = (_, reason) => { - if (reason === "backdropClick") { + if (reason == "backdropClick") { onRootClose(); } else { closeDeviceLimitChangeModal(); @@ -1897,7 +1897,7 @@ function PublicLinkSetPassword({ fullWidth > - + {t("password_lock")} void; +type ExportProps = ModalVisibilityProps & { collectionNameMap: Map; -} +}; -export default function ExportModal(props: ExportModalProps) { +export const Export: React.FC = ({ + open, + onClose, + collectionNameMap, +}) => { const { showMiniDialog } = useAppContext(); const [exportStage, setExportStage] = useState(ExportStage.INIT); const [exportFolder, setExportFolder] = useState(""); @@ -79,11 +83,11 @@ export default function ExportModal(props: ExportModalProps) { }, []); useEffect(() => { - if (!props.show) { + if (!open) { return; } void syncExportRecord(exportFolder); - }, [props.show]); + }, [open]); // ====================== // HELPER FUNCTIONS @@ -166,15 +170,14 @@ export default function ExportModal(props: ExportModalProps) { }; return ( - - - {t("export_data")} - + + + + {t("export_data")} + + + + ); -} +}; function ExportDirectory({ exportFolder, changeExportDirectory, exportStage }) { return ( diff --git a/web/apps/photos/src/components/FixCreationTime.tsx b/web/apps/photos/src/components/FixCreationTime.tsx index 00741a901b..91ea1ecb90 100644 --- a/web/apps/photos/src/components/FixCreationTime.tsx +++ b/web/apps/photos/src/components/FixCreationTime.tsx @@ -84,10 +84,11 @@ export const FixCreationTime: React.FC = ({ onClose(); }} > - {title} + {title} = ({ step, onSubmit, onClose }) => style={{ width: "100%", display: "flex", - marginTop: "30px", + marginTop: "24px", justifyContent: "space-around", }} > diff --git a/web/apps/photos/src/components/Sidebar/index.tsx b/web/apps/photos/src/components/Sidebar/index.tsx index 6a2694e826..65585b53dc 100644 --- a/web/apps/photos/src/components/Sidebar/index.tsx +++ b/web/apps/photos/src/components/Sidebar/index.tsx @@ -3,6 +3,7 @@ import { openAccountsManagePasskeysPage } from "@/accounts/services/passkey"; import { isDesktop } from "@/base/app"; import { EnteLogo } from "@/base/components/EnteLogo"; import { ActivityIndicator } from "@/base/components/mui/ActivityIndicator"; +import { SpaceBetweenFlex } from "@/base/components/mui/Container"; import { SidebarDrawer } from "@/base/components/mui/SidebarDrawer"; import { useModalVisibility } from "@/base/components/utils/modal"; import { useIsSmallWidth } from "@/base/hooks"; @@ -10,6 +11,7 @@ import log from "@/base/log"; import { savedLogs } from "@/base/log-web"; import { customAPIHost } from "@/base/origins"; import { downloadString } from "@/base/utils/web"; +import { DialogCloseIconButton } from "@/new/photos/components/mui/Dialog"; import { TwoFactorSettings } from "@/new/photos/components/sidebar/TwoFactorSettings"; import { downloadAppDialogAttributes } from "@/new/photos/components/utils/download"; import { useUserDetailsSnapshot } from "@/new/photos/components/utils/use-snapshot"; @@ -41,11 +43,9 @@ import { AppContext, useAppContext } from "@/new/photos/types/context"; import { initiateEmail, openURL } from "@/new/photos/utils/web"; import { FlexWrapper, - SpaceBetweenFlex, VerticallyCentered, } from "@ente/shared/components/Container"; import { EnteMenuItem } from "@ente/shared/components/Menu/EnteMenuItem"; -import DialogTitleWithCloseButton from "@ente/shared/components/TitleWithCloseButton"; import { PHOTOS_PAGES as PAGES } from "@ente/shared/constants/pages"; import { THEME_COLOR } from "@ente/shared/themes/constants"; import ArchiveOutlined from "@mui/icons-material/ArchiveOutlined"; @@ -136,10 +136,12 @@ interface HeaderSectionProps { const HeaderSection: React.FC = ({ closeSidebar }) => { return ( - + @@ -344,12 +346,17 @@ function MemberSubscriptionManage({ open, userDetails, onClose }) { return ( - - - {t("subscription")} - - {t("family_plan")} - + + + + {t("subscription")} + + + {t("family_plan")} + + + + diff --git a/web/apps/photos/src/components/Upload/UploadProgress/context.tsx b/web/apps/photos/src/components/Upload/UploadProgress/context.tsx index 1c98569b03..dce32b9a52 100644 --- a/web/apps/photos/src/components/Upload/UploadProgress/context.tsx +++ b/web/apps/photos/src/components/Upload/UploadProgress/context.tsx @@ -1,4 +1,4 @@ -import { UPLOAD_STAGES } from "@/new/photos/services/upload/types"; +import { type UploadPhase } from "@/new/photos/services/upload/types"; import { createContext } from "react"; import type { InProgressUpload, @@ -11,7 +11,7 @@ interface UploadProgressContextType { open: boolean; onClose: () => void; uploadCounter: UploadCounter; - uploadStage: UPLOAD_STAGES; + uploadPhase: UploadPhase; percentComplete: number; retryFailed: () => void; inProgressUploads: InProgressUpload[]; @@ -25,7 +25,7 @@ const defaultUploadProgressContext: UploadProgressContextType = { open: null, onClose: () => null, uploadCounter: null, - uploadStage: null, + uploadPhase: undefined, percentComplete: null, retryFailed: () => null, inProgressUploads: null, diff --git a/web/apps/photos/src/components/Upload/UploadProgress/dialog.tsx b/web/apps/photos/src/components/Upload/UploadProgress/dialog.tsx index d5eefda233..5971a570c1 100644 --- a/web/apps/photos/src/components/Upload/UploadProgress/dialog.tsx +++ b/web/apps/photos/src/components/Upload/UploadProgress/dialog.tsx @@ -1,9 +1,5 @@ -import { - UPLOAD_RESULT, - UPLOAD_STAGES, -} from "@/new/photos/services/upload/types"; -import { dialogCloseHandler } from "@ente/shared/components/TitleWithCloseButton"; -import { Dialog, DialogContent } from "@mui/material"; +import { UPLOAD_RESULT } from "@/new/photos/services/upload/types"; +import { Dialog, DialogContent, type DialogProps } from "@mui/material"; import { t } from "i18next"; import { useContext, useEffect, useState } from "react"; import { Trans } from "react-i18next"; @@ -15,7 +11,7 @@ import { ResultSection } from "./resultSection"; import { NotUploadSectionHeader } from "./styledComponents"; export function UploadProgressDialog() { - const { open, onClose, uploadStage, finishedUploads } = useContext( + const { open, onClose, uploadPhase, finishedUploads } = useContext( UploadProgressContext, ); @@ -37,90 +33,73 @@ export function UploadProgressDialog() { } }, [finishedUploads]); - const handleClose = dialogCloseHandler({ staticBackdrop: true, onClose }); + const handleClose: DialogProps["onClose"] = (_, reason) => { + if (reason != "backdropClick") onClose(); + }; return ( - {(uploadStage === UPLOAD_STAGES.UPLOADING || - uploadStage === UPLOAD_STAGES.FINISH || - uploadStage === UPLOAD_STAGES.EXTRACTING_METADATA) && ( + {(uploadPhase == "uploading" || uploadPhase == "done") && ( - {(uploadStage === UPLOAD_STAGES.UPLOADING || - uploadStage === UPLOAD_STAGES.EXTRACTING_METADATA) && ( - - )} - {(uploadStage === UPLOAD_STAGES.UPLOADING || - uploadStage === UPLOAD_STAGES.FINISH) && ( - <> - - - {uploadStage === UPLOAD_STAGES.FINISH && - hasUnUploadedFiles && ( - - {t("FILE_NOT_UPLOADED_LIST")} - - )} - - } - /> - - - - - - + {uploadPhase === "uploading" && } + + + {uploadPhase == "done" && hasUnUploadedFiles && ( + + {t("FILE_NOT_UPLOADED_LIST")} + )} + } + /> + + + + + )} - {uploadStage === UPLOAD_STAGES.FINISH && } + {uploadPhase == "done" && } ); } diff --git a/web/apps/photos/src/components/Upload/UploadProgress/footer.tsx b/web/apps/photos/src/components/Upload/UploadProgress/footer.tsx index 38810a887c..72b8fa561c 100644 --- a/web/apps/photos/src/components/Upload/UploadProgress/footer.tsx +++ b/web/apps/photos/src/components/Upload/UploadProgress/footer.tsx @@ -1,20 +1,17 @@ -import { - UPLOAD_RESULT, - UPLOAD_STAGES, -} from "@/new/photos/services/upload/types"; +import { UPLOAD_RESULT } from "@/new/photos/services/upload/types"; import { Button, DialogActions } from "@mui/material"; import { t } from "i18next"; import { useContext } from "react"; import UploadProgressContext from "./context"; export function UploadProgressFooter() { - const { uploadStage, finishedUploads, retryFailed, onClose } = useContext( + const { uploadPhase, finishedUploads, retryFailed, onClose } = useContext( UploadProgressContext, ); return ( - {uploadStage === UPLOAD_STAGES.FINISH && + {uploadPhase == "done" && (finishedUploads?.get(UPLOAD_RESULT.FAILED)?.length > 0 || finishedUploads?.get(UPLOAD_RESULT.BLOCKED)?.length > 0 ? (