diff --git a/App.tsx b/App.tsx index acbb6093..2b7d43e3 100644 --- a/App.tsx +++ b/App.tsx @@ -152,7 +152,9 @@ export default function App() { , + }} /> void; } -const SocialLoginButton = ({ onPress, color, icon, text }: SocialLoginButtonProps) => { +const SocialLoginButton = ({ onPress, textColor, color, xml, text }: SocialLoginButtonProps) => { return ( - + + {xml && } + + {text} + + ); }; diff --git a/src/constants/Icons/Signin/apple.ts b/src/constants/Icons/Signin/apple.ts new file mode 100644 index 00000000..8d866751 --- /dev/null +++ b/src/constants/Icons/Signin/apple.ts @@ -0,0 +1,12 @@ +export default ` + + + + + + + + + + +`; diff --git a/src/constants/Icons/Signin/google.ts b/src/constants/Icons/Signin/google.ts new file mode 100644 index 00000000..368d8eda --- /dev/null +++ b/src/constants/Icons/Signin/google.ts @@ -0,0 +1,14 @@ +export default ` + + + + + + + + + + + + +`; diff --git a/src/constants/Icons/Signin/kakao.ts b/src/constants/Icons/Signin/kakao.ts new file mode 100644 index 00000000..70b1b187 --- /dev/null +++ b/src/constants/Icons/Signin/kakao.ts @@ -0,0 +1,15 @@ +export default ` + + + + + + + + + + + + + +`; diff --git a/src/constants/Icons/Signin/naver.ts b/src/constants/Icons/Signin/naver.ts new file mode 100644 index 00000000..af82d96c --- /dev/null +++ b/src/constants/Icons/Signin/naver.ts @@ -0,0 +1,11 @@ +export default ` + + + + + + + + + +`; diff --git a/src/screens/login/LoginScreen.tsx b/src/screens/login/LoginScreen.tsx index b9aa97ec..88eaa96c 100644 --- a/src/screens/login/LoginScreen.tsx +++ b/src/screens/login/LoginScreen.tsx @@ -19,6 +19,7 @@ function Login({ navigation, route }) { onSuccess: (response) => { setAccessToken(response.data.accessToken); setUserId(response.data.userId); + if (response.data.alreadySignedUp) navigation.navigate('Tabs'); navigation.navigate('CategorySelect'); }, onError: (e) => { diff --git a/src/screens/onboarding/SignUpScreen.tsx b/src/screens/onboarding/SignUpScreen.tsx index 0a0cf705..c8181c5f 100644 --- a/src/screens/onboarding/SignUpScreen.tsx +++ b/src/screens/onboarding/SignUpScreen.tsx @@ -1,17 +1,29 @@ import { StyleSheet, View, Text } from 'react-native'; -import React from 'react'; +import React, { useCallback, useRef } from 'react'; import SocialLoginButton from '../../components/buttons/SocialLoginButton'; import { useTheme } from 'react-native-paper'; import OnboardingLottie from '../../components/lotties/OnboardingLottie'; +import kakao from '../../constants/Icons/Signin/kakao'; +import { BottomSheetBackdrop, BottomSheetModal } from '@gorhom/bottom-sheet'; +import apple from '../../constants/Icons/Signin/apple'; +import google from '../../constants/Icons/Signin/google'; +import naver from '../../constants/Icons/Signin/naver'; const SignUpScreen = ({ navigation }) => { + const modalRef = useRef(null); const theme = useTheme(); const handleLoginPress = (oauth: string) => { navigation.navigate('Login', { oauth }); + modalRef.current?.close(); }; + const renderBackdrop = useCallback( + (props) => , + [], + ); + const handleOtherPress = () => { - alert('started by other ways.'); + modalRef.current?.present(); }; return ( @@ -28,35 +40,68 @@ const SignUpScreen = ({ navigation }) => { handleLoginPress('kakao')} - > - - - handleLoginPress('naver')} - > - - - handleLoginPress('google')} - > + /> + /> + + + 다른 방법으로 시작하기 + + + + handleLoginPress('apple')} + /> + + + handleLoginPress('google')} + /> + + + handleLoginPress('naver')} + /> + + + ); }; diff --git a/src/types/login.d.ts b/src/types/login.d.ts index bceed1ab..f53385c6 100644 --- a/src/types/login.d.ts +++ b/src/types/login.d.ts @@ -10,5 +10,6 @@ interface LoginResponse { data: { userId: number; accessToken: string; + alreadySignedUp: boolean; }; }