From 1850aa1aec0aa3399fbb5d4797bd9d1242ae9032 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Wed, 4 Jun 2025 10:15:11 +0530 Subject: [PATCH] ref uploader name --- web/apps/photos/src/components/Upload.tsx | 36 ++++----- .../albums/components/UploaderNameInput.tsx | 81 +++++++++++++++---- 2 files changed, 78 insertions(+), 39 deletions(-) diff --git a/web/apps/photos/src/components/Upload.tsx b/web/apps/photos/src/components/Upload.tsx index d3fab0e1a4..25ef5cfe81 100644 --- a/web/apps/photos/src/components/Upload.tsx +++ b/web/apps/photos/src/components/Upload.tsx @@ -238,7 +238,7 @@ export const Upload: React.FC = ({ const currentUploadPromise = useRef | undefined>(undefined); const uploadRunning = useRef(false); - const uploaderNameRef = useRef(null); + const uploaderNameRef = useRef(""); const isDragAndDrop = useRef(false); /** @@ -494,7 +494,7 @@ export const Upload: React.FC = ({ publicCollectionGalleryContext.credentials.accessToken, ), ); - uploaderNameRef.current = uploaderName; + uploaderNameRef.current = uploaderName ?? ""; showUploaderNameInput(); return; } @@ -791,26 +791,18 @@ export const Upload: React.FC = ({ } }; - const handlePublicUpload = async ( - uploaderName: string, - skipSave?: boolean, - ) => { - try { - if (!skipSave) { - savePublicCollectionUploaderName( - getPublicCollectionUID( - publicCollectionGalleryContext.credentials.accessToken, - ), - uploaderName, - ); - } - await uploadFilesToExistingCollection( - props.uploadCollection, - uploaderName, - ); - } catch (e) { - log.error("public upload failed ", e); - } + const handlePublicUpload = async (uploaderName: string) => { + savePublicCollectionUploaderName( + getPublicCollectionUID( + publicCollectionGalleryContext.credentials.accessToken, + ), + uploaderName, + ); + + await uploadFilesToExistingCollection( + props.uploadCollection, + uploaderName, + ); }; const handleCollectionMappingSelect = (mapping: CollectionMapping) => diff --git a/web/packages/new/albums/components/UploaderNameInput.tsx b/web/packages/new/albums/components/UploaderNameInput.tsx index 4a459827da..97c8dac07a 100644 --- a/web/packages/new/albums/components/UploaderNameInput.tsx +++ b/web/packages/new/albums/components/UploaderNameInput.tsx @@ -4,12 +4,18 @@ import { Dialog, DialogContent, DialogTitle, + Stack, + TextField, Typography, useMediaQuery, } from "@mui/material"; +import { FocusVisibleButton } from "ente-base/components/mui/FocusVisibleButton"; +import { LoadingButton } from "ente-base/components/mui/LoadingButton"; import type { ModalVisibilityProps } from "ente-base/components/utils/modal"; -import SingleInputForm from "ente-shared/components/SingleInputForm"; +import log from "ente-base/log"; +import { useFormik } from "formik"; import { t } from "i18next"; +import React from "react"; type UploaderNameInput = ModalVisibilityProps & { /** @@ -40,10 +46,26 @@ export const UploaderNameInput: React.FC = ({ // Make the dialog fullscreen if it starts to get too squished. const fullScreen = useMediaQuery("(width < 400px)"); - const handleSubmit = async (inputValue: string) => { - onClose(); - await onSubmit(inputValue); - }; + const formik = useFormik({ + initialValues: { value: uploaderName }, + onSubmit: async (values, { setFieldError }) => { + const value = values.value; + const setValueFieldError = (message: string) => + setFieldError("value", message); + + if (!value) { + setValueFieldError(t("required")); + return; + } + try { + await onSubmit(value); + onClose(); + } catch (e) { + log.error(`Failed to submit input ${value}`, e); + setValueFieldError(t("generic_error")); + } + }, + }); return ( = ({ {t("uploader_name_hint")} - +
+ + + + {t("add_photos_count", { count: uploadFileCount })} + + + {t("cancel")} + + +
);