더북(TheBook)

다음에는 SignInScreenonSubmit 함수를 수정해주세요. 회원가입 또는 로그인이 성공했을 때 user.uid를 아까 만든 getUser 함수의 파라미터에 넣어 호출합니다. 그래서 사용자가 존재하는지 확인하고, 존재하지 않는다면 Welcome 화면을 띄우겠습니다. 이때 uid 라우트 파라미터도 설정해주세요.

screens/SignInScreen.js - onSubmit

import {getUser} from '../lib/users';

(...)

const onSubmit = async () => {
  Keyboard.dismiss();

  const {email, password, confirmPassword} = form;

  if (isSignUp && password !== confirmPassword) {
    Alert.alert('실패', '비밀번호가 일치하지 않습니다.');
    console.log({password, confirmPassword});
  return;
  }

  setLoading(true);
  const info = {email, password};

  try {
  const {user} = isSignUp ? await signUp(info) : await signIn(info);
    const profile = await getUser(user.uid);
    if (!profile) {
      navigation.navigate('Welcome', {uid: user.uid});
    } else {
      // 구현 예정
    }
  } catch (e) {

    const messages = {
      'auth/email-already-in-use': '이미 가입된 이메일입니다.',
      'auth/wrong-password': '잘못된 비밀번호입니다.',
      'auth/user-not-found': '존재하지 않는 계정입니다.',
      'auth/invalid-email': '유효하지 않은 이메일 주소입니다.',
    };
    const msg = messages[e.code] || ${isSignUp ? '가입' : '로그인'} ;
    Alert.alert('실패', msg);
  } finally {
    setLoading(false);
  }
};
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.