| 1234567891011121314151617181920212223242526272829303132 | // @flow
import { getAppProp } from '../base/app';
import { toState } from '../base/redux';
import { getServerURL } from '../base/settings';
/**
 * Retrieves the default URL for the app. This can either come from a prop to
 * the root App component or be configured in the settings.
 *
 * @param {Function|Object} stateful - The redux store or {@code getState}
 * function.
 * @returns {string} - Default URL for the app.
 */
export function getDefaultURL(stateful: Function | Object) {
    const state = toState(stateful);
    const { app } = state['features/base/app'];
    // If the execution environment provides a Location abstraction (e.g. a Web
    // browser), then we'll presume it's the one and only base URL it can be on.
    const windowLocation = app.getWindowLocation();
    if (windowLocation) {
        const href = windowLocation.toString();
        if (href) {
            return href;
        }
    }
    return getAppProp(state, 'defaultURL') || getServerURL(state);
}
 |