123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- import React, {Component} from 'react';
- import {AppRegistry} from 'react-native';
-
- import Navigation from './Navigation';
- import utils from './utils';
-
- import {RctActivity} from 'react-native-navigation';
-
- const resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
-
- function startSingleScreenApp(params) {
- let screen = params.screen;
- if (!screen.screen) {
- console.error('startSingleScreenApp(params): screen must include a screen property');
- return;
- }
-
- addNavigatorParams(screen);
- addNavigatorButtons(screen);
- addNavigationStyleParams(screen);
- screen.passProps = params.passProps;
- RctActivity.startSingleScreenApp(screen);
- }
-
- function startTabBasedApp(params) {
- if (!params.tabs) {
- console.error('startTabBasedApp(params): params.tabs is required');
- return;
- }
-
- params.tabs.forEach(function(tab, idx) {
- addNavigatorParams(tab, null, idx);
- addNavigatorButtons(tab);
- addNavigationStyleParams(tab);
- if (tab.icon) {
- const icon = resolveAssetSource(tab.icon);
- if (icon) {
- tab.icon = icon.uri;
- }
- }
- tab.passProps = params.passProps;
- });
-
- RctActivity.startTabBasedApp(params.tabs, params.tabsStyle);
- }
-
- function navigatorPush(navigator, params) {
- addNavigatorParams(params, navigator);
- addNavigatorButtons(params);
- addNavigationStyleParams(params);
- RctActivity.navigatorPush(params);
- }
-
- function navigatorSetButtons(navigator, navigatorEventID, params) {
- if (params.rightButtons) {
- params.rightButtons.forEach(function(button) {
- if (button.icon) {
- const icon = resolveAssetSource(button.icon);
- if (icon) {
- button.icon = icon.uri;
- }
- }
- });
- }
- RctActivity.setNavigatorButtons(params);
- }
-
- function navigatorPop(navigator, params) {
- addNavigatorParams(params, navigator);
- RctActivity.navigatorPop(params);
- }
-
- function navigatorPopToRoot(navigator, params) {
- RctActivity.navigatorPopToRoot({
- navigatorID: navigator.navigatorID,
- animated: !(params.animated !== false)
- });
- }
-
- function navigatorResetTo(navigator, params) {
- addNavigatorParams(params, navigator);
- addNavigatorButtons(params);
- addNavigationStyleParams(params);
- RctActivity.navigatorResetTo(params);
- }
-
- function navigatorSetTitle(navigator, params) {
- RctActivity.setNavigatorTitle(params);
- }
-
- function navigatorSwitchToTab(navigator, params) {
- RctActivity.switchToTab({
- tabIndex: params.tabIndex
- });
- }
-
- function navigatorToggleTabs(navigator, params) {
- RctActivity.toggleNavigatorTabs({
- hidden: params.to == 'hidden',
- animated: !(params.animated === false)
- });
- }
-
- function showModal(params) {
- addNavigatorParams(params);
- addNavigatorButtons(params);
- addNavigationStyleParams(params);
- RctActivity.showModal(params);
- }
-
- function dismissModal() {
- RctActivity.dismissModal();
- }
-
- function dismissAllModals(params) {
- RctActivity.dismissAllModals(params.animationType);
- }
-
- function addNavigatorParams(screen, navigator = null, idx = '') {
- screen.navigatorID = navigator ? navigator.navigatorID : utils.getRandomId() + '_nav' + idx;
- screen.screenInstanceID = utils.getRandomId();
- screen.navigatorEventID = screen.screenInstanceID + '_events';
- }
-
- function addNavigatorButtons(screen) {
- const Screen = Navigation.getRegisteredScreen(screen.screen);
- Object.assign(screen, Screen.navigatorButtons);
-
- // Get image uri from image id
- const rightButtons = screen.rightButtons ? screen.rightButtons : screen.navigatorButtons ?
- screen.navigatorButtons.rightButtons : null;
- if (rightButtons) {
- rightButtons.forEach(function(button) {
- if (button.icon) {
- const icon = resolveAssetSource(button.icon);
- if (icon) {
- button.icon = icon.uri;
- }
- }
- });
- }
- }
-
- function addNavigationStyleParams(screen) {
- const Screen = Navigation.getRegisteredScreen(screen.screen);
- screen.navigatorStyle = Screen.navigatorStyle;
- }
-
- export default {
- startTabBasedApp,
- startSingleScreenApp,
- navigatorPush,
- navigatorPop,
- navigatorPopToRoot,
- navigatorResetTo,
- showModal,
- dismissModal,
- dismissAllModals,
- navigatorSetButtons,
- navigatorSetTitle,
- navigatorSwitchToTab,
- navigatorToggleTabs
- }
|