diff --git a/.pnp.cjs b/.pnp.cjs index 2fe3e23e..d2755122 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -28,6 +28,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { [null, {\ "packageLocation": "./",\ "packageDependencies": [\ + ["@bcsdlab/koin", "virtual:2a928e07684dc9ad50d6744a82230310880d82a84463b276e7d19ce4f4762d0780e66ccb13980e8f3eb76ec0bcd5207e76cb8696dbcb80089851be6e3a1536fb#npm:0.0.15"],\ ["@hookform/resolvers", "virtual:2a928e07684dc9ad50d6744a82230310880d82a84463b276e7d19ce4f4762d0780e66ccb13980e8f3eb76ec0bcd5207e76cb8696dbcb80089851be6e3a1536fb#npm:3.3.4"],\ ["@tanstack/react-query", "virtual:2a928e07684dc9ad50d6744a82230310880d82a84463b276e7d19ce4f4762d0780e66ccb13980e8f3eb76ec0bcd5207e76cb8696dbcb80089851be6e3a1536fb#npm:5.18.1"],\ ["@testing-library/jest-dom", "npm:5.17.0"],\ @@ -3152,6 +3153,28 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "linkType": "HARD"\ }]\ ]],\ + ["@bcsdlab/koin", [\ + ["npm:0.0.15", {\ + "packageLocation": "./.yarn/cache/@bcsdlab-koin-npm-0.0.15-ad194f9536-30b1904180.zip/node_modules/@bcsdlab/koin/",\ + "packageDependencies": [\ + ["@bcsdlab/koin", "npm:0.0.15"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:2a928e07684dc9ad50d6744a82230310880d82a84463b276e7d19ce4f4762d0780e66ccb13980e8f3eb76ec0bcd5207e76cb8696dbcb80089851be6e3a1536fb#npm:0.0.15", {\ + "packageLocation": "./.yarn/__virtual__/@bcsdlab-koin-virtual-da544e0f84/0/cache/@bcsdlab-koin-npm-0.0.15-ad194f9536-30b1904180.zip/node_modules/@bcsdlab/koin/",\ + "packageDependencies": [\ + ["@bcsdlab/koin", "virtual:2a928e07684dc9ad50d6744a82230310880d82a84463b276e7d19ce4f4762d0780e66ccb13980e8f3eb76ec0bcd5207e76cb8696dbcb80089851be6e3a1536fb#npm:0.0.15"],\ + ["@types/axios", null],\ + ["axios", "npm:1.6.7"]\ + ],\ + "packagePeers": [\ + "@types/axios",\ + "axios"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@csstools/normalize.css", [\ ["npm:12.1.1", {\ "packageLocation": "./.yarn/cache/@csstools-normalize.css-npm-12.1.1-7ccc5f7985-a356ee0fcb.zip/node_modules/@csstools/normalize.css/",\ @@ -12311,6 +12334,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) { "packageLocation": "./",\ "packageDependencies": [\ ["koin_owner_web", "workspace:."],\ + ["@bcsdlab/koin", "virtual:2a928e07684dc9ad50d6744a82230310880d82a84463b276e7d19ce4f4762d0780e66ccb13980e8f3eb76ec0bcd5207e76cb8696dbcb80089851be6e3a1536fb#npm:0.0.15"],\ ["@hookform/resolvers", "virtual:2a928e07684dc9ad50d6744a82230310880d82a84463b276e7d19ce4f4762d0780e66ccb13980e8f3eb76ec0bcd5207e76cb8696dbcb80089851be6e3a1536fb#npm:3.3.4"],\ ["@tanstack/react-query", "virtual:2a928e07684dc9ad50d6744a82230310880d82a84463b276e7d19ce4f4762d0780e66ccb13980e8f3eb76ec0bcd5207e76cb8696dbcb80089851be6e3a1536fb#npm:5.18.1"],\ ["@testing-library/jest-dom", "npm:5.17.0"],\ diff --git a/.yarn/cache/@bcsdlab-koin-npm-0.0.15-ad194f9536-30b1904180.zip b/.yarn/cache/@bcsdlab-koin-npm-0.0.15-ad194f9536-30b1904180.zip new file mode 100644 index 00000000..b4415a50 Binary files /dev/null and b/.yarn/cache/@bcsdlab-koin-npm-0.0.15-ad194f9536-30b1904180.zip differ diff --git a/package.json b/package.json index 8bcdddfe..58cc6ceb 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { + "@bcsdlab/koin": "^0.0.15", "@hookform/resolvers": "^3.1.0", "@tanstack/react-query": "^5.8.1", "@testing-library/jest-dom": "^5.14.1", diff --git a/src/page/Auth/Signup/component/ErrorMessage/index.tsx b/src/page/Auth/Signup/component/ErrorMessage/index.tsx index 9b9d8e21..8c2b2c4e 100644 --- a/src/page/Auth/Signup/component/ErrorMessage/index.tsx +++ b/src/page/Auth/Signup/component/ErrorMessage/index.tsx @@ -2,16 +2,31 @@ import { ReactComponent as Warn } from 'assets/svg/auth/warning.svg'; import styles from './ErrorMessage.module.scss'; interface ErrorMessageProps { - message:string | (string | undefined)[] + message: string | (string | undefined | null)[] } export default function ErrorMessage({ message }:ErrorMessageProps) { - return ( -
- - - {typeof message === 'string' ? message : message[0]} - -
- ); + if (typeof message === 'string') { + return ( +
+ + + {message} + +
+ ); + } + + if (message.length > 0) { + return ( +
+ + + {typeof message === 'string' ? message : message[0]} + +
+ ); + } + + return null; } diff --git a/src/page/Auth/Signup/hooks/useCheckEmailDuplicate.ts b/src/page/Auth/Signup/hooks/useCheckEmailDuplicate.ts index 54f07c2e..27bd1e4a 100644 --- a/src/page/Auth/Signup/hooks/useCheckEmailDuplicate.ts +++ b/src/page/Auth/Signup/hooks/useCheckEmailDuplicate.ts @@ -5,13 +5,14 @@ import { import { SubmitHandler } from 'react-hook-form'; import { User } from 'page/Auth/Signup/types/User'; import useRegisterInfo from 'store/registerStore'; +import { isKoinError } from '@bcsdlab/koin'; export default function useCheckEmailDuplicate(isMobile: boolean) { const [email, setEmail] = useState(''); const { status, refetch, error } = useCheckDuplicate(email); const { userInfo: userData, setUserInfo: setId } = useRegisterInfo(); const debounceSearch = useRef(); - const errorMessage:string | undefined = status === 'error' ? Object(error).response.data.message : null; + const errorMessage = isKoinError(error) && error.status === 409 ? '이미 사용중인 아이디입니다.' : null; const onSubmit:SubmitHandler = (data) => { setEmail(() => (data.email ? data.email : '')); }; diff --git a/src/query/auth.ts b/src/query/auth.ts index 8d2275d7..a8d5cf1b 100644 --- a/src/query/auth.ts +++ b/src/query/auth.ts @@ -9,8 +9,8 @@ import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useErrorMessageStore } from 'store/errorMessageStore'; import usePrevPathStore from 'store/path'; -import { isKoinError } from 'utils/ts/isKoinError'; import useStepStore from 'store/useStepStore'; +import { isKoinError } from '@bcsdlab/koin'; interface VerifyInput { email: string; diff --git a/src/utils/ts/isKoinError.ts b/src/utils/ts/isKoinError.ts deleted file mode 100644 index f3efde8a..00000000 --- a/src/utils/ts/isKoinError.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { KoinError } from 'model/error'; - -export function isKoinError(error: unknown): error is KoinError { - try { - // 코인 서버 에러인지 아닌지를 확인 - return (error as KoinError).type === 'KOIN_ERROR'; - } catch { - return false; - } -} diff --git a/yarn.lock b/yarn.lock index 1647d9c6..f5eca45f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1650,6 +1650,15 @@ __metadata: languageName: node linkType: hard +"@bcsdlab/koin@npm:^0.0.15": + version: 0.0.15 + resolution: "@bcsdlab/koin@npm:0.0.15" + peerDependencies: + axios: ^0.27.2 + checksum: 30b1904180a8278bdc45cbb487e10c88da6034d74964070a2837694df16b87606535b45bc5675f4f8038d7530b9d2ecf009b11d360bc572141fe92ba3ef6059e + languageName: node + linkType: hard + "@csstools/normalize.css@npm:*": version: 12.1.1 resolution: "@csstools/normalize.css@npm:12.1.1" @@ -8982,6 +8991,7 @@ __metadata: version: 0.0.0-use.local resolution: "koin_owner_web@workspace:." dependencies: + "@bcsdlab/koin": ^0.0.15 "@hookform/resolvers": ^3.1.0 "@tanstack/react-query": ^5.8.1 "@testing-library/jest-dom": ^5.14.1