I am trying to implement FB login functionality within my app using react native. One of the issues I am facing is that when I check to see if i have fb token stored, the initialization of the react navigator does not wait for the function to complete. I know this because I see in my debugger statements appearing for navigation initialization before my isLoggedIntoFB() returning a result. I am confused because I thought I was calling my functions in a synchronous way.
auth/index.js:
const FBSDK = require('react-native-fbsdk');
const {
  AccessToken,
    LoginManager,
} = FBSDK;
export const isLoggedIn = () => {
if(isLoggedIntoFB()) {
    return true;
} else {
    // returning false even though isLoggedIntoFB() prints "tokenFound" 
    // statement later
    return false;
}
}
export const OnLogout = () => {
 alert("Logging out");
logoutFB();
}
function isLoggedIntoFB() {
    alert("isLoggedIn");
AccessToken.getCurrentAccessToken().then(
            (data) => {
                console.log(data);
            if(data.accessToken != null){
                console.log("Token Found")
                return true;
            } else {
                console.log("No previous token found")
                return false;
            }
            }
        );
}
logoutFB = () => {
LoginManager.logOut();
//AccessToken.setCurrentAccessToken(null);
}
reducer/index.js:
import { combineReducers } from 'redux';
import { NavigationActions } from 'react-navigation';
import { AppNavigator } from '../navigators/AppNavigator';
import { isLoggedIn } from "../auth";
var initialNavState = (function() {
if(isLoggedIn() ) { // immediately evaluates to false
    console.log("LoggedIn!!!");
return AppNavigator.router.getStateForAction(NavigationActions.reset({
    index: 0,
    actions: [
      NavigationActions.navigate({
        routeName: 'LoggedIn',
      }),
    ],
}));
} else {
    console.log("not Logged In");
return AppNavigator.router.getStateForAction(NavigationActions.reset({
  index: 1,
  actions: [
    NavigationActions.navigate({ routeName: 'LoggedIn'}),
    NavigationActions.navigate({ routeName: 'LoggedOut'})
  ]
}));
}
}
) ();
function nav(state = initialNavState, action) {
  let nextState;
  switch (action.type) {
    case 'LOGIN':
      nextState = AppNavigator.router.getStateForAction(
        NavigationActions.back(),
        state
      );
      break;
    case 'LOGOUT':
      nextState = AppNavigator.router.getStateForAction(
        NavigationActions.navigate({ routeName: 'LoggedOut' }),
        state
      );
      break;
    default:
      nextState = AppNavigator.router.getStateForAction(action, state);
      break;
  }
  // Simply return the original `state` if `nextState` is null or undefined.
  return nextState || state;
}
