더북(TheBook)

이제 setUser를 총 세 가지 시점에 호출해야 하는데, 호출되는 시점은 다음과 같습니다.

1. 프로필이 등록된 계정으로 로그인했을 때

2. Welcome 화면에서 프로필 정보를 등록했을 때

3. 앱을 새로 켜서 로그인 상태가 유지됐을 때

3번은 회원가입 기능을 완전히 마무리한 뒤 처리하기로 하고, 우선은 1번과 2번을 처리하겠습니다.

SignInScreen부터 수정해줍시다.

screens/SignInScreen.js

(...)
import {useUserContext} from '../contexts/UserContext';

function SignInScreen({navigation, route}) {
  const {isSignUp} = route.params || {};
  const [form, setForm] = useState({
    email: '',
    password: '',
    confirmPassword: '',
  });
  const [loading, setLoading] = useState();
  const {setUser} = useUserContext();

  const createChangeTextHandler = (name) => (value) => {
    setForm({...form, [name]: value});
  };

  const onSubmit = async () => {
    (...)
      
    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 {
        setUser(profile);
      }

(...)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.