* Make Navigator Public
* Make Screen.js export both Screen and Navigator
* Update Navigation.js to import Screen correctly
* Make Navigator public for Android too
* Forgot to export after importing
* ESLint fix
* ESLint fix
* ESLint Fix
* ESLint Fix
* added method for getting the currently visible screen ID. Can be useful to decide if logic should be applied according to screen visibility, for example: set buttons/title dynamically, or even determine that you don’t need to show the same screen again if it’s the current one that’s showing
* Implement getCurrentlyVisibleScreenId on Android
Can be used statically:
Navigation.getCurrentlyVisibleScreenId() - returns the unique screen
instance id
With a navigator instance:
await this.props.navigator.screenIsCurrentlyVisible() - resolves a
promise that checks if the current screen is visible
Currently startApp is called from global context which results in the
app being launched when headlessJs tasks run in the background.
In order to support this use case, while not breaking existing users,
this commit adds two mechanisms which should help users detrmine if
the native Activity is running and startApp can be called safely.
1. RNN.appLaunched event is emitted is SplashActivity starts and react
context has already been created. This is the use case of openeing
the app while headless js task was started or has just finished and
react context is in a "pasued" state.
2. Navigation.isAppLaunched() convenience method has been added.
It returns a promise which when resolved, indicates if the app
is launched and we should show the ui or not.
Usage
import {Navigation, NativeEventsReceiver} from 'react-native-navigation';
Promise.resolve(Navigation.isAppLaunched())
.then(appLaunched => {
if (appLaunched) {
startApp();
} else {
new NativeEventsReceiver().appLaunched(startApp);
}
});
function startApp() {
Navigation.startTabBasedApp({ ... });
}
This class handles all Android specific logic. Currently only startTabBasedApp is implemented,
but in the future all interactions with the UI will go here.