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 01/11] [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 && (
-