Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WRFE-48] 래플/이벤트 수정 페이지 #50

Open
wants to merge 14 commits into
base: dev
Choose a base branch
from
Open

Conversation

eric-hjh
Copy link
Contributor

@eric-hjh eric-hjh commented Oct 30, 2024

📖 개요

💻 작업사항

  • 수정 페이지 작업
스크린샷 2024-11-08 오후 6 24 50 스크린샷 2024-11-08 오후 6 24 55

💡 작성한 이슈 외에 작업한 사항

✔️ check list

  • 작성한 이슈의 내용을 전부 적용했나요?
  • 리뷰어를 등록했나요?

@eric-hjh eric-hjh marked this pull request as draft October 30, 2024 11:30
@eric-hjh eric-hjh added 💻 FE 프론트엔드 관련 이슈 ✨ FEAT 새로운 기능 추가 labels Oct 30, 2024
@eric-hjh eric-hjh self-assigned this Oct 30, 2024
@eric-hjh eric-hjh marked this pull request as ready for review November 8, 2024 09:23
@eric-hjh eric-hjh linked an issue Nov 10, 2024 that may be closed by this pull request
1 task
Copy link
Contributor

@ww8007 ww8007 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

궁금한 점 몇개 코멘트 남겼습니다!

Comment on lines +13 to +19
const Edit = ({
params: {id},
searchParams: {type},
}: {
params: {id: string};
searchParams: {type: 'raffle' | 'event'};
}) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 interface를 따로 선언하지 않는 이유가 따로 있으신가요?
저는 보통

interface Params {
 id : string;
}

interface SearchParams {
 type : 'raffle' | 'event'
}

interface EditProps {
 params : Params;
 searchParams : SearchParams;
}

요런식으로 썼는데 interface 파일만 읽더라도 이 컴포넌트에서 대충 어느게 필요하겠구나에 대한
생각을 분리할 수 있어서 좋은 것 같았어요
이 부분에 대한 장현님의 생각은 어떠신가요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interface를 따로 선언하지 않는 이유는

  1. 나누지 않는게 더 직관적이다 생각하고,
  2. 개인적으로 코드를 읽을 때 아래 ->위 (왼 -> 오)로 읽는게 좋아서,
  3. 코드양이 굳이 늘아난다는 느낌을 가지고 있었습니다.

인터페이스로 분리할 때는 가독성이 떨어진다 느껴질 때 (ex. props로 받아오는게 많다거나, 복잡한 관계라던가..) 분리를 해서 사용해왔었는데,
'생각을 분리해 볼 수 있다' 와 같은 생각은 못해봤던 접근이어서 한번 생각해보겠습니다!
(이렇게 적었는데 밑에 훅 보니까 분리해서 사용했네요 ; 3개가 많다 생각하진 않는데)

apps/front/wraffle-webview/app/products/[id]/edit/page.tsx Outdated Show resolved Hide resolved
Comment on lines 11 to 40
export const useDateValidation = ({
startDate,
endDate,
announceAt,
}: UseDateValidationProps) => {
const {setValue} = useFormContext();
const {toast} = useToast();

useEffect(() => {
if (endDate < startDate) {
setValue('endDate', startDate);
toast({
title: '응모 마감 일정은',
description: '응모 시작 일정 이후로 설정해주세요.',
duration: 10000,
variant: 'warning',
});
}

if (announceAt < endDate) {
setValue('announceAt', endDate);
toast({
title: '당첨자 발표 일정은',
description: '응모 마감 일정 이후로 설정해주세요.',
duration: 10000,
variant: 'warning',
});
}
}, [startDate, endDate, announceAt]);
};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

외부에서 사용할 때 이 컴포넌트가 어떤 일을 하는지 파일을 열어보기 전 까지는 동작을 예측하기 어려운 코드 같아요

  1. 날짜 판단
  2. 토스트
  3. form에 setting

useDateValidationWithToast 같은 네이밍을 가져가는 것도 좋을거 같은데 과연 form을 여기서 setting 하는게 훅의 책임이 맞는가에 대한 고민이 드네요
어떠신가요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 중복을 줄일 수 있는 점과 훅으로 나누긴 했지만 form을 사용하는 제한된 곳에서 사용할것이라는 생각으로 코드를 작성하여 간과한 부분인거 같아 수정하겠습니다

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a9c6708
수정 커밋 입니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저번에 의논했었던 방향에서 처음 이야기 나왔던 onChange에 조건을 거는 방향으로 생각해보다가, 처음 생각했던 흐름은

  • 오버된 날짜를 선택시 날짜를 강제로 변경 시킨 후, toast를 보여주는 방향이었는데,

생각해보니까, 날짜를 강제로 변경하는 흐름 보단, 선택할 때 유효성에 걸리면 토스트를 보여주고, 변경을 못하는 방향이 사용자에게 더 좋은 경험이 될거 같아서 이 방향으로 수정해 보았는데, 어떠신거 같나요??
4e1f418

Copy link
Contributor Author

@eric-hjh eric-hjh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

감사합니다!

Comment on lines +13 to +19
const Edit = ({
params: {id},
searchParams: {type},
}: {
params: {id: string};
searchParams: {type: 'raffle' | 'event'};
}) => {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interface를 따로 선언하지 않는 이유는

  1. 나누지 않는게 더 직관적이다 생각하고,
  2. 개인적으로 코드를 읽을 때 아래 ->위 (왼 -> 오)로 읽는게 좋아서,
  3. 코드양이 굳이 늘아난다는 느낌을 가지고 있었습니다.

인터페이스로 분리할 때는 가독성이 떨어진다 느껴질 때 (ex. props로 받아오는게 많다거나, 복잡한 관계라던가..) 분리를 해서 사용해왔었는데,
'생각을 분리해 볼 수 있다' 와 같은 생각은 못해봤던 접근이어서 한번 생각해보겠습니다!
(이렇게 적었는데 밑에 훅 보니까 분리해서 사용했네요 ; 3개가 많다 생각하진 않는데)

Comment on lines 11 to 40
export const useDateValidation = ({
startDate,
endDate,
announceAt,
}: UseDateValidationProps) => {
const {setValue} = useFormContext();
const {toast} = useToast();

useEffect(() => {
if (endDate < startDate) {
setValue('endDate', startDate);
toast({
title: '응모 마감 일정은',
description: '응모 시작 일정 이후로 설정해주세요.',
duration: 10000,
variant: 'warning',
});
}

if (announceAt < endDate) {
setValue('announceAt', endDate);
toast({
title: '당첨자 발표 일정은',
description: '응모 마감 일정 이후로 설정해주세요.',
duration: 10000,
variant: 'warning',
});
}
}, [startDate, endDate, announceAt]);
};
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 중복을 줄일 수 있는 점과 훅으로 나누긴 했지만 form을 사용하는 제한된 곳에서 사용할것이라는 생각으로 코드를 작성하여 간과한 부분인거 같아 수정하겠습니다

@eric-hjh eric-hjh requested a review from ww8007 November 27, 2024 13:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💻 FE 프론트엔드 관련 이슈 ✨ FEAT 새로운 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[WRFE-48](feat): 수정 페이지 추가
2 participants