package com.reactnativenavigation.controllers; import android.content.Intent; import android.os.Bundle; import com.reactnativenavigation.NavigationApplication; import com.reactnativenavigation.params.ActivityParams; import com.reactnativenavigation.params.ScreenParams; import com.reactnativenavigation.params.parsers.ActivityParamsParser; import com.reactnativenavigation.params.parsers.ScreenParamsParser; public class NavigationCommandsHandler { private static final String ACTIVITY_PARAMS_BUNDLE = "ACTIVITY_PARAMS_BUNDLE"; static ActivityParams getActivityParams(Intent intent) { return ActivityParamsParser.parse(intent.getBundleExtra(NavigationCommandsHandler.ACTIVITY_PARAMS_BUNDLE)); } /** * start a new activity with CLEAR_TASK | NEW_TASK * * @param params ActivityParams as bundle */ public static void startApp(Bundle params) { Intent intent = new Intent(NavigationApplication.instance, NavigationActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(ACTIVITY_PARAMS_BUNDLE, params); NavigationApplication.instance.startActivity(intent); } public static void push(Bundle screenParams) { final NavigationActivity currentActivity = NavigationActivity.currentActivity; if (currentActivity == null) { return; } final ScreenParams params = ScreenParamsParser.parse(screenParams); NavigationApplication.instance.runOnMainThread(new Runnable() { @Override public void run() { currentActivity.push(params); } }); } public static void pop(Bundle screenParams) { final NavigationActivity currentActivity = NavigationActivity.currentActivity; if (currentActivity == null) { return; } final ScreenParams params = ScreenParamsParser.parse(screenParams); NavigationApplication.instance.runOnMainThread(new Runnable() { @Override public void run() { currentActivity.pop(params); } }); } public static void popToRoot(Bundle screenParams) { final NavigationActivity currentActivity = NavigationActivity.currentActivity; if (currentActivity == null) { return; } final ScreenParams params = ScreenParamsParser.parse(screenParams); NavigationApplication.instance.runOnMainThread(new Runnable() { @Override public void run() { currentActivity.popToRoot(params); } }); } public static void newStack(Bundle screenParams) { final NavigationActivity currentActivity = NavigationActivity.currentActivity; if (currentActivity == null) { return; } final ScreenParams params = ScreenParamsParser.parse(screenParams); NavigationApplication.instance.runOnMainThread(new Runnable() { @Override public void run() { currentActivity.newStack(params); } }); } public static void setTopBarVisible(final String screenInstanceID, final boolean hidden, final boolean animated) { final NavigationActivity currentActivity = NavigationActivity.currentActivity; if (currentActivity == null) { return; } NavigationApplication.instance.runOnMainThread(new Runnable() { @Override public void run() { currentActivity.setTopBarVisible(screenInstanceID, hidden, animated); } }); } }