-
Notifications
You must be signed in to change notification settings - Fork 5
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
[FE] swipe 기능을 ref를 받아 쓰도록 개선한다 #959
Changes from 5 commits
25d93b9
cc4cda9
25409dd
97ad282
37ca760
0d49c5d
10e937c
5196255
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,17 +35,17 @@ export const deleteToken = async () => { | |
}; | ||
|
||
export const postReissueAccessToken = async () => { | ||
return await fetch(`${BASE_URL}${ENDPOINT.USER_ACCESS_TOKEN_REISSUE}`, { | ||
method: 'POST', | ||
return await fetcher.post({ | ||
url: `${BASE_URL}${ENDPOINT.USER_ACCESS_TOKEN_REISSUE}`, | ||
credentials: 'include', | ||
headers: { 'Content-Type': 'application/json' }, | ||
// 쿠키전달이기때문에 body가 비어있는 post | ||
}); | ||
}; | ||
|
||
export const postSignUp = async ({ name, email, password }: { name: string; email: string; password: string }) => { | ||
return await fetch(`${BASE_URL}${ENDPOINT.REGISTER}`, { | ||
method: 'POST', | ||
body: JSON.stringify({ name, email, password }), | ||
return await fetcher.post({ | ||
url: `${BASE_URL}${ENDPOINT.REGISTER}`, | ||
body: { name, email, password }, | ||
credentials: 'include', | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이부분도 동일합니다~! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 반영했습니다. |
||
}); | ||
}; | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,35 @@ | ||
import styled from '@emotion/styled'; | ||
import { Suspense } from 'react'; | ||
import { Suspense, useRef } from 'react'; | ||
import { ErrorBoundary } from 'react-error-boundary'; | ||
|
||
import ListErrorFallback from '@/components/_common/errorBoundary/ListErrorFallback'; | ||
import { useTabContext } from '@/components/_common/Tabs/TabContext'; | ||
import EditChecklistQuestionTemplate from '@/components/EditChecklist/ChecklistContent/EditChecklistQuestionTemplate'; | ||
import RoomInfoTemplate from '@/components/NewChecklist/NewRoomInfoForm/RoomInfoTemplate'; | ||
import OptionTemplate from '@/components/NewChecklist/Option/OptionTemplate'; | ||
import { DefaultChecklistTabsNames } from '@/constants/tabs'; | ||
import useMouseDrag from '@/hooks/useMouseDrag'; | ||
|
||
const EditChecklistContent = () => { | ||
const { currentTabId } = useTabContext(); | ||
|
||
const { setCurrentTabId } = useTabContext(); | ||
const ref = useRef<HTMLElement>(null); | ||
useMouseDrag(ref, (S, E) => { | ||
const DRAG_THRESHOLD = 100; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 부분도 상수 분리되면 좋을거 같네용~~ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 반영했습니다. |
||
const TAB_COUNT = DefaultChecklistTabsNames.length; | ||
const remainOp = (a: number, b: number) => (((a % b) + b + 1) % b) - 1; // 나머지연산자. -1부터 시작하므로 +1 -1 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 유틸로 분리할 수 있을 수 있지 않을까요? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 밑에 자세히 작성하였습니다. |
||
setCurrentTabId(tabId => { | ||
const isLeftDrag = E.x - S.x > DRAG_THRESHOLD; | ||
const isRightDrag = S.x - E.x > DRAG_THRESHOLD; | ||
if (isLeftDrag) return remainOp(tabId - 1, TAB_COUNT); | ||
if (isRightDrag) return remainOp(tabId + 1, TAB_COUNT); | ||
return tabId; | ||
}); | ||
}); | ||
|
||
return ( | ||
<S.Container> | ||
<S.Container ref={ref}> | ||
{/*방 기본정보 템플릿 */} | ||
{currentTabId === -1 && <RoomInfoTemplate />} | ||
{/* 옵션 선택 템플릿 */} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,34 @@ | ||
import styled from '@emotion/styled'; | ||
import { Suspense } from 'react'; | ||
import { Suspense, useRef } from 'react'; | ||
import { ErrorBoundary } from 'react-error-boundary'; | ||
|
||
import ListErrorFallback from '@/components/_common/errorBoundary/ListErrorFallback'; | ||
import { useTabContext } from '@/components/_common/Tabs/TabContext'; | ||
import ChecklistQuestionTemplate from '@/components/NewChecklist/ChecklistQuestion/ChecklistQuestionTemplate'; | ||
import RoomInfoTemplate from '@/components/NewChecklist/NewRoomInfoForm/RoomInfoTemplate'; | ||
import OptionTemplate from '@/components/NewChecklist/Option/OptionTemplate'; | ||
import { DefaultChecklistTabsNames } from '@/constants/tabs'; | ||
import useMouseDrag from '@/hooks/useMouseDrag'; | ||
|
||
const ChecklistContent = () => { | ||
const { currentTabId } = useTabContext(); | ||
|
||
const { setCurrentTabId } = useTabContext(); | ||
const ref = useRef<HTMLElement>(null); | ||
|
||
useMouseDrag(ref, (S, E) => { | ||
const DRAG_THRESHOLD = 100; | ||
const TAB_COUNT = DefaultChecklistTabsNames.length; | ||
const remainOp = (a: number, b: number) => (((a % b) + b + 1) % b) - 1; // 나머지연산자. -1부터 시작하므로 +1 -1 | ||
setCurrentTabId(tabId => { | ||
const isLeftDrag = E.x - S.x > DRAG_THRESHOLD; | ||
const isRightDrag = S.x - E.x > DRAG_THRESHOLD; | ||
if (isLeftDrag) return remainOp(tabId - 1, TAB_COUNT); | ||
if (isRightDrag) return remainOp(tabId + 1, TAB_COUNT); | ||
return tabId; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 위에 코드리뷰와 동일하게 동일한 코드가 반복되는거 같아서 유틸 분리, 상수 분리가 되면 좋을거 같아요~! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인했습니다. |
||
}); | ||
}); | ||
|
||
return ( | ||
<S.Container> | ||
{/*방 기본정보 템플릿 */} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,6 +13,7 @@ const DepositAndRent = () => { | |
<FormField.Label label="보증금 / 월세 (만원)" /> | ||
<FormStyled.FieldBox> | ||
<FormField.Input | ||
inputMode="decimal" | ||
width="medium" | ||
onChange={deposit.onChange} | ||
name="deposit" | ||
|
@@ -21,6 +22,7 @@ const DepositAndRent = () => { | |
/> | ||
<FormStyled.FlexLabel label=" / " /> | ||
<FormField.Input | ||
inputMode="decimal" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이런 속성이 있는지는 처음 알았네요 제이드 덕분에 배우고 갑니다!! |
||
width="medium" | ||
placeholder="" | ||
onChange={rent.onChange} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,7 @@ const MaintenanceFee = () => { | |
<FormField.Label label="관리비" htmlFor="maintenanceFee" /> | ||
<FormStyled.FieldBox> | ||
<Input | ||
inputMode="decimal" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍👍👍 |
||
width="medium" | ||
placeholder="" | ||
onChange={maintenanceFee.onChange} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fetcher 내부에 이미
credentials: 'include',
이 포함되어 있어서 불필요한 코드인거 같네요~!There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
반영했습니다.