diff --git a/src/CONFIG.js b/src/CONFIG.js index a60b17e1e75b..4c03fa63c48e 100644 --- a/src/CONFIG.js +++ b/src/CONFIG.js @@ -9,6 +9,8 @@ import CONST from './CONST'; const ENVIRONMENT = lodashGet(Config, 'ENVIRONMENT', CONST.ENVIRONMENT.DEV); const newExpensifyURL = Url.addTrailingForwardSlash(lodashGet(Config, 'NEW_EXPENSIFY_URL', 'https://new.expensify.com/')); const expensifyURL = Url.addTrailingForwardSlash(lodashGet(Config, 'EXPENSIFY_URL', 'https://www.expensify.com/')); +const stagingExpensifyURL = Url.addTrailingForwardSlash(lodashGet(Config, 'STAGING_EXPENSIFY_URL', 'https://staging.expensify.com/')); +const stagingSecureExpensifyUrl = Url.addTrailingForwardSlash(lodashGet(Config, 'STAGING_SECURE_EXPENSIFY_URL', 'https://staging-secure.expensify.com/')); const ngrokURL = Url.addTrailingForwardSlash(lodashGet(Config, 'NGROK_URL', '')); const secureNgrokURL = Url.addTrailingForwardSlash(lodashGet(Config, 'SECURE_NGROK_URL', '')); const secureExpensifyUrl = Url.addTrailingForwardSlash(lodashGet( @@ -46,12 +48,15 @@ export default { SECURE_EXPENSIFY_URL: secureURLRoot, NEW_EXPENSIFY_URL: newExpensifyURL, URL_API_ROOT: expensifyURLRoot, + STAGING_EXPENSIFY_URL: stagingExpensifyURL, + STAGING_SECURE_EXPENSIFY_URL: stagingSecureExpensifyUrl, PARTNER_NAME: lodashGet(Config, 'EXPENSIFY_PARTNER_NAME', 'chat-expensify-com'), PARTNER_PASSWORD: lodashGet(Config, 'EXPENSIFY_PARTNER_PASSWORD', 'e21965746fd75f82bb66'), EXPENSIFY_CASH_REFERER: 'ecash', CONCIERGE_URL: conciergeUrl, }, IS_IN_PRODUCTION: Platform.OS === 'web' ? process.env.NODE_ENV === 'production' : !__DEV__, + IS_IN_STAGING: ENVIRONMENT === CONST.ENVIRONMENT.STAGING, IS_USING_LOCAL_WEB: useNgrok || expensifyURLRoot.includes('dev'), PUSHER: { APP_KEY: lodashGet(Config, 'PUSHER_APP_KEY', '268df511a204fbb60884'), diff --git a/src/CONST.js b/src/CONST.js index dec32a497923..a2dbc0ef9478 100755 --- a/src/CONST.js +++ b/src/CONST.js @@ -232,7 +232,6 @@ const CONST = { MANAGE_CARDS_URL: 'domain_companycards', FEES_URL: `${USE_EXPENSIFY_URL}/fees`, CFPB_PREPAID_URL: 'https://cfpb.gov/prepaid', - STAGING_SECURE_URL: 'https://staging-secure.expensify.com/', STAGING_NEW_EXPENSIFY_URL: 'https://staging.new.expensify.com', // Use Environment.getEnvironmentURL to get the complete URL with port number diff --git a/src/components/TestToolMenu.js b/src/components/TestToolMenu.js index 1654854799d2..908c0a8db8a1 100644 --- a/src/components/TestToolMenu.js +++ b/src/components/TestToolMenu.js @@ -1,6 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import {withOnyx} from 'react-native-onyx'; +import lodashGet from 'lodash/get'; import styles from '../styles/styles'; import Switch from './Switch'; import Text from './Text'; @@ -18,7 +19,7 @@ const propTypes = { /** User object in Onyx */ user: PropTypes.shape({ /** Whether we should use the staging version of the secure API server */ - shouldUseSecureStaging: PropTypes.bool, + shouldUseStagingServer: PropTypes.bool, }), /** Network object in Onyx */ @@ -27,7 +28,7 @@ const propTypes = { const defaultProps = { user: { - shouldUseSecureStaging: false, + shouldUseStagingServer: false, }, }; @@ -39,10 +40,10 @@ const TestToolMenu = props => ( {/* Option to switch from using the staging secure endpoint or the production secure endpoint. This enables QA and internal testers to take advantage of sandbox environments for 3rd party services like Plaid and Onfido. */} - + User.setShouldUseSecureStaging(!props.user.shouldUseSecureStaging)} + isOn={lodashGet(props, 'user.shouldUseStagingServer', true)} + onToggle={() => User.setShouldUseStagingServer(!lodashGet(props, 'user.shouldUseStagingServer', true))} /> diff --git a/src/libs/HttpUtils.js b/src/libs/HttpUtils.js index 3e93e318232e..4c8fe2ee6b30 100644 --- a/src/libs/HttpUtils.js +++ b/src/libs/HttpUtils.js @@ -1,14 +1,15 @@ import Onyx from 'react-native-onyx'; +import lodashGet from 'lodash/get'; import _ from 'underscore'; import CONFIG from '../CONFIG'; import CONST from '../CONST'; import ONYXKEYS from '../ONYXKEYS'; import HttpsError from './Errors/HttpsError'; -let shouldUseSecureStaging = false; +let shouldUseStagingServer = false; Onyx.connect({ key: ONYXKEYS.USER, - callback: val => shouldUseSecureStaging = (val && _.isBoolean(val.shouldUseSecureStaging)) ? val.shouldUseSecureStaging : false, + callback: val => shouldUseStagingServer = lodashGet(val, 'shouldUseStagingServer', true), }); let shouldFailAllRequests = false; @@ -94,10 +95,11 @@ function xhr(command, data, type = CONST.NETWORK.METHOD.POST, shouldUseSecure = formData.append(key, val); }); + let apiRoot = shouldUseSecure ? CONFIG.EXPENSIFY.SECURE_EXPENSIFY_URL : CONFIG.EXPENSIFY.URL_API_ROOT; - if (shouldUseSecure && shouldUseSecureStaging) { - apiRoot = CONST.STAGING_SECURE_URL; + if (CONFIG.IS_IN_STAGING && shouldUseStagingServer) { + apiRoot = shouldUseSecure ? CONFIG.EXPENSIFY.STAGING_SECURE_EXPENSIFY_URL : CONFIG.EXPENSIFY.STAGING_EXPENSIFY_URL; } return processHTTPRequest(`${apiRoot}api?command=${command}`, type, formData, data.canCancel); diff --git a/src/libs/actions/User.js b/src/libs/actions/User.js index a7b71d9fd3b5..0d61d0ae0330 100644 --- a/src/libs/actions/User.js +++ b/src/libs/actions/User.js @@ -426,10 +426,10 @@ function updateChatPriorityMode(mode) { } /** - * @param {Boolean} shouldUseSecureStaging + * @param {Boolean} shouldUseStagingServer */ -function setShouldUseSecureStaging(shouldUseSecureStaging) { - Onyx.merge(ONYXKEYS.USER, {shouldUseSecureStaging}); +function setShouldUseStagingServer(shouldUseStagingServer) { + Onyx.merge(ONYXKEYS.USER, {shouldUseStagingServer}); } function clearUserErrorMessage() { @@ -484,7 +484,7 @@ export { isBlockedFromConcierge, subscribeToUserEvents, updatePreferredSkinTone, - setShouldUseSecureStaging, + setShouldUseStagingServer, clearUserErrorMessage, subscribeToExpensifyCardUpdates, updateFrequentlyUsedEmojis, diff --git a/src/pages/settings/PreferencesPage.js b/src/pages/settings/PreferencesPage.js index c96edfffddd5..e3d10d6fb4b1 100755 --- a/src/pages/settings/PreferencesPage.js +++ b/src/pages/settings/PreferencesPage.js @@ -30,7 +30,7 @@ const propTypes = { user: PropTypes.shape({ /** Whether or not the user is subscribed to news updates */ isSubscribedToNewsletter: PropTypes.bool, - shouldUseSecureStaging: PropTypes.bool, + shouldUseStagingServer: PropTypes.bool, }), ...withLocalizePropTypes,