From c853192dbc50c12ca92c9ca23fa36b139b3050d5 Mon Sep 17 00:00:00 2001 From: karnelll <165611407+karnelll@users.noreply.github.com> Date: Thu, 28 Nov 2024 19:48:40 +0900 Subject: [PATCH 1/6] [refactor] Update exit modal functionality and improve data handling --- .../app/components/test/NaverLoginButton.tsx | 30 ------------ .../load-mappin-edit/components/EditLink.tsx | 48 +++++++++---------- .../[nonMemberId]/load-mappin-edit/page.tsx | 9 ++-- .../[id]/load-mappin/forms/links/page.tsx | 13 ++--- 4 files changed, 35 insertions(+), 65 deletions(-) delete mode 100644 fe/src/app/components/test/NaverLoginButton.tsx diff --git a/fe/src/app/components/test/NaverLoginButton.tsx b/fe/src/app/components/test/NaverLoginButton.tsx deleted file mode 100644 index 884799e..0000000 --- a/fe/src/app/components/test/NaverLoginButton.tsx +++ /dev/null @@ -1,30 +0,0 @@ -"use client"; - -export default function NaverLoginButton() { - const handleLogin = () => { - const clientId = process.env.NEXT_PUBLIC_NAVER_CLIENT_ID; - const redirectUri = process.env.NEXT_PUBLIC_REDIRECT_URI; - const state = Math.random().toString(36).substring(2, 15); - - if (!clientId || !redirectUri) { - alert("환경 변수가 제대로 설정되지 않았습니다."); - return; - } - - const naverAuthUrl = `https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=${clientId}&redirect_uri=${encodeURIComponent( - redirectUri - )}&state=${state}`; - - window.location.href = naverAuthUrl; - }; - - return ( - - ); -} diff --git a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/EditLink.tsx b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/EditLink.tsx index 82d34a2..1cab0b3 100644 --- a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/EditLink.tsx +++ b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/EditLink.tsx @@ -32,7 +32,7 @@ export default function LinkFieldEdit({ id: nanoid(), text: val, error: "", - isValid: true, + isValid: !!val, isTyping: false, })) : [ @@ -110,28 +110,6 @@ export default function LinkFieldEdit({ } }; - const handlePasteFromClipboard = async (fieldId: string) => { - try { - const clipboardText = await navigator.clipboard.readText(); - - const cleanedValue = cleanURL(clipboardText); - - if (cleanedValue) { - setInputFields((prevFields) => - prevFields.map((fieldItem) => - fieldItem.id === fieldId - ? { ...fieldItem, text: cleanedValue, isValid: false } - : fieldItem - ) - ); - - validateLink(fieldId, cleanedValue, label); - } - } catch (error) { - console.error("클립보드에서 텍스트를 읽는 데 실패했습니다:", error); - } - }; - const handleInputChange = (fieldId: string, inputValue: string) => { const cleanedValue = cleanURL(inputValue); setInputFields((prevFields) => @@ -147,14 +125,33 @@ export default function LinkFieldEdit({ } }; - const handleFocus = (fieldId: string) => { + const handleFocus = async (fieldId: string) => { setInputFields((prevFields) => prevFields.map((fieldItem) => fieldItem.id === fieldId ? { ...fieldItem, isTyping: true } : fieldItem ) ); - handlePasteFromClipboard(fieldId); + // 자동 클립보드 붙여넣기 기능 + if (navigator.clipboard) { + try { + const clipboardText = await navigator.clipboard.readText(); + const cleanedValue = cleanURL(clipboardText); + if (cleanedValue) { + setInputFields((prevFields) => + prevFields.map((fieldItem) => + fieldItem.id === fieldId + ? { ...fieldItem, text: cleanedValue, isValid: false } + : fieldItem + ) + ); + + validateLink(fieldId, cleanedValue, label); + } + } catch (error) { + console.error("클립보드에서 텍스트를 읽는 데 실패했습니다:", error); + } + } }; const handleBlur = (fieldId: string) => { @@ -199,6 +196,7 @@ export default function LinkFieldEdit({ }; const getClassNames = (item: InputField): string => { + if (!item.text) return "bg-[#F8F8F8]"; if (item.error && !item.isTyping) return "border-2 border-[#f73a2c] bg-[#F8F8F8]"; if (item.isValid) return "bg-[#EBF4FD] text-[#3a91ea]"; diff --git a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/page.tsx b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/page.tsx index 0708664..fe69f59 100644 --- a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/page.tsx +++ b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/page.tsx @@ -98,13 +98,14 @@ export default function LinkEditPage() { }; const handleBack = () => { - router.push(`/event-maps/${id}`); + setShowExitModal(true); // ExitModal을 표시 }; - const handleExit = () => { + const handleExitConfirm = () => { + // 데이터 삭제 후 뒤로가기 localStorage.removeItem("userData"); localStorage.removeItem("formData"); - router.back(); + router.push(`/event-maps/${id}`); }; const handleCancel = () => { @@ -175,7 +176,7 @@ export default function LinkEditPage() { /> {showExitModal && ( - + )} ); diff --git a/fe/src/app/event-maps/[id]/load-mappin/forms/links/page.tsx b/fe/src/app/event-maps/[id]/load-mappin/forms/links/page.tsx index ccdeb7b..83432e4 100644 --- a/fe/src/app/event-maps/[id]/load-mappin/forms/links/page.tsx +++ b/fe/src/app/event-maps/[id]/load-mappin/forms/links/page.tsx @@ -63,7 +63,6 @@ export default function LinksPage() { localStorage.clear(); router.push(`/event-maps/${id}`); } else if (response.status === 409) { - // 405 에러 처리 alert("이미 존재하는 이름입니다. 다시 시도해주세요."); } else { setIsFormComplete(false); @@ -93,11 +92,13 @@ export default function LinksPage() {
-
- 마음에 쏙 든 공간을 불러와요 -
-
- 네이버지도에 북마크 해 둔 공간을 불러와요 +
+
+ 마음에 쏙 든 공간을 불러와요 +
+
+ 네이버지도에 북마크 해 둔 공간을 불러와요 +
From 6ae43466c7dd4aba0a64e765f0fe5930a725d981 Mon Sep 17 00:00:00 2001 From: karnelll <165611407+karnelll@users.noreply.github.com> Date: Thu, 28 Nov 2024 21:21:12 +0900 Subject: [PATCH 2/6] [fix] implement feedback --- .../load-mappin-edit/components/EditLink.tsx | 1 - .../load-mappin-edit/components/ExitModal.tsx | 1 - .../eventcreate-page/\butils/formHelpers.ts" | 8 +++++ .../components/EventNameInput.tsx | 30 ++++++++++++------- .../eventcreate-page/location-search/page.tsx | 5 ++-- fe/src/app/robots.ts | 1 - 6 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 "fe/src/app/eventcreate-page/\butils/formHelpers.ts" diff --git a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/EditLink.tsx b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/EditLink.tsx index 1cab0b3..3b7fffb 100644 --- a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/EditLink.tsx +++ b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/EditLink.tsx @@ -132,7 +132,6 @@ export default function LinkFieldEdit({ ) ); - // 자동 클립보드 붙여넣기 기능 if (navigator.clipboard) { try { const clipboardText = await navigator.clipboard.readText(); diff --git a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/ExitModal.tsx b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/ExitModal.tsx index 0ca1649..16357c1 100644 --- a/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/ExitModal.tsx +++ b/fe/src/app/event-maps/[id]/[nonMemberId]/load-mappin-edit/components/ExitModal.tsx @@ -36,7 +36,6 @@ const ExitModal: React.FC = function ExitModal({
- {/* Buttons */}