trinny
trinny

Reputation: 232

React Saga Generator yield call undefined object

So I am using axios to call my server and get response, and tried it with redux-saga but with no success. When I console log inside my axios call I got response, but signInUser in yield call is undefined forever. What can be wrong here?

const signInUserM = async (email, password) => {
  await axios
    .get("https://localhost:44320/Account/token")
    .then(async function(response) {
      const { data } = response;
      axios.defaults.headers.common = {
        Authorization: `Bearer ${data.token}`
      };

      await axios
        .post("https://localhost:44320/Login", {
          email: email,
          password: password
        })
        .then(authUser => {
          console.log(authUser); // got response
          return authUser;
        })
        .catch(error => {
          console.log(error);
          return error;
        });
    })
    .catch(error => {
      console.log(error);
      return error;
    });
};

function* signInUserG({ payload }) {
  const { email, password } = payload;
  try {
    const signInUser = yield call(
      signInUserM,
      email,
      password
    );
    console.log(signInUser); // undefined forever
    if (signInUser) {
      // never gets here
      yield put(userSignInSuccess(signInUser.id));
    }
  } catch (error) {
    console.log(error);
  }
}

Thanks for any help!

Upvotes: 0

Views: 506

Answers (1)

Martin Kadlec
Martin Kadlec

Reputation: 4975

You forgot return in signInUserM and in front of the other await as well I think.

Upvotes: 1

Related Questions