From c8e5d2c4efa8da681158da6f70c2cedac7e676a5 Mon Sep 17 00:00:00 2001 From: hongggy Date: Thu, 5 Dec 2024 16:56:35 +0900 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20=EA=B8=88=EC=95=A1=20=ED=8F=AC?= =?UTF-8?q?=EB=A7=A4=ED=84=B0=20=ED=95=A8=EC=88=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../addform/sections/WorkCondition.tsx | 18 +++++++++-- .../components/button/default/CheckBtn.tsx | 1 + .../components/input/text/LocationInput.tsx | 31 +++++++++++-------- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/app/(pages)/(addform)/addform/sections/WorkCondition.tsx b/src/app/(pages)/(addform)/addform/sections/WorkCondition.tsx index c059544b..eadc67e2 100644 --- a/src/app/(pages)/(addform)/addform/sections/WorkCondition.tsx +++ b/src/app/(pages)/(addform)/addform/sections/WorkCondition.tsx @@ -56,15 +56,23 @@ export default function WorkCondition({ formData, onUpdate }: WorkConditionProps if (start) setValue("workStartDate", start.toISOString()); if (end) setValue("workEndDate", end.toISOString()); }; + const errorTextStyle = "absolute -bottom-[26px] right-1 text-[13px] text-sm font-medium leading-[22px] text-state-error lg:text-base lg:leading-[26px]"; + const formatMoney = (value: string) => { + const numberValue = Number(value); + if (isNaN(numberValue)) return ""; + return numberValue.toLocaleString(); + }; + return (
+ {/* 지도 API 연동 */} - +
@@ -94,7 +102,13 @@ export default function WorkCondition({ formData, onUpdate }: WorkConditionProps
- +
diff --git a/src/app/components/button/default/CheckBtn.tsx b/src/app/components/button/default/CheckBtn.tsx index 8dc19bf2..1018cabc 100644 --- a/src/app/components/button/default/CheckBtn.tsx +++ b/src/app/components/button/default/CheckBtn.tsx @@ -6,6 +6,7 @@ interface CheckBtnProps extends InputHTMLAttributes { label: string; // 체크박스의 레이블 name: string; // 체크박스의 name 속성 value: string; // 체크박스의 value 속성 + checked?: boolean; // 체크박스가 선택된 상태인지 여부 disabled?: boolean; // 체크박스가 비활성화된 상태인지 여부 onChange?: (e: React.ChangeEvent) => void; } diff --git a/src/app/components/input/text/LocationInput.tsx b/src/app/components/input/text/LocationInput.tsx index 4fa95214..ea24bf67 100644 --- a/src/app/components/input/text/LocationInput.tsx +++ b/src/app/components/input/text/LocationInput.tsx @@ -3,19 +3,24 @@ import { IoLocationSharp } from "react-icons/io5"; import BaseInput from "./BaseInput"; import { BaseInputProps } from "@/types/textInput"; +import { forwardRef } from "react"; -const LocationInput = ({ type = "text", variant, errormessage, feedbackMessage, ...props }: BaseInputProps) => { - return ( - } - placeholder="위치를 입력해주세요." - errormessage={errormessage} - feedbackMessage={feedbackMessage} - {...props} - /> - ); -}; +const LocationInput = forwardRef( + ({ type = "text", variant, errormessage, feedbackMessage, ...props }, ref) => { + return ( + } + placeholder="위치를 입력해주세요." + errormessage={errormessage} + feedbackMessage={feedbackMessage} + {...props} + /> + ); + } +); + +LocationInput.displayName = "LocationInput"; export default LocationInput; From 2c1e960ab79c4178776df7b387f242c8433c5404 Mon Sep 17 00:00:00 2001 From: hongggy Date: Thu, 5 Dec 2024 17:01:58 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20apiClient=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(pages)/(addform)/addform/sections/WorkCondition.tsx | 7 ------- src/app/api/(file)/resume/upload/route.ts | 4 ++-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/app/(pages)/(addform)/addform/sections/WorkCondition.tsx b/src/app/(pages)/(addform)/addform/sections/WorkCondition.tsx index eadc67e2..5b0fccec 100644 --- a/src/app/(pages)/(addform)/addform/sections/WorkCondition.tsx +++ b/src/app/(pages)/(addform)/addform/sections/WorkCondition.tsx @@ -60,12 +60,6 @@ export default function WorkCondition({ formData, onUpdate }: WorkConditionProps const errorTextStyle = "absolute -bottom-[26px] right-1 text-[13px] text-sm font-medium leading-[22px] text-state-error lg:text-base lg:leading-[26px]"; - const formatMoney = (value: string) => { - const numberValue = Number(value); - if (isNaN(numberValue)) return ""; - return numberValue.toLocaleString(); - }; - return (
@@ -105,7 +99,6 @@ export default function WorkCondition({ formData, onUpdate }: WorkConditionProps diff --git a/src/app/api/(file)/resume/upload/route.ts b/src/app/api/(file)/resume/upload/route.ts index e0dab208..8ce67d05 100644 --- a/src/app/api/(file)/resume/upload/route.ts +++ b/src/app/api/(file)/resume/upload/route.ts @@ -1,6 +1,6 @@ +import apiClient from "@/lib/apiClient"; import { cookies } from "next/headers"; import { NextRequest, NextResponse } from "next/server"; -import apiClientNoHeader from "@/lib/apiClientNoHeader"; export async function POST(req: NextRequest) { const accessToken = cookies().get("accessToken")?.value; @@ -22,7 +22,7 @@ export async function POST(req: NextRequest) { const uploadFormData = new FormData(); uploadFormData.append("file", file); - const response = await apiClientNoHeader.post("/resume/upload", uploadFormData, { + const response = await apiClient.post("/resume/upload", uploadFormData, { headers: { Authorization: `Bearer ${accessToken}`, "Content-Type": "multipart/form-data", From 684523096944f80d0a147da77c6dea52bc0b8ef3 Mon Sep 17 00:00:00 2001 From: cccwon2 Date: Thu, 5 Dec 2024 17:03:22 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=EB=B9=8C=EB=93=9C=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/(file)/resume/upload/route.ts | 4 ++-- .../input/file/ImageInput/ImageInputwithPlaceHolder.tsx | 1 - .../components/input/picker/DatePicker.stories.tsx | 2 +- src/middleware.ts | 9 --------- 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/app/api/(file)/resume/upload/route.ts b/src/app/api/(file)/resume/upload/route.ts index e0dab208..8ce67d05 100644 --- a/src/app/api/(file)/resume/upload/route.ts +++ b/src/app/api/(file)/resume/upload/route.ts @@ -1,6 +1,6 @@ +import apiClient from "@/lib/apiClient"; import { cookies } from "next/headers"; import { NextRequest, NextResponse } from "next/server"; -import apiClientNoHeader from "@/lib/apiClientNoHeader"; export async function POST(req: NextRequest) { const accessToken = cookies().get("accessToken")?.value; @@ -22,7 +22,7 @@ export async function POST(req: NextRequest) { const uploadFormData = new FormData(); uploadFormData.append("file", file); - const response = await apiClientNoHeader.post("/resume/upload", uploadFormData, { + const response = await apiClient.post("/resume/upload", uploadFormData, { headers: { Authorization: `Bearer ${accessToken}`, "Content-Type": "multipart/form-data", diff --git a/src/app/components/input/file/ImageInput/ImageInputwithPlaceHolder.tsx b/src/app/components/input/file/ImageInput/ImageInputwithPlaceHolder.tsx index 9f991f8a..e45849a5 100644 --- a/src/app/components/input/file/ImageInput/ImageInputwithPlaceHolder.tsx +++ b/src/app/components/input/file/ImageInput/ImageInputwithPlaceHolder.tsx @@ -43,7 +43,6 @@ const ImageInputwithPlaceHolder = () => { name="image" onFileAction={handleFileChange} size={size} - isImage={true} placeholder="" />
diff --git a/src/app/stories/design-system/components/input/picker/DatePicker.stories.tsx b/src/app/stories/design-system/components/input/picker/DatePicker.stories.tsx index 3665c430..5abf31e4 100644 --- a/src/app/stories/design-system/components/input/picker/DatePicker.stories.tsx +++ b/src/app/stories/design-system/components/input/picker/DatePicker.stories.tsx @@ -26,5 +26,5 @@ export default meta; type Story = StoryObj; export const DatePicker: Story = { - render: () => , + render: () => {}} />, }; diff --git a/src/middleware.ts b/src/middleware.ts index 5d9e80f3..c7fdf445 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -75,15 +75,6 @@ export function decodeJwt(token: string) { } } -// 토큰 만료 체크 함수 -function isTokenExpired(token: string) { - const decodedToken = decodeJwt(token); - if (!decodedToken) return true; - - const currentTime = Math.floor(Date.now() / 1000); - return decodedToken.exp < currentTime; -} - export const config = { matcher: [ /* From 237cacaaf88f5ff5a277e3a2350568ad5c7fb641 Mon Sep 17 00:00:00 2001 From: hongggy Date: Thu, 5 Dec 2024 17:10:59 +0900 Subject: [PATCH 4/5] =?UTF-8?q?feat:=20=EA=B9=83=ED=97=99=EC=95=A1?= =?UTF-8?q?=EC=85=98=20CI=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/workflow.yml | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/workflow.yml diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml new file mode 100644 index 00000000..3e440464 --- /dev/null +++ b/.github/workflows/workflow.yml @@ -0,0 +1,40 @@ +name: workRoot CI + +on: + push: + branches: + - main # main 브랜치에 푸시될 때 실행 + - dev + pull_request: + branches: + - dev + +jobs: + lint-and-build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: "20" # 최신 Node.js 20.x.x 버전 사용 + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Install dependencies + run: npm install + + - name: Run linter + run: npm run lint + + - name: Build project + run: npm run build From 1cb17e02b2bc84cbc9b974e90ffe477e886551dc Mon Sep 17 00:00:00 2001 From: hongggy Date: Thu, 5 Dec 2024 17:19:18 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=9D=B8=ED=92=8B=20=ED=83=80=EC=9E=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/types/textInput.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/textInput.d.ts b/src/types/textInput.d.ts index 1794fe24..dffb186b 100644 --- a/src/types/textInput.d.ts +++ b/src/types/textInput.d.ts @@ -30,4 +30,5 @@ export interface BaseFileInputProps { placeholder: string; onChange?: (event: Event) => void; accept?: string; + isImage?: boolean; }