From 1ed958ae149b23691be4acef9de77be9d5df2eab Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Fri, 19 Mar 2021 12:21:23 +0800 Subject: [PATCH 01/33] added flex: 1 to set password page --- src/styles/styles.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/styles/styles.js b/src/styles/styles.js index a63bf3039626..df9164dacf0c 100644 --- a/src/styles/styles.js +++ b/src/styles/styles.js @@ -326,6 +326,7 @@ const styles = { backgroundColor: themeColors.sidebar, padding: 20, minHeight: '100%', + flex: 1, }, signInPageLogo: { From 91580d59fc25dee99a967b71c8f55a06513561b5 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Mon, 22 Mar 2021 12:08:52 +0800 Subject: [PATCH 02/33] Make set password page UI more similar to sign in page UI --- .../Navigation/AppNavigator/PublicScreens.js | 2 +- src/pages/SetPasswordPage.js | 135 ------------------ .../SetPasswordForm/SetPasswordFormNarrow.js | 106 ++++++++++++++ .../SetPasswordForm/SetPasswordFormWide.js | 98 +++++++++++++ .../setpassword/SetPasswordForm/index.js | 20 +++ .../SetPasswordForm/index.native.js | 3 + src/pages/setpassword/SetPasswordPage.js | 22 +++ src/pages/setpassword/SetPasswordPageProps.js | 38 +++++ 8 files changed, 288 insertions(+), 136 deletions(-) delete mode 100644 src/pages/SetPasswordPage.js create mode 100644 src/pages/setpassword/SetPasswordForm/SetPasswordFormNarrow.js create mode 100644 src/pages/setpassword/SetPasswordForm/SetPasswordFormWide.js create mode 100644 src/pages/setpassword/SetPasswordForm/index.js create mode 100644 src/pages/setpassword/SetPasswordForm/index.native.js create mode 100644 src/pages/setpassword/SetPasswordPage.js create mode 100644 src/pages/setpassword/SetPasswordPageProps.js diff --git a/src/libs/Navigation/AppNavigator/PublicScreens.js b/src/libs/Navigation/AppNavigator/PublicScreens.js index 141695a74ff5..896dc599e90c 100644 --- a/src/libs/Navigation/AppNavigator/PublicScreens.js +++ b/src/libs/Navigation/AppNavigator/PublicScreens.js @@ -1,7 +1,7 @@ import React from 'react'; import {createStackNavigator} from '@react-navigation/stack'; import SignInPage from '../../../pages/signin/SignInPage'; -import SetPasswordPage from '../../../pages/SetPasswordPage'; +import SetPasswordPage from '../../../pages/setpassword/SetPasswordPage'; const RootStack = createStackNavigator(); const defaultScreenOptions = { diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js deleted file mode 100644 index ca6925dc88a6..000000000000 --- a/src/pages/SetPasswordPage.js +++ /dev/null @@ -1,135 +0,0 @@ -import React, {Component} from 'react'; -import { - SafeAreaView, - Text, - TextInput, - View, -} from 'react-native'; -import PropTypes from 'prop-types'; -import {withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; -import lodashGet from 'lodash.get'; -import styles from '../styles/styles'; -import ExpensifyCashLogo from '../../assets/images/expensify-cash.svg'; -import {setPassword} from '../libs/actions/Session'; -import ONYXKEYS from '../ONYXKEYS'; -import variables from '../styles/variables'; -import ButtonWithLoader from '../components/ButtonWithLoader'; - -const propTypes = { - /* Onyx Props */ - - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - - // The credentials of the logged in person - credentials: PropTypes.shape({ - // The email the user logged in with - login: PropTypes.string, - - // The password used to log in the user - password: PropTypes.string, - }), - - route: PropTypes.shape({ - params: PropTypes.shape({ - validateCode: PropTypes.string, - }), - }), -}; - -const defaultProps = { - account: {}, - credentials: {}, - route: { - params: {}, - }, -}; - -class SetPasswordPage extends Component { - constructor(props) { - super(props); - - this.submitForm = this.submitForm.bind(this); - - this.state = { - password: '', - formError: null, - }; - } - - /** - * Validate the form and then submit it - */ - submitForm() { - if (!this.state.password.trim()) { - this.setState({ - formError: 'Password cannot be blank', - }); - return; - } - - this.setState({ - formError: null, - }); - setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); - } - - render() { - return ( - <> - - - - - - - Enter a password - this.setState({password: text})} - onSubmitEditing={this.submitForm} - /> - - - {this.state.formError && ( - - {this.state.formError} - - )} - {!_.isEmpty(this.props.account.error) && ( - - {this.props.account.error} - - )} - - - - ); - } -} - -SetPasswordPage.propTypes = propTypes; -SetPasswordPage.defaultProps = defaultProps; - -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(SetPasswordPage); diff --git a/src/pages/setpassword/SetPasswordForm/SetPasswordFormNarrow.js b/src/pages/setpassword/SetPasswordForm/SetPasswordFormNarrow.js new file mode 100644 index 000000000000..3091c3fe787b --- /dev/null +++ b/src/pages/setpassword/SetPasswordForm/SetPasswordFormNarrow.js @@ -0,0 +1,106 @@ +import React from 'react'; +import { + Image, + Text, TextInput, View, +} from 'react-native'; +import {withOnyx} from 'react-native-onyx'; +import _ from 'underscore'; +import lodashGet from 'lodash.get'; +import styles from '../../../styles/styles'; +import ButtonWithLoader from '../../../components/ButtonWithLoader'; +import {setPassword} from '../../../libs/actions/Session'; +import ONYXKEYS from '../../../ONYXKEYS'; +import SetPasswordPageProps from '../SetPasswordPageProps'; +import welcomeScreenshot from '../../../../assets/images/welcome-screenshot.png'; + +class SetPasswordFormNarrow extends React.Component { + constructor(props) { + super(props); + + this.submitForm = this.submitForm.bind(this); + + this.state = { + password: '', + formError: null, + }; + } + + /** + * Validate the form and then submit it + */ + submitForm() { + if (!this.state.password.trim()) { + this.setState({ + formError: 'Password cannot be blank', + }); + return; + } + + this.setState({ + formError: null, + }); + setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); + } + + render() { + return ( + + + Enter a password: + this.setState({password: text})} + onSubmitEditing={this.submitForm} + autoFocus + /> + + + {this.state.formError && ( + + {this.state.formError} + + )} + {!_.isEmpty(this.props.account.error) && ( + + {this.props.account.error} + + )} + + + + + + + + With Expensify.cash, chat and payments are the same thing. + + + Money talks. And now that chat and payments are in one place, it's also easy. + {' '} + Your payments get to you as fast as you can get your point across. + + + + ); + } +} + +SetPasswordFormNarrow.propTypes = SetPasswordPageProps.propTypes; +SetPasswordFormNarrow.defaultProps = SetPasswordPageProps.defaultProps; + +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(SetPasswordFormNarrow); diff --git a/src/pages/setpassword/SetPasswordForm/SetPasswordFormWide.js b/src/pages/setpassword/SetPasswordForm/SetPasswordFormWide.js new file mode 100644 index 000000000000..0ea1518228b1 --- /dev/null +++ b/src/pages/setpassword/SetPasswordForm/SetPasswordFormWide.js @@ -0,0 +1,98 @@ +import React from 'react'; +import { + Text, TextInput, View, +} from 'react-native'; +import {withOnyx} from 'react-native-onyx'; +import _ from 'underscore'; +import lodashGet from 'lodash.get'; +import styles from '../../../styles/styles'; +import ButtonWithLoader from '../../../components/ButtonWithLoader'; +import {setPassword} from '../../../libs/actions/Session'; +import ONYXKEYS from '../../../ONYXKEYS'; +import SetPasswordPageProps from '../SetPasswordPageProps'; + +class SetPasswordFormWide extends React.Component { + constructor(props) { + super(props); + + this.submitForm = this.submitForm.bind(this); + + this.state = { + password: '', + formError: null, + }; + } + + /** + * Validate the form and then submit it + */ + submitForm() { + if (!this.state.password.trim()) { + this.setState({ + formError: 'Password cannot be blank', + }); + return; + } + + this.setState({ + formError: null, + }); + setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); + } + + render() { + return ( + + + Enter a password: + this.setState({password: text})} + onSubmitEditing={this.submitForm} + autoFocus + /> + + + {this.state.formError && ( + + {this.state.formError} + + )} + {!_.isEmpty(this.props.account.error) && ( + + {this.props.account.error} + + )} + + + + + With Expensify.cash, chat and payments are the same thing. + + + Money talks. And now that chat and payments are in one place, it's also easy. + {' '} + Your payments get to you as fast as you can get your point across. + + + + + ); + } +} + +SetPasswordFormWide.propTypes = SetPasswordPageProps.propTypes; +SetPasswordFormWide.defaultProps = SetPasswordPageProps.defaultProps; + +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(SetPasswordFormWide); diff --git a/src/pages/setpassword/SetPasswordForm/index.js b/src/pages/setpassword/SetPasswordForm/index.js new file mode 100644 index 000000000000..67360253a197 --- /dev/null +++ b/src/pages/setpassword/SetPasswordForm/index.js @@ -0,0 +1,20 @@ +/* eslint-disable react/jsx-props-no-spreading */ +import React from 'react'; +import withWindowDimensions, {windowDimensionsPropTypes} from '../../../components/withWindowDimensions'; +import SetPasswordFormNarrow from './SetPasswordFormNarrow'; +import SetPasswordFormWide from './SetPasswordFormWide'; + +const propTypes = { + ...windowDimensionsPropTypes, +}; + +const SetPasswordForm = props => ( + !props.isSmallScreenWidth + ? + : +); + +SetPasswordForm.propTypes = propTypes; +SetPasswordForm.displayName = 'SetPasswordForm'; + +export default withWindowDimensions(SetPasswordForm); diff --git a/src/pages/setpassword/SetPasswordForm/index.native.js b/src/pages/setpassword/SetPasswordForm/index.native.js new file mode 100644 index 000000000000..06a3d1aa9937 --- /dev/null +++ b/src/pages/setpassword/SetPasswordForm/index.native.js @@ -0,0 +1,3 @@ +import SetPasswordFormNarrow from './SetPasswordFormNarrow'; + +export default SetPasswordFormNarrow; diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js new file mode 100644 index 000000000000..77e90d154fab --- /dev/null +++ b/src/pages/setpassword/SetPasswordPage.js @@ -0,0 +1,22 @@ +import React from 'react'; +import {SafeAreaView,} from 'react-native'; +import styles from '../../styles/styles'; +import SignInPageLayout from '../signin/SignInPageLayout'; +import SetPasswordForm from './SetPasswordForm'; +import SetPasswordPageProps from './SetPasswordPageProps'; + +const SetPasswordPage = props => ( + + + + + +); + +SetPasswordPage.propTypes = SetPasswordPageProps.propTypes; +SetPasswordPage.defaultProps = SetPasswordPageProps.defaultProps; + +export default SetPasswordPage; diff --git a/src/pages/setpassword/SetPasswordPageProps.js b/src/pages/setpassword/SetPasswordPageProps.js new file mode 100644 index 000000000000..5e07ad0a9569 --- /dev/null +++ b/src/pages/setpassword/SetPasswordPageProps.js @@ -0,0 +1,38 @@ +import PropTypes from 'prop-types'; + +export default { + propTypes: { + /* Onyx Props */ + + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + + // The credentials of the logged in person + credentials: PropTypes.shape({ + // The email the user logged in with + login: PropTypes.string, + + // The password used to log in the user + password: PropTypes.string, + }), + + route: PropTypes.shape({ + params: PropTypes.shape({ + validateCode: PropTypes.string, + }), + }), + }, + defaultProps: { + account: {}, + credentials: {}, + route: { + params: {}, + }, + }, +}; From c2d8015e1a27d8e31d38101c06f415163f58c0f2 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Mon, 22 Mar 2021 12:15:31 +0800 Subject: [PATCH 03/33] fix eslint --- src/pages/setpassword/SetPasswordPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index 77e90d154fab..4f3d831d6dfb 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -1,5 +1,5 @@ import React from 'react'; -import {SafeAreaView,} from 'react-native'; +import {SafeAreaView} from 'react-native'; import styles from '../../styles/styles'; import SignInPageLayout from '../signin/SignInPageLayout'; import SetPasswordForm from './SetPasswordForm'; From f6b1ef689ab5d7616fa47f4749a28e8bad344205 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Tue, 23 Mar 2021 19:46:58 +0800 Subject: [PATCH 04/33] dry up and reduce the number of components --- ...PasswordFormWide.js => SetPasswordForm.js} | 45 ++------ .../SetPasswordForm/SetPasswordFormNarrow.js | 106 ------------------ .../setpassword/SetPasswordForm/index.js | 20 ---- .../SetPasswordForm/index.native.js | 3 - src/pages/setpassword/SetPasswordPage.js | 54 ++++++--- 5 files changed, 53 insertions(+), 175 deletions(-) rename src/pages/setpassword/{SetPasswordForm/SetPasswordFormWide.js => SetPasswordForm.js} (57%) delete mode 100644 src/pages/setpassword/SetPasswordForm/SetPasswordFormNarrow.js delete mode 100644 src/pages/setpassword/SetPasswordForm/index.js delete mode 100644 src/pages/setpassword/SetPasswordForm/index.native.js diff --git a/src/pages/setpassword/SetPasswordForm/SetPasswordFormWide.js b/src/pages/setpassword/SetPasswordForm.js similarity index 57% rename from src/pages/setpassword/SetPasswordForm/SetPasswordFormWide.js rename to src/pages/setpassword/SetPasswordForm.js index 0ea1518228b1..3a548f5ba528 100644 --- a/src/pages/setpassword/SetPasswordForm/SetPasswordFormWide.js +++ b/src/pages/setpassword/SetPasswordForm.js @@ -1,20 +1,15 @@ -import React from 'react'; -import { - Text, TextInput, View, -} from 'react-native'; -import {withOnyx} from 'react-native-onyx'; +import {Text, TextInput, View} from 'react-native'; import _ from 'underscore'; +import React from 'react'; import lodashGet from 'lodash.get'; -import styles from '../../../styles/styles'; -import ButtonWithLoader from '../../../components/ButtonWithLoader'; -import {setPassword} from '../../../libs/actions/Session'; -import ONYXKEYS from '../../../ONYXKEYS'; -import SetPasswordPageProps from '../SetPasswordPageProps'; +import styles from '../../styles/styles'; +import ButtonWithLoader from '../../components/ButtonWithLoader'; +import {setPassword} from '../../libs/actions/Session'; +import SetPasswordPageProps from './SetPasswordPageProps'; -class SetPasswordFormWide extends React.Component { +class SetPasswordForm extends React.Component { constructor(props) { super(props); - this.submitForm = this.submitForm.bind(this); this.state = { @@ -42,7 +37,7 @@ class SetPasswordFormWide extends React.Component { render() { return ( - + <> Enter a password: )} - - - - - With Expensify.cash, chat and payments are the same thing. - - - Money talks. And now that chat and payments are in one place, it's also easy. - {' '} - Your payments get to you as fast as you can get your point across. - - - - + ); } } -SetPasswordFormWide.propTypes = SetPasswordPageProps.propTypes; -SetPasswordFormWide.defaultProps = SetPasswordPageProps.defaultProps; +SetPasswordForm.propTypes = SetPasswordPageProps.propTypes; +SetPasswordForm.defaultProps = SetPasswordPageProps.defaultProps; -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(SetPasswordFormWide); +export default SetPasswordForm; diff --git a/src/pages/setpassword/SetPasswordForm/SetPasswordFormNarrow.js b/src/pages/setpassword/SetPasswordForm/SetPasswordFormNarrow.js deleted file mode 100644 index 3091c3fe787b..000000000000 --- a/src/pages/setpassword/SetPasswordForm/SetPasswordFormNarrow.js +++ /dev/null @@ -1,106 +0,0 @@ -import React from 'react'; -import { - Image, - Text, TextInput, View, -} from 'react-native'; -import {withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; -import lodashGet from 'lodash.get'; -import styles from '../../../styles/styles'; -import ButtonWithLoader from '../../../components/ButtonWithLoader'; -import {setPassword} from '../../../libs/actions/Session'; -import ONYXKEYS from '../../../ONYXKEYS'; -import SetPasswordPageProps from '../SetPasswordPageProps'; -import welcomeScreenshot from '../../../../assets/images/welcome-screenshot.png'; - -class SetPasswordFormNarrow extends React.Component { - constructor(props) { - super(props); - - this.submitForm = this.submitForm.bind(this); - - this.state = { - password: '', - formError: null, - }; - } - - /** - * Validate the form and then submit it - */ - submitForm() { - if (!this.state.password.trim()) { - this.setState({ - formError: 'Password cannot be blank', - }); - return; - } - - this.setState({ - formError: null, - }); - setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); - } - - render() { - return ( - - - Enter a password: - this.setState({password: text})} - onSubmitEditing={this.submitForm} - autoFocus - /> - - - {this.state.formError && ( - - {this.state.formError} - - )} - {!_.isEmpty(this.props.account.error) && ( - - {this.props.account.error} - - )} - - - - - - - - With Expensify.cash, chat and payments are the same thing. - - - Money talks. And now that chat and payments are in one place, it's also easy. - {' '} - Your payments get to you as fast as you can get your point across. - - - - ); - } -} - -SetPasswordFormNarrow.propTypes = SetPasswordPageProps.propTypes; -SetPasswordFormNarrow.defaultProps = SetPasswordPageProps.defaultProps; - -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(SetPasswordFormNarrow); diff --git a/src/pages/setpassword/SetPasswordForm/index.js b/src/pages/setpassword/SetPasswordForm/index.js deleted file mode 100644 index 67360253a197..000000000000 --- a/src/pages/setpassword/SetPasswordForm/index.js +++ /dev/null @@ -1,20 +0,0 @@ -/* eslint-disable react/jsx-props-no-spreading */ -import React from 'react'; -import withWindowDimensions, {windowDimensionsPropTypes} from '../../../components/withWindowDimensions'; -import SetPasswordFormNarrow from './SetPasswordFormNarrow'; -import SetPasswordFormWide from './SetPasswordFormWide'; - -const propTypes = { - ...windowDimensionsPropTypes, -}; - -const SetPasswordForm = props => ( - !props.isSmallScreenWidth - ? - : -); - -SetPasswordForm.propTypes = propTypes; -SetPasswordForm.displayName = 'SetPasswordForm'; - -export default withWindowDimensions(SetPasswordForm); diff --git a/src/pages/setpassword/SetPasswordForm/index.native.js b/src/pages/setpassword/SetPasswordForm/index.native.js deleted file mode 100644 index 06a3d1aa9937..000000000000 --- a/src/pages/setpassword/SetPasswordForm/index.native.js +++ /dev/null @@ -1,3 +0,0 @@ -import SetPasswordFormNarrow from './SetPasswordFormNarrow'; - -export default SetPasswordFormNarrow; diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index 4f3d831d6dfb..63011349a6ce 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -1,22 +1,50 @@ import React from 'react'; -import {SafeAreaView} from 'react-native'; +import {SafeAreaView, Text, View, Image} from 'react-native'; import styles from '../../styles/styles'; import SignInPageLayout from '../signin/SignInPageLayout'; -import SetPasswordForm from './SetPasswordForm'; import SetPasswordPageProps from './SetPasswordPageProps'; +import welcomeScreenshot from '../../../assets/images/welcome-screenshot.png'; +import withWindowDimensions from '../../components/withWindowDimensions'; +import SetPasswordForm from './SetPasswordForm'; -const SetPasswordPage = props => ( - - - - - -); +const SetPasswordPage = (props) => { + const welcomeText = ( + + + With Expensify.cash, chat and payments are the same thing. + + + Money talks. And now that chat and payments are in one place, it's also easy. + {' '} + Your payments get to you as fast as you can get your point across. + + + ); + return ( + + + + + {props.isSmallScreenWidth && ( + + + + )} + {welcomeText} + + + + ); +}; SetPasswordPage.propTypes = SetPasswordPageProps.propTypes; SetPasswordPage.defaultProps = SetPasswordPageProps.defaultProps; -export default SetPasswordPage; +export default withWindowDimensions(SetPasswordPage); From 12b3938b6330aa27129855d6dfc581e9af0aa14d Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Tue, 23 Mar 2021 20:00:48 +0800 Subject: [PATCH 05/33] fix styles --- ios/ExpensifyCash.xcodeproj/project.pbxproj | 82 ++++++++++----------- ios/Podfile.lock | 2 +- src/pages/setpassword/SetPasswordPage.js | 6 +- 3 files changed, 45 insertions(+), 45 deletions(-) diff --git a/ios/ExpensifyCash.xcodeproj/project.pbxproj b/ios/ExpensifyCash.xcodeproj/project.pbxproj index 1cce13f3aa8e..c5a01d9565c0 100644 --- a/ios/ExpensifyCash.xcodeproj/project.pbxproj +++ b/ios/ExpensifyCash.xcodeproj/project.pbxproj @@ -13,17 +13,17 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 184256DF4A33056F828927C6 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */; }; 1E76D5212522316A005A268F /* GTAmericaExp-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */; }; 1E76D5222522316A005A268F /* GTAmericaExp-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */; }; 1E76D5232522316A005A268F /* GTAmericaExp-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */; }; 1E76D5242522316A005A268F /* GTAmericaExp-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */; }; 1E76D5252522316A005A268F /* GTAmericaExp-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */; }; + 376CCF91B872607D190AF0F6 /* libPods-ExpensifyCash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */; }; 425866037F4C482AAB46CB8B /* GTAmericaExp-BdIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */; }; 6856B78873B64C44A92E51DB /* GTAmericaExp-MdIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 8821A238A081483FA947BC4E /* GTAmericaExp-RgIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */; }; - 8C86654500DCC843A74147B5 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2AB27DDDFCCE3CD100EA0C /* libPods-ExpensifyCash-ExpensifyCashTests.a */; }; - BB6CECBDA023256B6B955321 /* libPods-ExpensifyCash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F2C8BDCC1FF0B64AE2DFC9B /* libPods-ExpensifyCash.a */; }; E9DF872D2525201700607FDC /* AirshipConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = E9DF872C2525201700607FDC /* AirshipConfig.plist */; }; /* End PBXBuildFile section */ @@ -49,25 +49,25 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ExpensifyCash/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ExpensifyCash/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ExpensifyCash/main.m; sourceTree = ""; }; + 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Light.otf"; path = "../assets/fonts/GTAmericaExp-Light.otf"; sourceTree = ""; }; - 6F2C8BDCC1FF0B64AE2DFC9B /* libPods-ExpensifyCash.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.debug.xcconfig"; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ExpensifyCash/LaunchScreen.storyboard; sourceTree = ""; }; 8437A5A38F2047E0BCCD7C2F /* GTAmericaExpMono-Rg.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExpMono-Rg.otf"; path = "../assets/fonts/GTAmericaExpMono-Rg.otf"; sourceTree = ""; }; + 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash-ExpensifyCashTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Regular.otf"; path = "../assets/fonts/GTAmericaExp-Regular.otf"; sourceTree = ""; }; + 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; sourceTree = ""; }; 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-RgIt.otf"; path = "../assets/fonts/GTAmericaExp-RgIt.otf"; sourceTree = ""; }; - A13EE2CFAF952F935D201D2F /* Pods-ExpensifyCash.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.release.xcconfig"; sourceTree = ""; }; A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Thin.otf"; path = "../assets/fonts/GTAmericaExp-Thin.otf"; sourceTree = ""; }; A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Bold.otf"; path = "../assets/fonts/GTAmericaExp-Bold.otf"; sourceTree = ""; }; A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-BdIt.otf"; path = "../assets/fonts/GTAmericaExp-BdIt.otf"; sourceTree = ""; }; + A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; sourceTree = ""; }; AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Medium.otf"; path = "../assets/fonts/GTAmericaExp-Medium.otf"; sourceTree = ""; }; - AF728B3FCBC8C2731C4DA7B4 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; sourceTree = ""; }; DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-MdIt.otf"; path = "../assets/fonts/GTAmericaExp-MdIt.otf"; sourceTree = ""; }; - E7967C67752432EA2031954F /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; sourceTree = ""; }; E9DF872C2525201700607FDC /* AirshipConfig.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AirshipConfig.plist; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; - ED2AB27DDDFCCE3CD100EA0C /* libPods-ExpensifyCash-ExpensifyCashTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash-ExpensifyCashTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - F4BC0E78FF1E9BD8B2D38C66 /* Pods-ExpensifyCash.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.debug.xcconfig"; sourceTree = ""; }; + EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -75,7 +75,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8C86654500DCC843A74147B5 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */, + 184256DF4A33056F828927C6 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -83,7 +83,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BB6CECBDA023256B6B955321 /* libPods-ExpensifyCash.a in Frameworks */, + 376CCF91B872607D190AF0F6 /* libPods-ExpensifyCash.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -128,8 +128,8 @@ children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - 6F2C8BDCC1FF0B64AE2DFC9B /* libPods-ExpensifyCash.a */, - ED2AB27DDDFCCE3CD100EA0C /* libPods-ExpensifyCash-ExpensifyCashTests.a */, + 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */, + 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */, ); name = Frameworks; sourceTree = ""; @@ -185,10 +185,10 @@ EC29677F0A49C2946A495A33 /* Pods */ = { isa = PBXGroup; children = ( - F4BC0E78FF1E9BD8B2D38C66 /* Pods-ExpensifyCash.debug.xcconfig */, - A13EE2CFAF952F935D201D2F /* Pods-ExpensifyCash.release.xcconfig */, - AF728B3FCBC8C2731C4DA7B4 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */, - E7967C67752432EA2031954F /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */, + 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */, + EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */, + A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */, + 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -200,11 +200,11 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExpensifyCashTests" */; buildPhases = ( - AEFD4743761AD0E2373D0494 /* [CP] Check Pods Manifest.lock */, + 31F29FE5E41ACA3441D1941B /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - F2B8013B9E9ECAB2B509E702 /* [CP] Copy Pods Resources */, + C5DF5C3874F91B17AFCBCB52 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -220,15 +220,15 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ExpensifyCash" */; buildPhases = ( - 6A9F4436BADC311F14A4349F /* [CP] Check Pods Manifest.lock */, + 209CB27AD34BA50C3E1F4868 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - C9071365B664DE0D85DC5195 /* [CP] Copy Pods Resources */, - CF6259710B5A341870372EA2 /* [CP-User] [RNFB] Core Configuration */, - ED5B8E90A3384FC6A128FB95 /* [CP-User] [RNFB] Crashlytics Configuration */, + 3BD1D02836B845CFF3D9E447 /* [CP] Copy Pods Resources */, + B079B9CCBE57FB68AFC8F3B4 /* [CP-User] [RNFB] Core Configuration */, + F5D4F18823CA58548DB9253C /* [CP-User] [RNFB] Crashlytics Configuration */, ); buildRules = ( ); @@ -323,7 +323,7 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 6A9F4436BADC311F14A4349F /* [CP] Check Pods Manifest.lock */ = { + 209CB27AD34BA50C3E1F4868 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +345,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - AEFD4743761AD0E2373D0494 /* [CP] Check Pods Manifest.lock */ = { + 31F29FE5E41ACA3441D1941B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -367,7 +367,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - C9071365B664DE0D85DC5195 /* [CP] Copy Pods Resources */ = { + 3BD1D02836B845CFF3D9E447 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -495,7 +495,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash-resources.sh\"\n"; showEnvVarsInLog = 0; }; - CF6259710B5A341870372EA2 /* [CP-User] [RNFB] Core Configuration */ = { + B079B9CCBE57FB68AFC8F3B4 /* [CP-User] [RNFB] Core Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -505,17 +505,7 @@ shellPath = /bin/sh; shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; }; - ED5B8E90A3384FC6A128FB95 /* [CP-User] [RNFB] Crashlytics Configuration */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - name = "[CP-User] [RNFB] Crashlytics Configuration"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; - }; - F2B8013B9E9ECAB2B509E702 /* [CP] Copy Pods Resources */ = { + C5DF5C3874F91B17AFCBCB52 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -643,6 +633,16 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; + F5D4F18823CA58548DB9253C /* [CP-User] [RNFB] Crashlytics Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] [RNFB] Crashlytics Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; + }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -695,7 +695,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AF728B3FCBC8C2731C4DA7B4 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */; + baseConfigurationReference = A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -719,7 +719,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E7967C67752432EA2031954F /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */; + baseConfigurationReference = 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -741,7 +741,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F4BC0E78FF1E9BD8B2D38C66 /* Pods-ExpensifyCash.debug.xcconfig */; + baseConfigurationReference = 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -773,7 +773,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A13EE2CFAF952F935D201D2F /* Pods-ExpensifyCash.release.xcconfig */; + baseConfigurationReference = EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 352903821326..f156ce086c14 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -696,4 +696,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 41b806c7f131f87b716be1f1f9377532d6c9e43a -COCOAPODS: 1.10.0 +COCOAPODS: 1.10.1 diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index 63011349a6ce..b055d4393806 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -9,8 +9,8 @@ import SetPasswordForm from './SetPasswordForm'; const SetPasswordPage = (props) => { const welcomeText = ( - - + + With Expensify.cash, chat and payments are the same thing. @@ -37,8 +37,8 @@ const SetPasswordPage = (props) => { /> )} - {welcomeText} + {welcomeText} ); From fc2808e09593af6aaa445fd37cea1a081f56bbb6 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Tue, 23 Mar 2021 20:01:40 +0800 Subject: [PATCH 06/33] fix jsx style --- src/pages/setpassword/SetPasswordPage.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index b055d4393806..5a42f52f8e29 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -1,5 +1,7 @@ import React from 'react'; -import {SafeAreaView, Text, View, Image} from 'react-native'; +import { + SafeAreaView, Text, View, Image, +} from 'react-native'; import styles from '../../styles/styles'; import SignInPageLayout from '../signin/SignInPageLayout'; import SetPasswordPageProps from './SetPasswordPageProps'; From de2ab0373575150052cf3bf5074dd98c9f5a02c5 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 09:07:02 +0800 Subject: [PATCH 07/33] remove accidentally committed files --- ios/ExpensifyCash.xcodeproj/project.pbxproj | 950 -------------------- ios/Podfile.lock | 699 -------------- 2 files changed, 1649 deletions(-) delete mode 100644 ios/ExpensifyCash.xcodeproj/project.pbxproj delete mode 100644 ios/Podfile.lock diff --git a/ios/ExpensifyCash.xcodeproj/project.pbxproj b/ios/ExpensifyCash.xcodeproj/project.pbxproj deleted file mode 100644 index c5a01d9565c0..000000000000 --- a/ios/ExpensifyCash.xcodeproj/project.pbxproj +++ /dev/null @@ -1,950 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* ExpensifyCashTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ExpensifyCashTests.m */; }; - 0F5BE0CE252686330097D869 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */; }; - 12DD1878FCB9487C9F031C86 /* GTAmericaExpMono-Rg.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8437A5A38F2047E0BCCD7C2F /* GTAmericaExpMono-Rg.otf */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 184256DF4A33056F828927C6 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */; }; - 1E76D5212522316A005A268F /* GTAmericaExp-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */; }; - 1E76D5222522316A005A268F /* GTAmericaExp-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */; }; - 1E76D5232522316A005A268F /* GTAmericaExp-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */; }; - 1E76D5242522316A005A268F /* GTAmericaExp-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */; }; - 1E76D5252522316A005A268F /* GTAmericaExp-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */; }; - 376CCF91B872607D190AF0F6 /* libPods-ExpensifyCash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */; }; - 425866037F4C482AAB46CB8B /* GTAmericaExp-BdIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */; }; - 6856B78873B64C44A92E51DB /* GTAmericaExp-MdIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */; }; - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - 8821A238A081483FA947BC4E /* GTAmericaExp-RgIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */; }; - E9DF872D2525201700607FDC /* AirshipConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = E9DF872C2525201700607FDC /* AirshipConfig.plist */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = ExpensifyCash; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; - 00E356EE1AD99517003FC87E /* ExpensifyCashTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExpensifyCashTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* ExpensifyCashTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExpensifyCashTests.m; sourceTree = ""; }; - 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* Expensify.cash.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Expensify.cash.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ExpensifyCash/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = ExpensifyCash/AppDelegate.m; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ExpensifyCash/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ExpensifyCash/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ExpensifyCash/main.m; sourceTree = ""; }; - 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Light.otf"; path = "../assets/fonts/GTAmericaExp-Light.otf"; sourceTree = ""; }; - 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.debug.xcconfig"; sourceTree = ""; }; - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ExpensifyCash/LaunchScreen.storyboard; sourceTree = ""; }; - 8437A5A38F2047E0BCCD7C2F /* GTAmericaExpMono-Rg.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExpMono-Rg.otf"; path = "../assets/fonts/GTAmericaExpMono-Rg.otf"; sourceTree = ""; }; - 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash-ExpensifyCashTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Regular.otf"; path = "../assets/fonts/GTAmericaExp-Regular.otf"; sourceTree = ""; }; - 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; sourceTree = ""; }; - 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-RgIt.otf"; path = "../assets/fonts/GTAmericaExp-RgIt.otf"; sourceTree = ""; }; - A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Thin.otf"; path = "../assets/fonts/GTAmericaExp-Thin.otf"; sourceTree = ""; }; - A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Bold.otf"; path = "../assets/fonts/GTAmericaExp-Bold.otf"; sourceTree = ""; }; - A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-BdIt.otf"; path = "../assets/fonts/GTAmericaExp-BdIt.otf"; sourceTree = ""; }; - A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; sourceTree = ""; }; - AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Medium.otf"; path = "../assets/fonts/GTAmericaExp-Medium.otf"; sourceTree = ""; }; - DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-MdIt.otf"; path = "../assets/fonts/GTAmericaExp-MdIt.otf"; sourceTree = ""; }; - E9DF872C2525201700607FDC /* AirshipConfig.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AirshipConfig.plist; sourceTree = ""; }; - ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; - ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; - EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.release.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 00E356EB1AD99517003FC87E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 184256DF4A33056F828927C6 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 376CCF91B872607D190AF0F6 /* libPods-ExpensifyCash.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* ExpensifyCashTests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* ExpensifyCashTests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = ExpensifyCashTests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* ExpensifyCash */ = { - isa = PBXGroup; - children = ( - 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */, - E9DF872C2525201700607FDC /* AirshipConfig.plist */, - 008F07F21AC5B25A0029DE68 /* main.jsbundle */, - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = ExpensifyCash; - sourceTree = ""; - }; - 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { - isa = PBXGroup; - children = ( - ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */, - 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - 832341AE1AAA6A7D00B99B32 /* Libraries */ = { - isa = PBXGroup; - children = ( - ); - name = Libraries; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* ExpensifyCash */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* ExpensifyCashTests */, - 83CBBA001A601CBA00E9B192 /* Products */, - 2D16E6871FA4F8E400B85C8A /* Frameworks */, - EC29677F0A49C2946A495A33 /* Pods */, - A9EA265D209D4558995C9BD4 /* Resources */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - usesTabs = 0; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* Expensify.cash.app */, - 00E356EE1AD99517003FC87E /* ExpensifyCashTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - A9EA265D209D4558995C9BD4 /* Resources */ = { - isa = PBXGroup; - children = ( - A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */, - 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */, - AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */, - 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */, - A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */, - 8437A5A38F2047E0BCCD7C2F /* GTAmericaExpMono-Rg.otf */, - A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */, - DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */, - 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */, - ); - name = Resources; - sourceTree = ""; - }; - EC29677F0A49C2946A495A33 /* Pods */ = { - isa = PBXGroup; - children = ( - 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */, - EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */, - A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */, - 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* ExpensifyCashTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExpensifyCashTests" */; - buildPhases = ( - 31F29FE5E41ACA3441D1941B /* [CP] Check Pods Manifest.lock */, - 00E356EA1AD99517003FC87E /* Sources */, - 00E356EB1AD99517003FC87E /* Frameworks */, - 00E356EC1AD99517003FC87E /* Resources */, - C5DF5C3874F91B17AFCBCB52 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00E356F51AD99517003FC87E /* PBXTargetDependency */, - ); - name = ExpensifyCashTests; - productName = ExpensifyCashTests; - productReference = 00E356EE1AD99517003FC87E /* ExpensifyCashTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 13B07F861A680F5B00A75B9A /* ExpensifyCash */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ExpensifyCash" */; - buildPhases = ( - 209CB27AD34BA50C3E1F4868 /* [CP] Check Pods Manifest.lock */, - FD10A7F022414F080027D42C /* Start Packager */, - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 3BD1D02836B845CFF3D9E447 /* [CP] Copy Pods Resources */, - B079B9CCBE57FB68AFC8F3B4 /* [CP-User] [RNFB] Core Configuration */, - F5D4F18823CA58548DB9253C /* [CP-User] [RNFB] Crashlytics Configuration */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ExpensifyCash; - productName = ExpensifyCash; - productReference = 13B07F961A680F5B00A75B9A /* Expensify.cash.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1130; - TargetAttributes = { - 00E356ED1AD99517003FC87E = { - CreatedOnToolsVersion = 6.2; - ProvisioningStyle = Automatic; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; - 13B07F861A680F5B00A75B9A = { - DevelopmentTeam = 368M544MTT; - LastSwiftMigration = 1120; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ExpensifyCash" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* ExpensifyCash */, - 00E356ED1AD99517003FC87E /* ExpensifyCashTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 00E356EC1AD99517003FC87E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, - 0F5BE0CE252686330097D869 /* GoogleService-Info.plist in Resources */, - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - E9DF872D2525201700607FDC /* AirshipConfig.plist in Resources */, - 12DD1878FCB9487C9F031C86 /* GTAmericaExpMono-Rg.otf in Resources */, - 1E76D5212522316A005A268F /* GTAmericaExp-Bold.otf in Resources */, - 1E76D5222522316A005A268F /* GTAmericaExp-Light.otf in Resources */, - 1E76D5232522316A005A268F /* GTAmericaExp-Medium.otf in Resources */, - 1E76D5242522316A005A268F /* GTAmericaExp-Regular.otf in Resources */, - 1E76D5252522316A005A268F /* GTAmericaExp-Thin.otf in Resources */, - 425866037F4C482AAB46CB8B /* GTAmericaExp-BdIt.otf in Resources */, - 6856B78873B64C44A92E51DB /* GTAmericaExp-MdIt.otf in Resources */, - 8821A238A081483FA947BC4E /* GTAmericaExp-RgIt.otf in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Bundle React Native code and images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; - }; - 209CB27AD34BA50C3E1F4868 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ExpensifyCash-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 31F29FE5E41ACA3441D1941B /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ExpensifyCash-ExpensifyCashTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 3BD1D02836B845CFF3D9E447 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash-resources.sh", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAAutomationActions.plist", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageBannerContentView.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageBannerView.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageButtonView.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageFullScreenViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageHTMLViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageModalViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageResizableViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAFrequencyLimits.xcdatamodeld", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UADefaultActions.plist", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UADefaultActionsTvOS.plist", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UANativeBridge", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UANotificationCategories.plist", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ar.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/cs.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/da.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/de.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/en.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/es-419.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/es.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/fi.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/fr.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/hi.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/hu.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/id.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/it.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/iw.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ja.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ko.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ms.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/nl.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/no.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pl.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pt-PT.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pt.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ro.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ru.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/sk.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/sv.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/th.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/tr.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UAEvents.xcdatamodeld", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UARemoteData.xcdatamodeld", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/vi.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/zh-Hans.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/zh-Hant.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipExtendedActions/Resources/UAExtendedActions.plist", - "${PODS_ROOT}/Airship/Airship/AirshipExtendedActions/Resources/UARateAppPromptView.xib", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UADefaultMessageCenterListViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UADefaultMessageCenterMessageViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterActions.plist", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterListCell.xib", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterPlaceholderIcon.png", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAInbox.xcdatamodeld", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAAutomationActions.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageBannerContentView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageBannerView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageButtonView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageFullScreenViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageHTMLViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageModalViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageResizableViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAAutomation.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAFrequencyLimits.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultActions.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultActionsTvOS.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UANativeBridge", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UANotificationCategories.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ar.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/cs.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/da.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/de.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/en.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es-419.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fi.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fr.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hi.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hu.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/id.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/it.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/iw.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ja.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ko.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ms.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nl.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/no.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pl.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt-PT.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ro.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ru.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sk.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sv.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/th.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/tr.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAEvents.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UARemoteData.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/vi.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh-Hans.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh-Hant.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAExtendedActions.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UARateAppPromptView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultMessageCenterListViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultMessageCenterMessageViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterActions.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterListCell.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterPlaceholderIcon.png", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInbox.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - B079B9CCBE57FB68AFC8F3B4 /* [CP-User] [RNFB] Core Configuration */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - name = "[CP-User] [RNFB] Core Configuration"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; - }; - C5DF5C3874F91B17AFCBCB52 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests-resources.sh", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAAutomationActions.plist", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageBannerContentView.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageBannerView.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageButtonView.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageFullScreenViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageHTMLViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageModalViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageResizableViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld", - "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAFrequencyLimits.xcdatamodeld", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UADefaultActions.plist", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UADefaultActionsTvOS.plist", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UANativeBridge", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UANotificationCategories.plist", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ar.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/cs.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/da.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/de.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/en.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/es-419.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/es.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/fi.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/fr.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/hi.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/hu.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/id.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/it.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/iw.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ja.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ko.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ms.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/nl.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/no.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pl.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pt-PT.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pt.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ro.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ru.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/sk.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/sv.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/th.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/tr.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UAEvents.xcdatamodeld", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UARemoteData.xcdatamodeld", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/vi.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/zh-Hans.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/zh-Hant.lproj", - "${PODS_ROOT}/Airship/Airship/AirshipExtendedActions/Resources/UAExtendedActions.plist", - "${PODS_ROOT}/Airship/Airship/AirshipExtendedActions/Resources/UARateAppPromptView.xib", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UADefaultMessageCenterListViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UADefaultMessageCenterMessageViewController.xib", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterActions.plist", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterListCell.xib", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterPlaceholderIcon.png", - "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAInbox.xcdatamodeld", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAAutomationActions.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageBannerContentView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageBannerView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageButtonView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageFullScreenViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageHTMLViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageModalViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageResizableViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAAutomation.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAFrequencyLimits.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultActions.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultActionsTvOS.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UANativeBridge", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UANotificationCategories.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ar.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/cs.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/da.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/de.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/en.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es-419.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fi.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fr.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hi.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hu.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/id.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/it.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/iw.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ja.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ko.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ms.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nl.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/no.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pl.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt-PT.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ro.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ru.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sk.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sv.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/th.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/tr.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAEvents.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UARemoteData.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/vi.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh-Hans.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh-Hant.lproj", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAExtendedActions.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UARateAppPromptView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultMessageCenterListViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultMessageCenterMessageViewController.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterActions.plist", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterListCell.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterPlaceholderIcon.png", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInbox.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - F5D4F18823CA58548DB9253C /* [CP-User] [RNFB] Crashlytics Configuration */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - name = "[CP-User] [RNFB] Crashlytics Configuration"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; - }; - FD10A7F022414F080027D42C /* Start Packager */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Start Packager"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* ExpensifyCashTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* ExpensifyCash */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = ExpensifyCashTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ExpensifyCash.app/ExpensifyCash"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEVELOPMENT_TEAM = 368M544MTT; - INFOPLIST_FILE = ExpensifyCashTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ExpensifyCash.app/ExpensifyCash"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = ExpensifyCash/Chat.entitlements; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 3; - DEVELOPMENT_TEAM = 368M544MTT; - ENABLE_BITCODE = NO; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; - INFOPLIST_FILE = ExpensifyCash/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.0.0; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.chat.expensify.chat; - PRODUCT_NAME = Expensify.cash; - PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = ExpensifyCash/Chat.entitlements; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 3; - DEVELOPMENT_TEAM = 368M544MTT; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; - INFOPLIST_FILE = ExpensifyCash/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.0.0; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.chat.expensify.chat; - PRODUCT_NAME = Expensify.cash; - PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; - LIBRARY_SEARCH_PATHS = ( - "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", - "\"$(inherited)\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; - LIBRARY_SEARCH_PATHS = ( - "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", - "\"$(inherited)\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExpensifyCashTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ExpensifyCash" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ExpensifyCash" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/ios/Podfile.lock b/ios/Podfile.lock deleted file mode 100644 index f156ce086c14..000000000000 --- a/ios/Podfile.lock +++ /dev/null @@ -1,699 +0,0 @@ -PODS: - - Airship (14.2.0): - - Airship/Automation (= 14.2.0) - - Airship/Core (= 14.2.0) - - Airship/ExtendedActions (= 14.2.0) - - Airship/MessageCenter (= 14.2.0) - - Airship/Automation (14.2.0): - - Airship/Core - - Airship/Core (14.2.0) - - Airship/ExtendedActions (14.2.0): - - Airship/Core - - Airship/MessageCenter (14.2.0): - - Airship/Core - - boost-for-react-native (1.63.0) - - CocoaAsyncSocket (7.6.5) - - CocoaLibEvent (1.0.0) - - DoubleConversion (1.1.6) - - FBLazyVector (0.63.3) - - FBReactNativeSpec (0.63.3): - - Folly (= 2020.01.13.00) - - RCTRequired (= 0.63.3) - - RCTTypeSafety (= 0.63.3) - - React-Core (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - Firebase/Analytics (6.34.0): - - Firebase/Core - - Firebase/Core (6.34.0): - - Firebase/CoreOnly - - FirebaseAnalytics (= 6.9.0) - - Firebase/CoreOnly (6.34.0): - - FirebaseCore (= 6.10.4) - - Firebase/Crashlytics (6.34.0): - - Firebase/CoreOnly - - FirebaseCrashlytics (~> 4.6.2) - - FirebaseAnalytics (6.9.0): - - FirebaseCore (~> 6.10) - - FirebaseInstallations (~> 1.7) - - GoogleAppMeasurement (= 6.9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 6.7) - - GoogleUtilities/MethodSwizzler (~> 6.7) - - GoogleUtilities/Network (~> 6.7) - - "GoogleUtilities/NSData+zlib (~> 6.7)" - - nanopb (~> 1.30906.0) - - FirebaseCore (6.10.4): - - FirebaseCoreDiagnostics (~> 1.6) - - GoogleUtilities/Environment (~> 6.7) - - GoogleUtilities/Logger (~> 6.7) - - FirebaseCoreDiagnostics (1.7.0): - - GoogleDataTransport (~> 7.4) - - GoogleUtilities/Environment (~> 6.7) - - GoogleUtilities/Logger (~> 6.7) - - nanopb (~> 1.30906.0) - - FirebaseCrashlytics (4.6.2): - - FirebaseCore (~> 6.10) - - FirebaseInstallations (~> 1.6) - - GoogleDataTransport (~> 7.2) - - nanopb (~> 1.30906.0) - - PromisesObjC (~> 1.2) - - FirebaseInstallations (1.7.0): - - FirebaseCore (~> 6.10) - - GoogleUtilities/Environment (~> 6.7) - - GoogleUtilities/UserDefaults (~> 6.7) - - PromisesObjC (~> 1.2) - - Flipper (0.54.0): - - Flipper-Folly (~> 2.2) - - Flipper-RSocket (~> 1.1) - - Flipper-DoubleConversion (1.1.7) - - Flipper-Folly (2.3.0): - - boost-for-react-native - - CocoaLibEvent (~> 1.0) - - Flipper-DoubleConversion - - Flipper-Glog - - OpenSSL-Universal (= 1.0.2.20) - - Flipper-Glog (0.3.6) - - Flipper-PeerTalk (0.0.4) - - Flipper-RSocket (1.1.0): - - Flipper-Folly (~> 2.2) - - FlipperKit (0.54.0): - - FlipperKit/Core (= 0.54.0) - - FlipperKit/Core (0.54.0): - - Flipper (~> 0.54.0) - - FlipperKit/CppBridge - - FlipperKit/FBCxxFollyDynamicConvert - - FlipperKit/FBDefines - - FlipperKit/FKPortForwarding - - FlipperKit/CppBridge (0.54.0): - - Flipper (~> 0.54.0) - - FlipperKit/FBCxxFollyDynamicConvert (0.54.0): - - Flipper-Folly (~> 2.2) - - FlipperKit/FBDefines (0.54.0) - - FlipperKit/FKPortForwarding (0.54.0): - - CocoaAsyncSocket (~> 7.6) - - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.54.0) - - FlipperKit/FlipperKitLayoutPlugin (0.54.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutTextSearchable - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.54.0) - - FlipperKit/FlipperKitNetworkPlugin (0.54.0): - - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.54.0): - - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.54.0): - - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.54.0): - - FlipperKit/Core - - FlipperKit/FlipperKitNetworkPlugin - - Folly (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - Folly/Default (= 2020.01.13.00) - - glog - - Folly/Default (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - glog - - glog (0.3.5) - - GoogleAppMeasurement (6.9.0): - - GoogleUtilities/AppDelegateSwizzler (~> 6.7) - - GoogleUtilities/MethodSwizzler (~> 6.7) - - GoogleUtilities/Network (~> 6.7) - - "GoogleUtilities/NSData+zlib (~> 6.7)" - - nanopb (~> 1.30906.0) - - GoogleDataTransport (7.5.1): - - nanopb (~> 1.30906.0) - - GoogleUtilities/AppDelegateSwizzler (6.7.2): - - GoogleUtilities/Environment - - GoogleUtilities/Logger - - GoogleUtilities/Network - - GoogleUtilities/Environment (6.7.2): - - PromisesObjC (~> 1.2) - - GoogleUtilities/Logger (6.7.2): - - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (6.7.2): - - GoogleUtilities/Logger - - GoogleUtilities/Network (6.7.2): - - GoogleUtilities/Logger - - "GoogleUtilities/NSData+zlib" - - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (6.7.2)" - - GoogleUtilities/Reachability (6.7.2): - - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (6.7.2): - - GoogleUtilities/Logger - - nanopb (1.30906.0): - - nanopb/decode (= 1.30906.0) - - nanopb/encode (= 1.30906.0) - - nanopb/decode (1.30906.0) - - nanopb/encode (1.30906.0) - - OpenSSL-Universal (1.0.2.20): - - OpenSSL-Universal/Static (= 1.0.2.20) - - OpenSSL-Universal/Static (1.0.2.20) - - PromisesObjC (1.2.11) - - RCTRequired (0.63.3) - - RCTTypeSafety (0.63.3): - - FBLazyVector (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTRequired (= 0.63.3) - - React-Core (= 0.63.3) - - React (0.63.3): - - React-Core (= 0.63.3) - - React-Core/DevSupport (= 0.63.3) - - React-Core/RCTWebSocket (= 0.63.3) - - React-RCTActionSheet (= 0.63.3) - - React-RCTAnimation (= 0.63.3) - - React-RCTBlob (= 0.63.3) - - React-RCTImage (= 0.63.3) - - React-RCTLinking (= 0.63.3) - - React-RCTNetwork (= 0.63.3) - - React-RCTSettings (= 0.63.3) - - React-RCTText (= 0.63.3) - - React-RCTVibration (= 0.63.3) - - React-callinvoker (0.63.3) - - React-Core (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default (= 0.63.3) - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/CoreModulesHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/Default (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/DevSupport (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default (= 0.63.3) - - React-Core/RCTWebSocket (= 0.63.3) - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - React-jsinspector (= 0.63.3) - - Yoga - - React-Core/RCTActionSheetHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTAnimationHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTBlobHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTImageHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTLinkingHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTNetworkHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTSettingsHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTTextHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTVibrationHeaders (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-Core/RCTWebSocket (0.63.3): - - Folly (= 2020.01.13.00) - - glog - - React-Core/Default (= 0.63.3) - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsiexecutor (= 0.63.3) - - Yoga - - React-CoreModules (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/CoreModulesHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - React-RCTImage (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-cxxreact (0.63.3): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - Folly (= 2020.01.13.00) - - glog - - React-callinvoker (= 0.63.3) - - React-jsinspector (= 0.63.3) - - React-jsi (0.63.3): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - Folly (= 2020.01.13.00) - - glog - - React-jsi/Default (= 0.63.3) - - React-jsi/Default (0.63.3): - - boost-for-react-native (= 1.63.0) - - DoubleConversion - - Folly (= 2020.01.13.00) - - glog - - React-jsiexecutor (0.63.3): - - DoubleConversion - - Folly (= 2020.01.13.00) - - glog - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - React-jsinspector (0.63.3) - - react-native-config (1.4.1): - - react-native-config/App (= 1.4.1) - - react-native-config/App (1.4.1): - - React-Core - - react-native-document-picker (4.0.0): - - React-Core - - react-native-image-picker (2.3.4): - - React-Core - - react-native-netinfo (5.9.10): - - React-Core - - react-native-pdf (6.2.2): - - React-Core - - react-native-progress-bar-android (1.0.4): - - React - - react-native-progress-view (1.2.3): - - React - - react-native-safe-area-context (3.1.8): - - React-Core - - React-RCTActionSheet (0.63.3): - - React-Core/RCTActionSheetHeaders (= 0.63.3) - - React-RCTAnimation (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/RCTAnimationHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTBlob (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - React-Core/RCTBlobHeaders (= 0.63.3) - - React-Core/RCTWebSocket (= 0.63.3) - - React-jsi (= 0.63.3) - - React-RCTNetwork (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTImage (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/RCTImageHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - React-RCTNetwork (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTLinking (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - React-Core/RCTLinkingHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTNetwork (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/RCTNetworkHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTSettings (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.3) - - React-Core/RCTSettingsHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - React-RCTText (0.63.3): - - React-Core/RCTTextHeaders (= 0.63.3) - - React-RCTVibration (0.63.3): - - FBReactNativeSpec (= 0.63.3) - - Folly (= 2020.01.13.00) - - React-Core/RCTVibrationHeaders (= 0.63.3) - - React-jsi (= 0.63.3) - - ReactCommon/turbomodule/core (= 0.63.3) - - ReactCommon/turbomodule/core (0.63.3): - - DoubleConversion - - Folly (= 2020.01.13.00) - - glog - - React-callinvoker (= 0.63.3) - - React-Core (= 0.63.3) - - React-cxxreact (= 0.63.3) - - React-jsi (= 0.63.3) - - rn-fetch-blob (0.12.0): - - React-Core - - RNCAsyncStorage (1.12.1): - - React-Core - - RNCMaskedView (0.1.10): - - React - - RNCPicker (1.9.11): - - React-Core - - RNFBAnalytics (7.6.8): - - Firebase/Analytics (~> 6.34.0) - - React-Core - - RNFBApp - - RNFBApp (8.4.6): - - Firebase/CoreOnly (~> 6.34.0) - - React-Core - - RNFBCrashlytics (8.4.10): - - Firebase/Crashlytics (~> 6.34.0) - - React-Core - - RNFBApp - - RNGestureHandler (1.9.0): - - React-Core - - RNReanimated (1.13.2): - - React-Core - - RNScreens (2.17.1): - - React-Core - - RNSVG (12.1.0): - - React - - urbanairship-react-native (10.0.0): - - Airship (= 14.2.0) - - React-Core - - Yoga (1.14.0) - - YogaKit (1.18.1): - - Yoga (~> 1.14) - -DEPENDENCIES: - - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - - Flipper (~> 0.54.0) - - Flipper-DoubleConversion (= 1.1.7) - - Flipper-Folly (~> 2.2) - - Flipper-Glog (= 0.3.6) - - Flipper-PeerTalk (~> 0.0.4) - - Flipper-RSocket (~> 1.1) - - FlipperKit (~> 0.54.0) - - FlipperKit/Core (~> 0.54.0) - - FlipperKit/CppBridge (~> 0.54.0) - - FlipperKit/FBCxxFollyDynamicConvert (~> 0.54.0) - - FlipperKit/FBDefines (~> 0.54.0) - - FlipperKit/FKPortForwarding (~> 0.54.0) - - FlipperKit/FlipperKitHighlightOverlay (~> 0.54.0) - - FlipperKit/FlipperKitLayoutPlugin (~> 0.54.0) - - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.54.0) - - FlipperKit/FlipperKitNetworkPlugin (~> 0.54.0) - - FlipperKit/FlipperKitReactPlugin (~> 0.54.0) - - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.54.0) - - FlipperKit/SKIOSNetworkPlugin (~> 0.54.0) - - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - - React (from `../node_modules/react-native/`) - - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - - React-Core (from `../node_modules/react-native/`) - - React-Core/DevSupport (from `../node_modules/react-native/`) - - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - - react-native-config (from `../node_modules/react-native-config`) - - react-native-document-picker (from `../node_modules/react-native-document-picker`) - - react-native-image-picker (from `../node_modules/react-native-image-picker`) - - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - - react-native-pdf (from `../node_modules/react-native-pdf`) - - "react-native-progress-bar-android (from `../node_modules/@react-native-community/progress-bar-android`)" - - "react-native-progress-view (from `../node_modules/@react-native-community/progress-view`)" - - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - rn-fetch-blob (from `../node_modules/rn-fetch-blob`) - - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" - - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" - - "RNCPicker (from `../node_modules/@react-native-picker/picker`)" - - "RNFBAnalytics (from `../node_modules/@react-native-firebase/analytics`)" - - "RNFBApp (from `../node_modules/@react-native-firebase/app`)" - - "RNFBCrashlytics (from `../node_modules/@react-native-firebase/crashlytics`)" - - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - - RNReanimated (from `../node_modules/react-native-reanimated`) - - RNScreens (from `../node_modules/react-native-screens`) - - RNSVG (from `../node_modules/react-native-svg`) - - urbanairship-react-native (from `../node_modules/urbanairship-react-native`) - - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) - -SPEC REPOS: - trunk: - - Airship - - boost-for-react-native - - CocoaAsyncSocket - - CocoaLibEvent - - Firebase - - FirebaseAnalytics - - FirebaseCore - - FirebaseCoreDiagnostics - - FirebaseCrashlytics - - FirebaseInstallations - - Flipper - - Flipper-DoubleConversion - - Flipper-Folly - - Flipper-Glog - - Flipper-PeerTalk - - Flipper-RSocket - - FlipperKit - - GoogleAppMeasurement - - GoogleDataTransport - - GoogleUtilities - - nanopb - - OpenSSL-Universal - - PromisesObjC - - YogaKit - -EXTERNAL SOURCES: - DoubleConversion: - :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" - FBLazyVector: - :path: "../node_modules/react-native/Libraries/FBLazyVector" - FBReactNativeSpec: - :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" - Folly: - :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" - glog: - :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" - RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" - RCTTypeSafety: - :path: "../node_modules/react-native/Libraries/TypeSafety" - React: - :path: "../node_modules/react-native/" - React-callinvoker: - :path: "../node_modules/react-native/ReactCommon/callinvoker" - React-Core: - :path: "../node_modules/react-native/" - React-CoreModules: - :path: "../node_modules/react-native/React/CoreModules" - React-cxxreact: - :path: "../node_modules/react-native/ReactCommon/cxxreact" - React-jsi: - :path: "../node_modules/react-native/ReactCommon/jsi" - React-jsiexecutor: - :path: "../node_modules/react-native/ReactCommon/jsiexecutor" - React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" - react-native-config: - :path: "../node_modules/react-native-config" - react-native-document-picker: - :path: "../node_modules/react-native-document-picker" - react-native-image-picker: - :path: "../node_modules/react-native-image-picker" - react-native-netinfo: - :path: "../node_modules/@react-native-community/netinfo" - react-native-pdf: - :path: "../node_modules/react-native-pdf" - react-native-progress-bar-android: - :path: "../node_modules/@react-native-community/progress-bar-android" - react-native-progress-view: - :path: "../node_modules/@react-native-community/progress-view" - react-native-safe-area-context: - :path: "../node_modules/react-native-safe-area-context" - React-RCTActionSheet: - :path: "../node_modules/react-native/Libraries/ActionSheetIOS" - React-RCTAnimation: - :path: "../node_modules/react-native/Libraries/NativeAnimation" - React-RCTBlob: - :path: "../node_modules/react-native/Libraries/Blob" - React-RCTImage: - :path: "../node_modules/react-native/Libraries/Image" - React-RCTLinking: - :path: "../node_modules/react-native/Libraries/LinkingIOS" - React-RCTNetwork: - :path: "../node_modules/react-native/Libraries/Network" - React-RCTSettings: - :path: "../node_modules/react-native/Libraries/Settings" - React-RCTText: - :path: "../node_modules/react-native/Libraries/Text" - React-RCTVibration: - :path: "../node_modules/react-native/Libraries/Vibration" - ReactCommon: - :path: "../node_modules/react-native/ReactCommon" - rn-fetch-blob: - :path: "../node_modules/rn-fetch-blob" - RNCAsyncStorage: - :path: "../node_modules/@react-native-community/async-storage" - RNCMaskedView: - :path: "../node_modules/@react-native-community/masked-view" - RNCPicker: - :path: "../node_modules/@react-native-picker/picker" - RNFBAnalytics: - :path: "../node_modules/@react-native-firebase/analytics" - RNFBApp: - :path: "../node_modules/@react-native-firebase/app" - RNFBCrashlytics: - :path: "../node_modules/@react-native-firebase/crashlytics" - RNGestureHandler: - :path: "../node_modules/react-native-gesture-handler" - RNReanimated: - :path: "../node_modules/react-native-reanimated" - RNScreens: - :path: "../node_modules/react-native-screens" - RNSVG: - :path: "../node_modules/react-native-svg" - urbanairship-react-native: - :path: "../node_modules/urbanairship-react-native" - Yoga: - :path: "../node_modules/react-native/ReactCommon/yoga" - -SPEC CHECKSUMS: - Airship: 02ad73780f9eed21870e36b0aaab327acda6a102 - boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c - CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f - DoubleConversion: cde416483dac037923206447da6e1454df403714 - FBLazyVector: 878b59e31113e289e275165efbe4b54fa614d43d - FBReactNativeSpec: 7da9338acfb98d4ef9e5536805a0704572d33c2f - Firebase: c23a36d9e4cdf7877dfcba8dd0c58add66358999 - FirebaseAnalytics: 3bb096873ee0d7fa4b6c70f5e9166b6da413cc7f - FirebaseCore: d3a978a3cfa3240bf7e4ba7d137fdf5b22b628ec - FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1 - FirebaseCrashlytics: 1a747c9cc084a24dc6d9511c991db1cd078154eb - FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2 - Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365 - Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 - Flipper-Folly: e4493b013c02d9347d5e0cb4d128680239f6c78a - Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 - Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 - Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7 - FlipperKit: ab353d41aea8aae2ea6daaf813e67496642f3d7d - Folly: b73c3869541e86821df3c387eb0af5f65addfab4 - glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 - GoogleAppMeasurement: a6a3a066369828db64eda428cb2856dc1cdc7c4e - GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833 - GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 - nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc - OpenSSL-Universal: ff34003318d5e1163e9529b08470708e389ffcdd - PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f - RCTRequired: 48884c74035a0b5b76dbb7a998bd93bcfc5f2047 - RCTTypeSafety: edf4b618033c2f1c5b7bc3d90d8e085ed95ba2ab - React: f36e90f3ceb976546e97df3403e37d226f79d0e3 - React-callinvoker: 18874f621eb96625df7a24a7dc8d6e07391affcd - React-Core: ac3d816b8e3493970153f4aaf0cff18af0bb95e6 - React-CoreModules: 4016d3a4e518bcfc4f5a51252b5a05692ca6f0e1 - React-cxxreact: ffc9129013b87cb36cf3f30a86695a3c397b0f99 - React-jsi: df07aa95b39c5be3e41199921509bfa929ed2b9d - React-jsiexecutor: b56c03e61c0dd5f5801255f2160a815f4a53d451 - React-jsinspector: 8e68ffbfe23880d3ee9bafa8be2777f60b25cbe2 - react-native-config: d8b45133fd13d4f23bd2064b72f6e2c08b2763ed - react-native-document-picker: b3e78a8f7fef98b5cb069f20fc35797d55e68e28 - react-native-image-picker: 32d1ad2c0024ca36161ae0d5c2117e2d6c441f11 - react-native-netinfo: 52cf0ee8342548a485e28f4b09e56b477567244d - react-native-pdf: 4b5a9e4465a6a3b399e91dc4838eb44ddf716d1f - react-native-progress-bar-android: ce95a69f11ac580799021633071368d08aaf9ad8 - react-native-progress-view: 5816e8a6be812c2b122c6225a2a3db82d9008640 - react-native-safe-area-context: 01158a92c300895d79dee447e980672dc3fb85a6 - React-RCTActionSheet: 53ea72699698b0b47a6421cb1c8b4ab215a774aa - React-RCTAnimation: 1befece0b5183c22ae01b966f5583f42e69a83c2 - React-RCTBlob: 0b284339cbe4b15705a05e2313a51c6d8b51fa40 - React-RCTImage: d1756599ebd4dc2cb19d1682fe67c6b976658387 - React-RCTLinking: 9af0a51c6d6a4dd1674daadafffc6d03033a6d18 - React-RCTNetwork: 332c83929cc5eae0b3bbca4add1d668e1fc18bda - React-RCTSettings: d6953772cfd55f2c68ad72b7ef29efc7ec49f773 - React-RCTText: 65a6de06a7389098ce24340d1d3556015c38f746 - React-RCTVibration: 8e9fb25724a0805107fc1acc9075e26f814df454 - ReactCommon: 4167844018c9ed375cc01a843e9ee564399e53c3 - rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba - RNCAsyncStorage: cb9a623793918c6699586281f0b51cbc38f046f9 - RNCMaskedView: f5c7d14d6847b7b44853f7acb6284c1da30a3459 - RNCPicker: 6780c753e9e674065db90d9c965920516402579d - RNFBAnalytics: 2dc4dd9e2445faffca041b10447a23a71dcdabf8 - RNFBApp: 7eacc7da7ab19f96c05e434017d44a9f09410da8 - RNFBCrashlytics: 4870c14cf8833053b6b5648911abefe1923854d2 - RNGestureHandler: 9b7e605a741412e20e13c512738a31bd1611759b - RNReanimated: e03f7425cb7a38dcf1b644d680d1bfc91c3337ad - RNScreens: b6c9607e6fe47c1b6e2f1910d2acd46dd7ecea3a - RNSVG: ce9d996113475209013317e48b05c21ee988d42e - urbanairship-react-native: dfb6dc22b2f41ccaadd636b73d51b448cd1b2bbc - Yoga: 7d13633d129fd179e01b8953d38d47be90db185a - YogaKit: f782866e155069a2cca2517aafea43200b01fd5a - -PODFILE CHECKSUM: 41b806c7f131f87b716be1f1f9377532d6c9e43a - -COCOAPODS: 1.10.1 From 09678efa009d7e3ec144430b4a3b8cb19a1c362c Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 09:10:59 +0800 Subject: [PATCH 08/33] Revert "remove accidentally committed files" This reverts commit de2ab0373575150052cf3bf5074dd98c9f5a02c5. --- ios/ExpensifyCash.xcodeproj/project.pbxproj | 950 ++++++++++++++++++++ ios/Podfile.lock | 699 ++++++++++++++ 2 files changed, 1649 insertions(+) create mode 100644 ios/ExpensifyCash.xcodeproj/project.pbxproj create mode 100644 ios/Podfile.lock diff --git a/ios/ExpensifyCash.xcodeproj/project.pbxproj b/ios/ExpensifyCash.xcodeproj/project.pbxproj new file mode 100644 index 000000000000..c5a01d9565c0 --- /dev/null +++ b/ios/ExpensifyCash.xcodeproj/project.pbxproj @@ -0,0 +1,950 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 00E356F31AD99517003FC87E /* ExpensifyCashTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ExpensifyCashTests.m */; }; + 0F5BE0CE252686330097D869 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */; }; + 12DD1878FCB9487C9F031C86 /* GTAmericaExpMono-Rg.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8437A5A38F2047E0BCCD7C2F /* GTAmericaExpMono-Rg.otf */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 184256DF4A33056F828927C6 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */; }; + 1E76D5212522316A005A268F /* GTAmericaExp-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */; }; + 1E76D5222522316A005A268F /* GTAmericaExp-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */; }; + 1E76D5232522316A005A268F /* GTAmericaExp-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */; }; + 1E76D5242522316A005A268F /* GTAmericaExp-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */; }; + 1E76D5252522316A005A268F /* GTAmericaExp-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */; }; + 376CCF91B872607D190AF0F6 /* libPods-ExpensifyCash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */; }; + 425866037F4C482AAB46CB8B /* GTAmericaExp-BdIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */; }; + 6856B78873B64C44A92E51DB /* GTAmericaExp-MdIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + 8821A238A081483FA947BC4E /* GTAmericaExp-RgIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */; }; + E9DF872D2525201700607FDC /* AirshipConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = E9DF872C2525201700607FDC /* AirshipConfig.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = ExpensifyCash; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00E356EE1AD99517003FC87E /* ExpensifyCashTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExpensifyCashTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* ExpensifyCashTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExpensifyCashTests.m; sourceTree = ""; }; + 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* Expensify.cash.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Expensify.cash.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ExpensifyCash/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = ExpensifyCash/AppDelegate.m; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ExpensifyCash/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ExpensifyCash/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ExpensifyCash/main.m; sourceTree = ""; }; + 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Light.otf"; path = "../assets/fonts/GTAmericaExp-Light.otf"; sourceTree = ""; }; + 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.debug.xcconfig"; sourceTree = ""; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ExpensifyCash/LaunchScreen.storyboard; sourceTree = ""; }; + 8437A5A38F2047E0BCCD7C2F /* GTAmericaExpMono-Rg.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExpMono-Rg.otf"; path = "../assets/fonts/GTAmericaExpMono-Rg.otf"; sourceTree = ""; }; + 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash-ExpensifyCashTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Regular.otf"; path = "../assets/fonts/GTAmericaExp-Regular.otf"; sourceTree = ""; }; + 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; sourceTree = ""; }; + 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-RgIt.otf"; path = "../assets/fonts/GTAmericaExp-RgIt.otf"; sourceTree = ""; }; + A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Thin.otf"; path = "../assets/fonts/GTAmericaExp-Thin.otf"; sourceTree = ""; }; + A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Bold.otf"; path = "../assets/fonts/GTAmericaExp-Bold.otf"; sourceTree = ""; }; + A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-BdIt.otf"; path = "../assets/fonts/GTAmericaExp-BdIt.otf"; sourceTree = ""; }; + A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; sourceTree = ""; }; + AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Medium.otf"; path = "../assets/fonts/GTAmericaExp-Medium.otf"; sourceTree = ""; }; + DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-MdIt.otf"; path = "../assets/fonts/GTAmericaExp-MdIt.otf"; sourceTree = ""; }; + E9DF872C2525201700607FDC /* AirshipConfig.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AirshipConfig.plist; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; + EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00E356EB1AD99517003FC87E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 184256DF4A33056F828927C6 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 376CCF91B872607D190AF0F6 /* libPods-ExpensifyCash.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00E356EF1AD99517003FC87E /* ExpensifyCashTests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* ExpensifyCashTests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = ExpensifyCashTests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* ExpensifyCash */ = { + isa = PBXGroup; + children = ( + 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */, + E9DF872C2525201700607FDC /* AirshipConfig.plist */, + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = ExpensifyCash; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + ED2971642150620600B7C4FE /* JavaScriptCore.framework */, + 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */, + 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* ExpensifyCash */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* ExpensifyCashTests */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + EC29677F0A49C2946A495A33 /* Pods */, + A9EA265D209D4558995C9BD4 /* Resources */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* Expensify.cash.app */, + 00E356EE1AD99517003FC87E /* ExpensifyCashTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + A9EA265D209D4558995C9BD4 /* Resources */ = { + isa = PBXGroup; + children = ( + A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */, + 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */, + AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */, + 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */, + A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */, + 8437A5A38F2047E0BCCD7C2F /* GTAmericaExpMono-Rg.otf */, + A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */, + DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */, + 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */, + ); + name = Resources; + sourceTree = ""; + }; + EC29677F0A49C2946A495A33 /* Pods */ = { + isa = PBXGroup; + children = ( + 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */, + EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */, + A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */, + 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 00E356ED1AD99517003FC87E /* ExpensifyCashTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExpensifyCashTests" */; + buildPhases = ( + 31F29FE5E41ACA3441D1941B /* [CP] Check Pods Manifest.lock */, + 00E356EA1AD99517003FC87E /* Sources */, + 00E356EB1AD99517003FC87E /* Frameworks */, + 00E356EC1AD99517003FC87E /* Resources */, + C5DF5C3874F91B17AFCBCB52 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 00E356F51AD99517003FC87E /* PBXTargetDependency */, + ); + name = ExpensifyCashTests; + productName = ExpensifyCashTests; + productReference = 00E356EE1AD99517003FC87E /* ExpensifyCashTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 13B07F861A680F5B00A75B9A /* ExpensifyCash */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ExpensifyCash" */; + buildPhases = ( + 209CB27AD34BA50C3E1F4868 /* [CP] Check Pods Manifest.lock */, + FD10A7F022414F080027D42C /* Start Packager */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 3BD1D02836B845CFF3D9E447 /* [CP] Copy Pods Resources */, + B079B9CCBE57FB68AFC8F3B4 /* [CP-User] [RNFB] Core Configuration */, + F5D4F18823CA58548DB9253C /* [CP-User] [RNFB] Crashlytics Configuration */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ExpensifyCash; + productName = ExpensifyCash; + productReference = 13B07F961A680F5B00A75B9A /* Expensify.cash.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + 00E356ED1AD99517003FC87E = { + CreatedOnToolsVersion = 6.2; + ProvisioningStyle = Automatic; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + 13B07F861A680F5B00A75B9A = { + DevelopmentTeam = 368M544MTT; + LastSwiftMigration = 1120; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ExpensifyCash" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* ExpensifyCash */, + 00E356ED1AD99517003FC87E /* ExpensifyCashTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + 0F5BE0CE252686330097D869 /* GoogleService-Info.plist in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + E9DF872D2525201700607FDC /* AirshipConfig.plist in Resources */, + 12DD1878FCB9487C9F031C86 /* GTAmericaExpMono-Rg.otf in Resources */, + 1E76D5212522316A005A268F /* GTAmericaExp-Bold.otf in Resources */, + 1E76D5222522316A005A268F /* GTAmericaExp-Light.otf in Resources */, + 1E76D5232522316A005A268F /* GTAmericaExp-Medium.otf in Resources */, + 1E76D5242522316A005A268F /* GTAmericaExp-Regular.otf in Resources */, + 1E76D5252522316A005A268F /* GTAmericaExp-Thin.otf in Resources */, + 425866037F4C482AAB46CB8B /* GTAmericaExp-BdIt.otf in Resources */, + 6856B78873B64C44A92E51DB /* GTAmericaExp-MdIt.otf in Resources */, + 8821A238A081483FA947BC4E /* GTAmericaExp-RgIt.otf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + }; + 209CB27AD34BA50C3E1F4868 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ExpensifyCash-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 31F29FE5E41ACA3441D1941B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ExpensifyCash-ExpensifyCashTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3BD1D02836B845CFF3D9E447 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash-resources.sh", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAAutomationActions.plist", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageBannerContentView.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageBannerView.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageButtonView.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageFullScreenViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageHTMLViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageModalViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageResizableViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAFrequencyLimits.xcdatamodeld", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UADefaultActions.plist", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UADefaultActionsTvOS.plist", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UANativeBridge", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UANotificationCategories.plist", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ar.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/cs.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/da.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/de.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/en.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/es-419.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/es.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/fi.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/fr.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/hi.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/hu.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/id.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/it.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/iw.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ja.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ko.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ms.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/nl.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/no.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pl.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pt-PT.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pt.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ro.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ru.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/sk.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/sv.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/th.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/tr.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UAEvents.xcdatamodeld", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UARemoteData.xcdatamodeld", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/vi.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/zh-Hans.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/zh-Hant.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipExtendedActions/Resources/UAExtendedActions.plist", + "${PODS_ROOT}/Airship/Airship/AirshipExtendedActions/Resources/UARateAppPromptView.xib", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UADefaultMessageCenterListViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UADefaultMessageCenterMessageViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterActions.plist", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterListCell.xib", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterPlaceholderIcon.png", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAInbox.xcdatamodeld", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAAutomationActions.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageBannerContentView.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageBannerView.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageButtonView.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageFullScreenViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageHTMLViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageModalViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageResizableViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAAutomation.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAFrequencyLimits.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultActions.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultActionsTvOS.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UANativeBridge", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UANotificationCategories.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ar.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/cs.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/da.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/de.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/en.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es-419.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fi.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hi.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hu.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/id.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/it.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/iw.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ja.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ko.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ms.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nl.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/no.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pl.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt-PT.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ro.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ru.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sk.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sv.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/th.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/tr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAEvents.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UARemoteData.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/vi.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh-Hans.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh-Hant.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAExtendedActions.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UARateAppPromptView.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultMessageCenterListViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultMessageCenterMessageViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterActions.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterListCell.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterPlaceholderIcon.png", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInbox.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + B079B9CCBE57FB68AFC8F3B4 /* [CP-User] [RNFB] Core Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] [RNFB] Core Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + }; + C5DF5C3874F91B17AFCBCB52 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests-resources.sh", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAAutomationActions.plist", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageBannerContentView.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageBannerView.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageButtonView.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageFullScreenViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageHTMLViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageModalViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAInAppMessageResizableViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAAutomation.xcdatamodeld", + "${PODS_ROOT}/Airship/Airship/AirshipAutomation/Resources/UAFrequencyLimits.xcdatamodeld", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UADefaultActions.plist", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UADefaultActionsTvOS.plist", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UANativeBridge", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UANotificationCategories.plist", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ar.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/cs.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/da.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/de.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/en.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/es-419.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/es.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/fi.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/fr.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/hi.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/hu.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/id.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/it.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/iw.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ja.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ko.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ms.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/nl.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/no.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pl.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pt-PT.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/pt.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ro.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/ru.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/sk.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/sv.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/th.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/tr.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UAEvents.xcdatamodeld", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/UARemoteData.xcdatamodeld", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/vi.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/zh-Hans.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipCore/Resources/zh-Hant.lproj", + "${PODS_ROOT}/Airship/Airship/AirshipExtendedActions/Resources/UAExtendedActions.plist", + "${PODS_ROOT}/Airship/Airship/AirshipExtendedActions/Resources/UARateAppPromptView.xib", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UADefaultMessageCenterListViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UADefaultMessageCenterMessageViewController.xib", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterActions.plist", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterListCell.xib", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAMessageCenterPlaceholderIcon.png", + "${PODS_ROOT}/Airship/Airship/AirshipMessageCenter/Resources/UAInbox.xcdatamodeld", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAAutomationActions.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageBannerContentView.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageBannerView.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageButtonView.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageFullScreenViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageHTMLViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageModalViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInAppMessageResizableViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAAutomation.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAFrequencyLimits.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultActions.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultActionsTvOS.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UANativeBridge", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UANotificationCategories.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ar.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/cs.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/da.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/de.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/en.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es-419.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/es.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fi.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/fr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hi.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/hu.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/id.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/it.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/iw.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ja.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ko.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ms.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/nl.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/no.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pl.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt-PT.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/pt.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ro.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ru.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sk.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/sv.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/th.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/tr.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAEvents.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UARemoteData.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/vi.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh-Hans.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/zh-Hant.lproj", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAExtendedActions.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UARateAppPromptView.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultMessageCenterListViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UADefaultMessageCenterMessageViewController.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterActions.plist", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterListCell.nib", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAMessageCenterPlaceholderIcon.png", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/UAInbox.momd", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + F5D4F18823CA58548DB9253C /* [CP-User] [RNFB] Crashlytics Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] [RNFB] Crashlytics Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; + }; + FD10A7F022414F080027D42C /* Start Packager */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Start Packager"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 00E356EA1AD99517003FC87E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00E356F31AD99517003FC87E /* ExpensifyCashTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* ExpensifyCash */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 00E356F61AD99517003FC87E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = ExpensifyCashTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ExpensifyCash.app/ExpensifyCash"; + }; + name = Debug; + }; + 00E356F71AD99517003FC87E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = 368M544MTT; + INFOPLIST_FILE = ExpensifyCashTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ExpensifyCash.app/ExpensifyCash"; + }; + name = Release; + }; + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = ExpensifyCash/Chat.entitlements; + CODE_SIGN_IDENTITY = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 3; + DEVELOPMENT_TEAM = 368M544MTT; + ENABLE_BITCODE = NO; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + INFOPLIST_FILE = ExpensifyCash/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.chat.expensify.chat; + PRODUCT_NAME = Expensify.cash; + PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = ExpensifyCash/Chat.entitlements; + CODE_SIGN_IDENTITY = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 3; + DEVELOPMENT_TEAM = 368M544MTT; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + INFOPLIST_FILE = ExpensifyCash/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.chat.expensify.chat; + PRODUCT_NAME = Expensify.cash; + PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExpensifyCashTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00E356F61AD99517003FC87E /* Debug */, + 00E356F71AD99517003FC87E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ExpensifyCash" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ExpensifyCash" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 000000000000..f156ce086c14 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,699 @@ +PODS: + - Airship (14.2.0): + - Airship/Automation (= 14.2.0) + - Airship/Core (= 14.2.0) + - Airship/ExtendedActions (= 14.2.0) + - Airship/MessageCenter (= 14.2.0) + - Airship/Automation (14.2.0): + - Airship/Core + - Airship/Core (14.2.0) + - Airship/ExtendedActions (14.2.0): + - Airship/Core + - Airship/MessageCenter (14.2.0): + - Airship/Core + - boost-for-react-native (1.63.0) + - CocoaAsyncSocket (7.6.5) + - CocoaLibEvent (1.0.0) + - DoubleConversion (1.1.6) + - FBLazyVector (0.63.3) + - FBReactNativeSpec (0.63.3): + - Folly (= 2020.01.13.00) + - RCTRequired (= 0.63.3) + - RCTTypeSafety (= 0.63.3) + - React-Core (= 0.63.3) + - React-jsi (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - Firebase/Analytics (6.34.0): + - Firebase/Core + - Firebase/Core (6.34.0): + - Firebase/CoreOnly + - FirebaseAnalytics (= 6.9.0) + - Firebase/CoreOnly (6.34.0): + - FirebaseCore (= 6.10.4) + - Firebase/Crashlytics (6.34.0): + - Firebase/CoreOnly + - FirebaseCrashlytics (~> 4.6.2) + - FirebaseAnalytics (6.9.0): + - FirebaseCore (~> 6.10) + - FirebaseInstallations (~> 1.7) + - GoogleAppMeasurement (= 6.9.0) + - GoogleUtilities/AppDelegateSwizzler (~> 6.7) + - GoogleUtilities/MethodSwizzler (~> 6.7) + - GoogleUtilities/Network (~> 6.7) + - "GoogleUtilities/NSData+zlib (~> 6.7)" + - nanopb (~> 1.30906.0) + - FirebaseCore (6.10.4): + - FirebaseCoreDiagnostics (~> 1.6) + - GoogleUtilities/Environment (~> 6.7) + - GoogleUtilities/Logger (~> 6.7) + - FirebaseCoreDiagnostics (1.7.0): + - GoogleDataTransport (~> 7.4) + - GoogleUtilities/Environment (~> 6.7) + - GoogleUtilities/Logger (~> 6.7) + - nanopb (~> 1.30906.0) + - FirebaseCrashlytics (4.6.2): + - FirebaseCore (~> 6.10) + - FirebaseInstallations (~> 1.6) + - GoogleDataTransport (~> 7.2) + - nanopb (~> 1.30906.0) + - PromisesObjC (~> 1.2) + - FirebaseInstallations (1.7.0): + - FirebaseCore (~> 6.10) + - GoogleUtilities/Environment (~> 6.7) + - GoogleUtilities/UserDefaults (~> 6.7) + - PromisesObjC (~> 1.2) + - Flipper (0.54.0): + - Flipper-Folly (~> 2.2) + - Flipper-RSocket (~> 1.1) + - Flipper-DoubleConversion (1.1.7) + - Flipper-Folly (2.3.0): + - boost-for-react-native + - CocoaLibEvent (~> 1.0) + - Flipper-DoubleConversion + - Flipper-Glog + - OpenSSL-Universal (= 1.0.2.20) + - Flipper-Glog (0.3.6) + - Flipper-PeerTalk (0.0.4) + - Flipper-RSocket (1.1.0): + - Flipper-Folly (~> 2.2) + - FlipperKit (0.54.0): + - FlipperKit/Core (= 0.54.0) + - FlipperKit/Core (0.54.0): + - Flipper (~> 0.54.0) + - FlipperKit/CppBridge + - FlipperKit/FBCxxFollyDynamicConvert + - FlipperKit/FBDefines + - FlipperKit/FKPortForwarding + - FlipperKit/CppBridge (0.54.0): + - Flipper (~> 0.54.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.54.0): + - Flipper-Folly (~> 2.2) + - FlipperKit/FBDefines (0.54.0) + - FlipperKit/FKPortForwarding (0.54.0): + - CocoaAsyncSocket (~> 7.6) + - Flipper-PeerTalk (~> 0.0.4) + - FlipperKit/FlipperKitHighlightOverlay (0.54.0) + - FlipperKit/FlipperKitLayoutPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/FlipperKitHighlightOverlay + - FlipperKit/FlipperKitLayoutTextSearchable + - YogaKit (~> 1.18) + - FlipperKit/FlipperKitLayoutTextSearchable (0.54.0) + - FlipperKit/FlipperKitNetworkPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/FlipperKitReactPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/FlipperKitUserDefaultsPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/SKIOSNetworkPlugin (0.54.0): + - FlipperKit/Core + - FlipperKit/FlipperKitNetworkPlugin + - Folly (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - Folly/Default (= 2020.01.13.00) + - glog + - Folly/Default (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - glog + - glog (0.3.5) + - GoogleAppMeasurement (6.9.0): + - GoogleUtilities/AppDelegateSwizzler (~> 6.7) + - GoogleUtilities/MethodSwizzler (~> 6.7) + - GoogleUtilities/Network (~> 6.7) + - "GoogleUtilities/NSData+zlib (~> 6.7)" + - nanopb (~> 1.30906.0) + - GoogleDataTransport (7.5.1): + - nanopb (~> 1.30906.0) + - GoogleUtilities/AppDelegateSwizzler (6.7.2): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Environment (6.7.2): + - PromisesObjC (~> 1.2) + - GoogleUtilities/Logger (6.7.2): + - GoogleUtilities/Environment + - GoogleUtilities/MethodSwizzler (6.7.2): + - GoogleUtilities/Logger + - GoogleUtilities/Network (6.7.2): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (6.7.2)" + - GoogleUtilities/Reachability (6.7.2): + - GoogleUtilities/Logger + - GoogleUtilities/UserDefaults (6.7.2): + - GoogleUtilities/Logger + - nanopb (1.30906.0): + - nanopb/decode (= 1.30906.0) + - nanopb/encode (= 1.30906.0) + - nanopb/decode (1.30906.0) + - nanopb/encode (1.30906.0) + - OpenSSL-Universal (1.0.2.20): + - OpenSSL-Universal/Static (= 1.0.2.20) + - OpenSSL-Universal/Static (1.0.2.20) + - PromisesObjC (1.2.11) + - RCTRequired (0.63.3) + - RCTTypeSafety (0.63.3): + - FBLazyVector (= 0.63.3) + - Folly (= 2020.01.13.00) + - RCTRequired (= 0.63.3) + - React-Core (= 0.63.3) + - React (0.63.3): + - React-Core (= 0.63.3) + - React-Core/DevSupport (= 0.63.3) + - React-Core/RCTWebSocket (= 0.63.3) + - React-RCTActionSheet (= 0.63.3) + - React-RCTAnimation (= 0.63.3) + - React-RCTBlob (= 0.63.3) + - React-RCTImage (= 0.63.3) + - React-RCTLinking (= 0.63.3) + - React-RCTNetwork (= 0.63.3) + - React-RCTSettings (= 0.63.3) + - React-RCTText (= 0.63.3) + - React-RCTVibration (= 0.63.3) + - React-callinvoker (0.63.3) + - React-Core (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.3) + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/CoreModulesHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/Default (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/DevSupport (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.3) + - React-Core/RCTWebSocket (= 0.63.3) + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - React-jsinspector (= 0.63.3) + - Yoga + - React-Core/RCTActionSheetHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTAnimationHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTBlobHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTImageHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTLinkingHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTNetworkHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTSettingsHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTTextHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTVibrationHeaders (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-Core/RCTWebSocket (0.63.3): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.3) + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsiexecutor (= 0.63.3) + - Yoga + - React-CoreModules (0.63.3): + - FBReactNativeSpec (= 0.63.3) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.3) + - React-Core/CoreModulesHeaders (= 0.63.3) + - React-jsi (= 0.63.3) + - React-RCTImage (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - React-cxxreact (0.63.3): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-callinvoker (= 0.63.3) + - React-jsinspector (= 0.63.3) + - React-jsi (0.63.3): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-jsi/Default (= 0.63.3) + - React-jsi/Default (0.63.3): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-jsiexecutor (0.63.3): + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - React-jsinspector (0.63.3) + - react-native-config (1.4.1): + - react-native-config/App (= 1.4.1) + - react-native-config/App (1.4.1): + - React-Core + - react-native-document-picker (4.0.0): + - React-Core + - react-native-image-picker (2.3.4): + - React-Core + - react-native-netinfo (5.9.10): + - React-Core + - react-native-pdf (6.2.2): + - React-Core + - react-native-progress-bar-android (1.0.4): + - React + - react-native-progress-view (1.2.3): + - React + - react-native-safe-area-context (3.1.8): + - React-Core + - React-RCTActionSheet (0.63.3): + - React-Core/RCTActionSheetHeaders (= 0.63.3) + - React-RCTAnimation (0.63.3): + - FBReactNativeSpec (= 0.63.3) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.3) + - React-Core/RCTAnimationHeaders (= 0.63.3) + - React-jsi (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - React-RCTBlob (0.63.3): + - FBReactNativeSpec (= 0.63.3) + - Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (= 0.63.3) + - React-Core/RCTWebSocket (= 0.63.3) + - React-jsi (= 0.63.3) + - React-RCTNetwork (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - React-RCTImage (0.63.3): + - FBReactNativeSpec (= 0.63.3) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.3) + - React-Core/RCTImageHeaders (= 0.63.3) + - React-jsi (= 0.63.3) + - React-RCTNetwork (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - React-RCTLinking (0.63.3): + - FBReactNativeSpec (= 0.63.3) + - React-Core/RCTLinkingHeaders (= 0.63.3) + - React-jsi (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - React-RCTNetwork (0.63.3): + - FBReactNativeSpec (= 0.63.3) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.3) + - React-Core/RCTNetworkHeaders (= 0.63.3) + - React-jsi (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - React-RCTSettings (0.63.3): + - FBReactNativeSpec (= 0.63.3) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.3) + - React-Core/RCTSettingsHeaders (= 0.63.3) + - React-jsi (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - React-RCTText (0.63.3): + - React-Core/RCTTextHeaders (= 0.63.3) + - React-RCTVibration (0.63.3): + - FBReactNativeSpec (= 0.63.3) + - Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (= 0.63.3) + - React-jsi (= 0.63.3) + - ReactCommon/turbomodule/core (= 0.63.3) + - ReactCommon/turbomodule/core (0.63.3): + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-callinvoker (= 0.63.3) + - React-Core (= 0.63.3) + - React-cxxreact (= 0.63.3) + - React-jsi (= 0.63.3) + - rn-fetch-blob (0.12.0): + - React-Core + - RNCAsyncStorage (1.12.1): + - React-Core + - RNCMaskedView (0.1.10): + - React + - RNCPicker (1.9.11): + - React-Core + - RNFBAnalytics (7.6.8): + - Firebase/Analytics (~> 6.34.0) + - React-Core + - RNFBApp + - RNFBApp (8.4.6): + - Firebase/CoreOnly (~> 6.34.0) + - React-Core + - RNFBCrashlytics (8.4.10): + - Firebase/Crashlytics (~> 6.34.0) + - React-Core + - RNFBApp + - RNGestureHandler (1.9.0): + - React-Core + - RNReanimated (1.13.2): + - React-Core + - RNScreens (2.17.1): + - React-Core + - RNSVG (12.1.0): + - React + - urbanairship-react-native (10.0.0): + - Airship (= 14.2.0) + - React-Core + - Yoga (1.14.0) + - YogaKit (1.18.1): + - Yoga (~> 1.14) + +DEPENDENCIES: + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) + - Flipper (~> 0.54.0) + - Flipper-DoubleConversion (= 1.1.7) + - Flipper-Folly (~> 2.2) + - Flipper-Glog (= 0.3.6) + - Flipper-PeerTalk (~> 0.0.4) + - Flipper-RSocket (~> 1.1) + - FlipperKit (~> 0.54.0) + - FlipperKit/Core (~> 0.54.0) + - FlipperKit/CppBridge (~> 0.54.0) + - FlipperKit/FBCxxFollyDynamicConvert (~> 0.54.0) + - FlipperKit/FBDefines (~> 0.54.0) + - FlipperKit/FKPortForwarding (~> 0.54.0) + - FlipperKit/FlipperKitHighlightOverlay (~> 0.54.0) + - FlipperKit/FlipperKitLayoutPlugin (~> 0.54.0) + - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.54.0) + - FlipperKit/FlipperKitNetworkPlugin (~> 0.54.0) + - FlipperKit/FlipperKitReactPlugin (~> 0.54.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.54.0) + - FlipperKit/SKIOSNetworkPlugin (~> 0.54.0) + - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/DevSupport (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - react-native-config (from `../node_modules/react-native-config`) + - react-native-document-picker (from `../node_modules/react-native-document-picker`) + - react-native-image-picker (from `../node_modules/react-native-image-picker`) + - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" + - react-native-pdf (from `../node_modules/react-native-pdf`) + - "react-native-progress-bar-android (from `../node_modules/@react-native-community/progress-bar-android`)" + - "react-native-progress-view (from `../node_modules/@react-native-community/progress-view`)" + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - rn-fetch-blob (from `../node_modules/rn-fetch-blob`) + - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" + - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" + - "RNCPicker (from `../node_modules/@react-native-picker/picker`)" + - "RNFBAnalytics (from `../node_modules/@react-native-firebase/analytics`)" + - "RNFBApp (from `../node_modules/@react-native-firebase/app`)" + - "RNFBCrashlytics (from `../node_modules/@react-native-firebase/crashlytics`)" + - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) + - RNReanimated (from `../node_modules/react-native-reanimated`) + - RNScreens (from `../node_modules/react-native-screens`) + - RNSVG (from `../node_modules/react-native-svg`) + - urbanairship-react-native (from `../node_modules/urbanairship-react-native`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - Airship + - boost-for-react-native + - CocoaAsyncSocket + - CocoaLibEvent + - Firebase + - FirebaseAnalytics + - FirebaseCore + - FirebaseCoreDiagnostics + - FirebaseCrashlytics + - FirebaseInstallations + - Flipper + - Flipper-DoubleConversion + - Flipper-Folly + - Flipper-Glog + - Flipper-PeerTalk + - Flipper-RSocket + - FlipperKit + - GoogleAppMeasurement + - GoogleDataTransport + - GoogleUtilities + - nanopb + - OpenSSL-Universal + - PromisesObjC + - YogaKit + +EXTERNAL SOURCES: + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + FBReactNativeSpec: + :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" + Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + RCTRequired: + :path: "../node_modules/react-native/Libraries/RCTRequired" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector" + react-native-config: + :path: "../node_modules/react-native-config" + react-native-document-picker: + :path: "../node_modules/react-native-document-picker" + react-native-image-picker: + :path: "../node_modules/react-native-image-picker" + react-native-netinfo: + :path: "../node_modules/@react-native-community/netinfo" + react-native-pdf: + :path: "../node_modules/react-native-pdf" + react-native-progress-bar-android: + :path: "../node_modules/@react-native-community/progress-bar-android" + react-native-progress-view: + :path: "../node_modules/@react-native-community/progress-view" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + rn-fetch-blob: + :path: "../node_modules/rn-fetch-blob" + RNCAsyncStorage: + :path: "../node_modules/@react-native-community/async-storage" + RNCMaskedView: + :path: "../node_modules/@react-native-community/masked-view" + RNCPicker: + :path: "../node_modules/@react-native-picker/picker" + RNFBAnalytics: + :path: "../node_modules/@react-native-firebase/analytics" + RNFBApp: + :path: "../node_modules/@react-native-firebase/app" + RNFBCrashlytics: + :path: "../node_modules/@react-native-firebase/crashlytics" + RNGestureHandler: + :path: "../node_modules/react-native-gesture-handler" + RNReanimated: + :path: "../node_modules/react-native-reanimated" + RNScreens: + :path: "../node_modules/react-native-screens" + RNSVG: + :path: "../node_modules/react-native-svg" + urbanairship-react-native: + :path: "../node_modules/urbanairship-react-native" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + Airship: 02ad73780f9eed21870e36b0aaab327acda6a102 + boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c + CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 + CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f + DoubleConversion: cde416483dac037923206447da6e1454df403714 + FBLazyVector: 878b59e31113e289e275165efbe4b54fa614d43d + FBReactNativeSpec: 7da9338acfb98d4ef9e5536805a0704572d33c2f + Firebase: c23a36d9e4cdf7877dfcba8dd0c58add66358999 + FirebaseAnalytics: 3bb096873ee0d7fa4b6c70f5e9166b6da413cc7f + FirebaseCore: d3a978a3cfa3240bf7e4ba7d137fdf5b22b628ec + FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1 + FirebaseCrashlytics: 1a747c9cc084a24dc6d9511c991db1cd078154eb + FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2 + Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365 + Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 + Flipper-Folly: e4493b013c02d9347d5e0cb4d128680239f6c78a + Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 + Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 + Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7 + FlipperKit: ab353d41aea8aae2ea6daaf813e67496642f3d7d + Folly: b73c3869541e86821df3c387eb0af5f65addfab4 + glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 + GoogleAppMeasurement: a6a3a066369828db64eda428cb2856dc1cdc7c4e + GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833 + GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 + nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc + OpenSSL-Universal: ff34003318d5e1163e9529b08470708e389ffcdd + PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f + RCTRequired: 48884c74035a0b5b76dbb7a998bd93bcfc5f2047 + RCTTypeSafety: edf4b618033c2f1c5b7bc3d90d8e085ed95ba2ab + React: f36e90f3ceb976546e97df3403e37d226f79d0e3 + React-callinvoker: 18874f621eb96625df7a24a7dc8d6e07391affcd + React-Core: ac3d816b8e3493970153f4aaf0cff18af0bb95e6 + React-CoreModules: 4016d3a4e518bcfc4f5a51252b5a05692ca6f0e1 + React-cxxreact: ffc9129013b87cb36cf3f30a86695a3c397b0f99 + React-jsi: df07aa95b39c5be3e41199921509bfa929ed2b9d + React-jsiexecutor: b56c03e61c0dd5f5801255f2160a815f4a53d451 + React-jsinspector: 8e68ffbfe23880d3ee9bafa8be2777f60b25cbe2 + react-native-config: d8b45133fd13d4f23bd2064b72f6e2c08b2763ed + react-native-document-picker: b3e78a8f7fef98b5cb069f20fc35797d55e68e28 + react-native-image-picker: 32d1ad2c0024ca36161ae0d5c2117e2d6c441f11 + react-native-netinfo: 52cf0ee8342548a485e28f4b09e56b477567244d + react-native-pdf: 4b5a9e4465a6a3b399e91dc4838eb44ddf716d1f + react-native-progress-bar-android: ce95a69f11ac580799021633071368d08aaf9ad8 + react-native-progress-view: 5816e8a6be812c2b122c6225a2a3db82d9008640 + react-native-safe-area-context: 01158a92c300895d79dee447e980672dc3fb85a6 + React-RCTActionSheet: 53ea72699698b0b47a6421cb1c8b4ab215a774aa + React-RCTAnimation: 1befece0b5183c22ae01b966f5583f42e69a83c2 + React-RCTBlob: 0b284339cbe4b15705a05e2313a51c6d8b51fa40 + React-RCTImage: d1756599ebd4dc2cb19d1682fe67c6b976658387 + React-RCTLinking: 9af0a51c6d6a4dd1674daadafffc6d03033a6d18 + React-RCTNetwork: 332c83929cc5eae0b3bbca4add1d668e1fc18bda + React-RCTSettings: d6953772cfd55f2c68ad72b7ef29efc7ec49f773 + React-RCTText: 65a6de06a7389098ce24340d1d3556015c38f746 + React-RCTVibration: 8e9fb25724a0805107fc1acc9075e26f814df454 + ReactCommon: 4167844018c9ed375cc01a843e9ee564399e53c3 + rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba + RNCAsyncStorage: cb9a623793918c6699586281f0b51cbc38f046f9 + RNCMaskedView: f5c7d14d6847b7b44853f7acb6284c1da30a3459 + RNCPicker: 6780c753e9e674065db90d9c965920516402579d + RNFBAnalytics: 2dc4dd9e2445faffca041b10447a23a71dcdabf8 + RNFBApp: 7eacc7da7ab19f96c05e434017d44a9f09410da8 + RNFBCrashlytics: 4870c14cf8833053b6b5648911abefe1923854d2 + RNGestureHandler: 9b7e605a741412e20e13c512738a31bd1611759b + RNReanimated: e03f7425cb7a38dcf1b644d680d1bfc91c3337ad + RNScreens: b6c9607e6fe47c1b6e2f1910d2acd46dd7ecea3a + RNSVG: ce9d996113475209013317e48b05c21ee988d42e + urbanairship-react-native: dfb6dc22b2f41ccaadd636b73d51b448cd1b2bbc + Yoga: 7d13633d129fd179e01b8953d38d47be90db185a + YogaKit: f782866e155069a2cca2517aafea43200b01fd5a + +PODFILE CHECKSUM: 41b806c7f131f87b716be1f1f9377532d6c9e43a + +COCOAPODS: 1.10.1 From 451bb16639afb1d19ca76119ba56c0daa84879dd Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 09:13:30 +0800 Subject: [PATCH 09/33] revert to master versions --- ios/ExpensifyCash.xcodeproj/project.pbxproj | 82 ++++++++++----------- ios/Podfile.lock | 2 +- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/ios/ExpensifyCash.xcodeproj/project.pbxproj b/ios/ExpensifyCash.xcodeproj/project.pbxproj index c5a01d9565c0..1cce13f3aa8e 100644 --- a/ios/ExpensifyCash.xcodeproj/project.pbxproj +++ b/ios/ExpensifyCash.xcodeproj/project.pbxproj @@ -13,17 +13,17 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 184256DF4A33056F828927C6 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */; }; 1E76D5212522316A005A268F /* GTAmericaExp-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */; }; 1E76D5222522316A005A268F /* GTAmericaExp-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */; }; 1E76D5232522316A005A268F /* GTAmericaExp-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */; }; 1E76D5242522316A005A268F /* GTAmericaExp-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */; }; 1E76D5252522316A005A268F /* GTAmericaExp-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */; }; - 376CCF91B872607D190AF0F6 /* libPods-ExpensifyCash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */; }; 425866037F4C482AAB46CB8B /* GTAmericaExp-BdIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */; }; 6856B78873B64C44A92E51DB /* GTAmericaExp-MdIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 8821A238A081483FA947BC4E /* GTAmericaExp-RgIt.otf in Resources */ = {isa = PBXBuildFile; fileRef = 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */; }; + 8C86654500DCC843A74147B5 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ED2AB27DDDFCCE3CD100EA0C /* libPods-ExpensifyCash-ExpensifyCashTests.a */; }; + BB6CECBDA023256B6B955321 /* libPods-ExpensifyCash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F2C8BDCC1FF0B64AE2DFC9B /* libPods-ExpensifyCash.a */; }; E9DF872D2525201700607FDC /* AirshipConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = E9DF872C2525201700607FDC /* AirshipConfig.plist */; }; /* End PBXBuildFile section */ @@ -49,25 +49,25 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ExpensifyCash/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ExpensifyCash/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ExpensifyCash/main.m; sourceTree = ""; }; - 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 67D5C3A6A7FA417C8A853FC1 /* GTAmericaExp-Light.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Light.otf"; path = "../assets/fonts/GTAmericaExp-Light.otf"; sourceTree = ""; }; - 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.debug.xcconfig"; sourceTree = ""; }; + 6F2C8BDCC1FF0B64AE2DFC9B /* libPods-ExpensifyCash.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ExpensifyCash/LaunchScreen.storyboard; sourceTree = ""; }; 8437A5A38F2047E0BCCD7C2F /* GTAmericaExpMono-Rg.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExpMono-Rg.otf"; path = "../assets/fonts/GTAmericaExpMono-Rg.otf"; sourceTree = ""; }; - 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash-ExpensifyCashTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 8C7003903C1E4957824899BB /* GTAmericaExp-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Regular.otf"; path = "../assets/fonts/GTAmericaExp-Regular.otf"; sourceTree = ""; }; - 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; sourceTree = ""; }; 918D7FEFF96242E6B5F5E14D /* GTAmericaExp-RgIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-RgIt.otf"; path = "../assets/fonts/GTAmericaExp-RgIt.otf"; sourceTree = ""; }; + A13EE2CFAF952F935D201D2F /* Pods-ExpensifyCash.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.release.xcconfig"; sourceTree = ""; }; A292718541C841859D97DF2F /* GTAmericaExp-Thin.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Thin.otf"; path = "../assets/fonts/GTAmericaExp-Thin.otf"; sourceTree = ""; }; A5AAD008CBD84A6CAEB9AC97 /* GTAmericaExp-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Bold.otf"; path = "../assets/fonts/GTAmericaExp-Bold.otf"; sourceTree = ""; }; A8D6F2F722FD4E66A38EBBB6 /* GTAmericaExp-BdIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-BdIt.otf"; path = "../assets/fonts/GTAmericaExp-BdIt.otf"; sourceTree = ""; }; - A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; sourceTree = ""; }; AE65058949E14DA5A2D5435D /* GTAmericaExp-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-Medium.otf"; path = "../assets/fonts/GTAmericaExp-Medium.otf"; sourceTree = ""; }; + AF728B3FCBC8C2731C4DA7B4 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig"; sourceTree = ""; }; DB5A1365442D4419AF6F08E5 /* GTAmericaExp-MdIt.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "GTAmericaExp-MdIt.otf"; path = "../assets/fonts/GTAmericaExp-MdIt.otf"; sourceTree = ""; }; + E7967C67752432EA2031954F /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig"; sourceTree = ""; }; E9DF872C2525201700607FDC /* AirshipConfig.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AirshipConfig.plist; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; - EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.release.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.release.xcconfig"; sourceTree = ""; }; + ED2AB27DDDFCCE3CD100EA0C /* libPods-ExpensifyCash-ExpensifyCashTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ExpensifyCash-ExpensifyCashTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + F4BC0E78FF1E9BD8B2D38C66 /* Pods-ExpensifyCash.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExpensifyCash.debug.xcconfig"; path = "Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -75,7 +75,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 184256DF4A33056F828927C6 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */, + 8C86654500DCC843A74147B5 /* libPods-ExpensifyCash-ExpensifyCashTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -83,7 +83,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 376CCF91B872607D190AF0F6 /* libPods-ExpensifyCash.a in Frameworks */, + BB6CECBDA023256B6B955321 /* libPods-ExpensifyCash.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -128,8 +128,8 @@ children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - 4A679AD694BE9556E6B55BEA /* libPods-ExpensifyCash.a */, - 85425D131983D5EC5A012EF7 /* libPods-ExpensifyCash-ExpensifyCashTests.a */, + 6F2C8BDCC1FF0B64AE2DFC9B /* libPods-ExpensifyCash.a */, + ED2AB27DDDFCCE3CD100EA0C /* libPods-ExpensifyCash-ExpensifyCashTests.a */, ); name = Frameworks; sourceTree = ""; @@ -185,10 +185,10 @@ EC29677F0A49C2946A495A33 /* Pods */ = { isa = PBXGroup; children = ( - 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */, - EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */, - A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */, - 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */, + F4BC0E78FF1E9BD8B2D38C66 /* Pods-ExpensifyCash.debug.xcconfig */, + A13EE2CFAF952F935D201D2F /* Pods-ExpensifyCash.release.xcconfig */, + AF728B3FCBC8C2731C4DA7B4 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */, + E7967C67752432EA2031954F /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -200,11 +200,11 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExpensifyCashTests" */; buildPhases = ( - 31F29FE5E41ACA3441D1941B /* [CP] Check Pods Manifest.lock */, + AEFD4743761AD0E2373D0494 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - C5DF5C3874F91B17AFCBCB52 /* [CP] Copy Pods Resources */, + F2B8013B9E9ECAB2B509E702 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -220,15 +220,15 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ExpensifyCash" */; buildPhases = ( - 209CB27AD34BA50C3E1F4868 /* [CP] Check Pods Manifest.lock */, + 6A9F4436BADC311F14A4349F /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 3BD1D02836B845CFF3D9E447 /* [CP] Copy Pods Resources */, - B079B9CCBE57FB68AFC8F3B4 /* [CP-User] [RNFB] Core Configuration */, - F5D4F18823CA58548DB9253C /* [CP-User] [RNFB] Crashlytics Configuration */, + C9071365B664DE0D85DC5195 /* [CP] Copy Pods Resources */, + CF6259710B5A341870372EA2 /* [CP-User] [RNFB] Core Configuration */, + ED5B8E90A3384FC6A128FB95 /* [CP-User] [RNFB] Crashlytics Configuration */, ); buildRules = ( ); @@ -323,7 +323,7 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 209CB27AD34BA50C3E1F4868 /* [CP] Check Pods Manifest.lock */ = { + 6A9F4436BADC311F14A4349F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +345,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 31F29FE5E41ACA3441D1941B /* [CP] Check Pods Manifest.lock */ = { + AEFD4743761AD0E2373D0494 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -367,7 +367,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 3BD1D02836B845CFF3D9E447 /* [CP] Copy Pods Resources */ = { + C9071365B664DE0D85DC5195 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -495,7 +495,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash/Pods-ExpensifyCash-resources.sh\"\n"; showEnvVarsInLog = 0; }; - B079B9CCBE57FB68AFC8F3B4 /* [CP-User] [RNFB] Core Configuration */ = { + CF6259710B5A341870372EA2 /* [CP-User] [RNFB] Core Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -505,7 +505,17 @@ shellPath = /bin/sh; shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; }; - C5DF5C3874F91B17AFCBCB52 /* [CP] Copy Pods Resources */ = { + ED5B8E90A3384FC6A128FB95 /* [CP-User] [RNFB] Crashlytics Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] [RNFB] Crashlytics Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; + }; + F2B8013B9E9ECAB2B509E702 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -633,16 +643,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExpensifyCash-ExpensifyCashTests/Pods-ExpensifyCash-ExpensifyCashTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - F5D4F18823CA58548DB9253C /* [CP-User] [RNFB] Crashlytics Configuration */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - name = "[CP-User] [RNFB] Crashlytics Configuration"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; - }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -695,7 +695,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A90FC01D757217791C4E9131 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */; + baseConfigurationReference = AF728B3FCBC8C2731C4DA7B4 /* Pods-ExpensifyCash-ExpensifyCashTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -719,7 +719,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8CA0D27D73F4C48E98CCA0E9 /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */; + baseConfigurationReference = E7967C67752432EA2031954F /* Pods-ExpensifyCash-ExpensifyCashTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -741,7 +741,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B13CEF63D86C7980FA4F455 /* Pods-ExpensifyCash.debug.xcconfig */; + baseConfigurationReference = F4BC0E78FF1E9BD8B2D38C66 /* Pods-ExpensifyCash.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -773,7 +773,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EDBB0DF39D0F431E9A26F613 /* Pods-ExpensifyCash.release.xcconfig */; + baseConfigurationReference = A13EE2CFAF952F935D201D2F /* Pods-ExpensifyCash.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index f156ce086c14..352903821326 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -696,4 +696,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 41b806c7f131f87b716be1f1f9377532d6c9e43a -COCOAPODS: 1.10.1 +COCOAPODS: 1.10.0 From 47cf1986341e5248c63f46d345ecffc7802ab729 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:29:31 +0800 Subject: [PATCH 10/33] refactor based on PR comments --- src/components/WelcomeText.js | 26 ++++++++ src/pages/setpassword/SetPasswordForm.js | 27 ++++++-- src/pages/setpassword/SetPasswordPage.js | 65 ++++++++++++++----- src/pages/setpassword/SetPasswordPageProps.js | 38 ----------- src/pages/signin/LoginForm/LoginFormNarrow.js | 12 +--- src/pages/signin/LoginForm/LoginFormWide.js | 15 +---- 6 files changed, 99 insertions(+), 84 deletions(-) create mode 100644 src/components/WelcomeText.js delete mode 100644 src/pages/setpassword/SetPasswordPageProps.js diff --git a/src/components/WelcomeText.js b/src/components/WelcomeText.js new file mode 100644 index 000000000000..191018d406fd --- /dev/null +++ b/src/components/WelcomeText.js @@ -0,0 +1,26 @@ +import React from 'react'; +import {Text, View} from 'react-native'; +import PropTypes from 'prop-types'; +import styles from '../styles/styles'; +import withWindowDimensions from './withWindowDimensions'; + +const propTypes = { + isSmallScreenWidth: PropTypes.bool.isRequired +}; + +const WelcomeText = props => ( + + + With Expensify.cash, chat and payments are the same thing. + + + Money talks. And now that chat and payments are in one place, it's also easy. + {' '} + Your payments get to you as fast as you can get your point across. + + +); + +WelcomeText.propTypes = propTypes; + +export default withWindowDimensions(WelcomeText); diff --git a/src/pages/setpassword/SetPasswordForm.js b/src/pages/setpassword/SetPasswordForm.js index 3a548f5ba528..502b64cddb4b 100644 --- a/src/pages/setpassword/SetPasswordForm.js +++ b/src/pages/setpassword/SetPasswordForm.js @@ -1,11 +1,28 @@ import {Text, TextInput, View} from 'react-native'; import _ from 'underscore'; import React from 'react'; -import lodashGet from 'lodash.get'; +import PropTypes from 'prop-types'; import styles from '../../styles/styles'; import ButtonWithLoader from '../../components/ButtonWithLoader'; import {setPassword} from '../../libs/actions/Session'; -import SetPasswordPageProps from './SetPasswordPageProps'; + +const propTypes = { + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + + // The user's validate code (passed in through the URL) + validateCode: PropTypes.string.isRequired, +}; + +const defaultProps = { + account: {}, +}; class SetPasswordForm extends React.Component { constructor(props) { @@ -32,7 +49,7 @@ class SetPasswordForm extends React.Component { this.setState({ formError: null, }); - setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); + setPassword(this.state.password, this.props.validateCode); } render() { @@ -71,7 +88,7 @@ class SetPasswordForm extends React.Component { } } -SetPasswordForm.propTypes = SetPasswordPageProps.propTypes; -SetPasswordForm.defaultProps = SetPasswordPageProps.defaultProps; +SetPasswordForm.propTypes = propTypes; +SetPasswordForm.defaultProps = defaultProps; export default SetPasswordForm; diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index 5a42f52f8e29..a0af8018a1de 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -1,34 +1,63 @@ import React from 'react'; import { - SafeAreaView, Text, View, Image, + Image, SafeAreaView, Text, View, } from 'react-native'; +import PropTypes from 'prop-types'; +import lodashGet from 'lodash.get'; import styles from '../../styles/styles'; import SignInPageLayout from '../signin/SignInPageLayout'; -import SetPasswordPageProps from './SetPasswordPageProps'; import welcomeScreenshot from '../../../assets/images/welcome-screenshot.png'; import withWindowDimensions from '../../components/withWindowDimensions'; import SetPasswordForm from './SetPasswordForm'; +import WelcomeText from '../../components/WelcomeText'; + +const propTypes = { + /* Onyx Props */ + + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + + // The credentials of the logged in person + credentials: PropTypes.shape({ + // The email the user logged in with + login: PropTypes.string, + + // The password used to log in the user + password: PropTypes.string, + }), + + // Is this displaying on a device with a narrower screen width? + isSmallScreenWidth: PropTypes.bool.isRequired, + + route: PropTypes.shape({ + params: PropTypes.shape({ + validateCode: PropTypes.string, + }), + }), +}; +const defaultProps = { + account: {}, + credentials: {}, + route: { + params: {}, + }, +}; const SetPasswordPage = (props) => { - const welcomeText = ( - - - With Expensify.cash, chat and payments are the same thing. - - - Money talks. And now that chat and payments are in one place, it's also easy. - {' '} - Your payments get to you as fast as you can get your point across. - - - ); return ( {props.isSmallScreenWidth && ( @@ -40,13 +69,13 @@ const SetPasswordPage = (props) => { )} - {welcomeText} + ); }; -SetPasswordPage.propTypes = SetPasswordPageProps.propTypes; -SetPasswordPage.defaultProps = SetPasswordPageProps.defaultProps; +SetPasswordPage.propTypes = propTypes; +SetPasswordPage.defaultProps = defaultProps; export default withWindowDimensions(SetPasswordPage); diff --git a/src/pages/setpassword/SetPasswordPageProps.js b/src/pages/setpassword/SetPasswordPageProps.js deleted file mode 100644 index 5e07ad0a9569..000000000000 --- a/src/pages/setpassword/SetPasswordPageProps.js +++ /dev/null @@ -1,38 +0,0 @@ -import PropTypes from 'prop-types'; - -export default { - propTypes: { - /* Onyx Props */ - - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - - // The credentials of the logged in person - credentials: PropTypes.shape({ - // The email the user logged in with - login: PropTypes.string, - - // The password used to log in the user - password: PropTypes.string, - }), - - route: PropTypes.shape({ - params: PropTypes.shape({ - validateCode: PropTypes.string, - }), - }), - }, - defaultProps: { - account: {}, - credentials: {}, - route: { - params: {}, - }, - }, -}; diff --git a/src/pages/signin/LoginForm/LoginFormNarrow.js b/src/pages/signin/LoginForm/LoginFormNarrow.js index 08ecb0aee47d..b0c6522ac4df 100644 --- a/src/pages/signin/LoginForm/LoginFormNarrow.js +++ b/src/pages/signin/LoginForm/LoginFormNarrow.js @@ -11,6 +11,7 @@ import ButtonWithLoader from '../../../components/ButtonWithLoader'; import {fetchAccountDetails} from '../../../libs/actions/Session'; import welcomeScreenshot from '../../../../assets/images/welcome-screenshot.png'; import ONYXKEYS from '../../../ONYXKEYS'; +import WelcomeText from '../../../components/WelcomeText'; const propTypes = { /* Onyx Props */ @@ -103,16 +104,7 @@ class LoginFormNarrow extends React.Component { /> - - - With Expensify.cash, chat and payments are the same thing. - - - Money talks. And now that chat and payments are in one place, it's also easy. - {' '} - Your payments get to you as fast as you can get your point across. - - + ); } diff --git a/src/pages/signin/LoginForm/LoginFormWide.js b/src/pages/signin/LoginForm/LoginFormWide.js index 070c77c5c1b9..90620568e6ea 100644 --- a/src/pages/signin/LoginForm/LoginFormWide.js +++ b/src/pages/signin/LoginForm/LoginFormWide.js @@ -7,6 +7,7 @@ import {fetchAccountDetails} from '../../../libs/actions/Session'; import styles from '../../../styles/styles'; import ButtonWithLoader from '../../../components/ButtonWithLoader'; import ONYXKEYS from '../../../ONYXKEYS'; +import WelcomeText from '../../../components/WelcomeText'; const propTypes = { /* Onyx Props */ @@ -92,19 +93,7 @@ class LoginFormWide extends React.Component { )} - - - - - With Expensify.cash, chat and payments are the same thing. - - - Money talks. And now that chat and payments are in one place, it's also easy. - {' '} - Your payments get to you as fast as you can get your point across. - - - + ); } From 61a0a2fb7f73fff016aaf312a7053525f8925767 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:31:15 +0800 Subject: [PATCH 11/33] Update WelcomeText.js --- src/components/WelcomeText.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/WelcomeText.js b/src/components/WelcomeText.js index 191018d406fd..c8af5ac26bd7 100644 --- a/src/components/WelcomeText.js +++ b/src/components/WelcomeText.js @@ -5,7 +5,7 @@ import styles from '../styles/styles'; import withWindowDimensions from './withWindowDimensions'; const propTypes = { - isSmallScreenWidth: PropTypes.bool.isRequired + isSmallScreenWidth: PropTypes.bool.isRequired, }; const WelcomeText = props => ( From 436cfd1a5bc3b0698f8eea7626ee03d0bf706722 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:31:57 +0800 Subject: [PATCH 12/33] remove unused eslint-disable --- src/pages/setpassword/SetPasswordPage.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index a0af8018a1de..09d514ffcb90 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -55,7 +55,6 @@ const SetPasswordPage = (props) => { From 42ca8e8bfe2cc896e81739802250e8b758ef1d29 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:35:35 +0800 Subject: [PATCH 13/33] revert SetPasswordPage.js --- .../Navigation/AppNavigator/PublicScreens.js | 2 +- src/pages/SetPasswordPage.js | 135 ++++++++++++++++++ src/pages/setpassword/SetPasswordPage.js | 80 ----------- 3 files changed, 136 insertions(+), 81 deletions(-) create mode 100644 src/pages/SetPasswordPage.js delete mode 100644 src/pages/setpassword/SetPasswordPage.js diff --git a/src/libs/Navigation/AppNavigator/PublicScreens.js b/src/libs/Navigation/AppNavigator/PublicScreens.js index 896dc599e90c..141695a74ff5 100644 --- a/src/libs/Navigation/AppNavigator/PublicScreens.js +++ b/src/libs/Navigation/AppNavigator/PublicScreens.js @@ -1,7 +1,7 @@ import React from 'react'; import {createStackNavigator} from '@react-navigation/stack'; import SignInPage from '../../../pages/signin/SignInPage'; -import SetPasswordPage from '../../../pages/setpassword/SetPasswordPage'; +import SetPasswordPage from '../../../pages/SetPasswordPage'; const RootStack = createStackNavigator(); const defaultScreenOptions = { diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js new file mode 100644 index 000000000000..ca6925dc88a6 --- /dev/null +++ b/src/pages/SetPasswordPage.js @@ -0,0 +1,135 @@ +import React, {Component} from 'react'; +import { + SafeAreaView, + Text, + TextInput, + View, +} from 'react-native'; +import PropTypes from 'prop-types'; +import {withOnyx} from 'react-native-onyx'; +import _ from 'underscore'; +import lodashGet from 'lodash.get'; +import styles from '../styles/styles'; +import ExpensifyCashLogo from '../../assets/images/expensify-cash.svg'; +import {setPassword} from '../libs/actions/Session'; +import ONYXKEYS from '../ONYXKEYS'; +import variables from '../styles/variables'; +import ButtonWithLoader from '../components/ButtonWithLoader'; + +const propTypes = { + /* Onyx Props */ + + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + + // The credentials of the logged in person + credentials: PropTypes.shape({ + // The email the user logged in with + login: PropTypes.string, + + // The password used to log in the user + password: PropTypes.string, + }), + + route: PropTypes.shape({ + params: PropTypes.shape({ + validateCode: PropTypes.string, + }), + }), +}; + +const defaultProps = { + account: {}, + credentials: {}, + route: { + params: {}, + }, +}; + +class SetPasswordPage extends Component { + constructor(props) { + super(props); + + this.submitForm = this.submitForm.bind(this); + + this.state = { + password: '', + formError: null, + }; + } + + /** + * Validate the form and then submit it + */ + submitForm() { + if (!this.state.password.trim()) { + this.setState({ + formError: 'Password cannot be blank', + }); + return; + } + + this.setState({ + formError: null, + }); + setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); + } + + render() { + return ( + <> + + + + + + + Enter a password + this.setState({password: text})} + onSubmitEditing={this.submitForm} + /> + + + {this.state.formError && ( + + {this.state.formError} + + )} + {!_.isEmpty(this.props.account.error) && ( + + {this.props.account.error} + + )} + + + + ); + } +} + +SetPasswordPage.propTypes = propTypes; +SetPasswordPage.defaultProps = defaultProps; + +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(SetPasswordPage); diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js deleted file mode 100644 index 09d514ffcb90..000000000000 --- a/src/pages/setpassword/SetPasswordPage.js +++ /dev/null @@ -1,80 +0,0 @@ -import React from 'react'; -import { - Image, SafeAreaView, Text, View, -} from 'react-native'; -import PropTypes from 'prop-types'; -import lodashGet from 'lodash.get'; -import styles from '../../styles/styles'; -import SignInPageLayout from '../signin/SignInPageLayout'; -import welcomeScreenshot from '../../../assets/images/welcome-screenshot.png'; -import withWindowDimensions from '../../components/withWindowDimensions'; -import SetPasswordForm from './SetPasswordForm'; -import WelcomeText from '../../components/WelcomeText'; - -const propTypes = { - /* Onyx Props */ - - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - - // The credentials of the logged in person - credentials: PropTypes.shape({ - // The email the user logged in with - login: PropTypes.string, - - // The password used to log in the user - password: PropTypes.string, - }), - - // Is this displaying on a device with a narrower screen width? - isSmallScreenWidth: PropTypes.bool.isRequired, - - route: PropTypes.shape({ - params: PropTypes.shape({ - validateCode: PropTypes.string, - }), - }), -}; -const defaultProps = { - account: {}, - credentials: {}, - route: { - params: {}, - }, -}; - -const SetPasswordPage = (props) => { - return ( - - - - - {props.isSmallScreenWidth && ( - - - - )} - - - - - ); -}; - -SetPasswordPage.propTypes = propTypes; -SetPasswordPage.defaultProps = defaultProps; - -export default withWindowDimensions(SetPasswordPage); From 6d56db57cbd416b153c6c261653584e8dda82295 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:36:11 +0800 Subject: [PATCH 14/33] move SetPasswordPage.js to new folder --- src/libs/Navigation/AppNavigator/PublicScreens.js | 2 +- src/pages/{ => setpassword}/SetPasswordPage.js | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) rename src/pages/{ => setpassword}/SetPasswordPage.js (92%) diff --git a/src/libs/Navigation/AppNavigator/PublicScreens.js b/src/libs/Navigation/AppNavigator/PublicScreens.js index 141695a74ff5..896dc599e90c 100644 --- a/src/libs/Navigation/AppNavigator/PublicScreens.js +++ b/src/libs/Navigation/AppNavigator/PublicScreens.js @@ -1,7 +1,7 @@ import React from 'react'; import {createStackNavigator} from '@react-navigation/stack'; import SignInPage from '../../../pages/signin/SignInPage'; -import SetPasswordPage from '../../../pages/SetPasswordPage'; +import SetPasswordPage from '../../../pages/setpassword/SetPasswordPage'; const RootStack = createStackNavigator(); const defaultScreenOptions = { diff --git a/src/pages/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js similarity index 92% rename from src/pages/SetPasswordPage.js rename to src/pages/setpassword/SetPasswordPage.js index ca6925dc88a6..f8f93e88e214 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -9,12 +9,12 @@ import PropTypes from 'prop-types'; import {withOnyx} from 'react-native-onyx'; import _ from 'underscore'; import lodashGet from 'lodash.get'; -import styles from '../styles/styles'; -import ExpensifyCashLogo from '../../assets/images/expensify-cash.svg'; -import {setPassword} from '../libs/actions/Session'; -import ONYXKEYS from '../ONYXKEYS'; -import variables from '../styles/variables'; -import ButtonWithLoader from '../components/ButtonWithLoader'; +import styles from '../../styles/styles'; +import ExpensifyCashLogo from '../../../assets/images/expensify-cash.svg'; +import {setPassword} from '../../libs/actions/Session'; +import ONYXKEYS from '../../ONYXKEYS'; +import variables from '../../styles/variables'; +import ButtonWithLoader from '../../components/ButtonWithLoader'; const propTypes = { /* Onyx Props */ From f9e1fe6ac728905e24c793cd05640456ae040834 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:37:42 +0800 Subject: [PATCH 15/33] modify SetPasswordPage.js with new refactor --- src/pages/setpassword/SetPasswordPage.js | 127 +++++++---------------- 1 file changed, 40 insertions(+), 87 deletions(-) diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index f8f93e88e214..5a0628f53709 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -1,20 +1,17 @@ -import React, {Component} from 'react'; +import React from 'react'; import { - SafeAreaView, - Text, - TextInput, - View, + Image, SafeAreaView, View, } from 'react-native'; import PropTypes from 'prop-types'; -import {withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; import lodashGet from 'lodash.get'; import styles from '../../styles/styles'; -import ExpensifyCashLogo from '../../../assets/images/expensify-cash.svg'; -import {setPassword} from '../../libs/actions/Session'; +import SignInPageLayout from '../signin/SignInPageLayout'; +import welcomeScreenshot from '../../../assets/images/welcome-screenshot.png'; +import withWindowDimensions from '../../components/withWindowDimensions'; +import SetPasswordForm from './SetPasswordForm'; +import WelcomeText from '../../components/WelcomeText'; +import {withOnyx} from 'react-native-onyx'; import ONYXKEYS from '../../ONYXKEYS'; -import variables from '../../styles/variables'; -import ButtonWithLoader from '../../components/ButtonWithLoader'; const propTypes = { /* Onyx Props */ @@ -37,13 +34,15 @@ const propTypes = { password: PropTypes.string, }), + // Is this displaying on a device with a narrower screen width? + isSmallScreenWidth: PropTypes.bool.isRequired, + route: PropTypes.shape({ params: PropTypes.shape({ validateCode: PropTypes.string, }), }), }; - const defaultProps = { account: {}, credentials: {}, @@ -52,84 +51,38 @@ const defaultProps = { }, }; -class SetPasswordPage extends Component { - constructor(props) { - super(props); - - this.submitForm = this.submitForm.bind(this); - - this.state = { - password: '', - formError: null, - }; - } - - /** - * Validate the form and then submit it - */ - submitForm() { - if (!this.state.password.trim()) { - this.setState({ - formError: 'Password cannot be blank', - }); - return; - } - - this.setState({ - formError: null, - }); - setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); - } - - render() { - return ( - <> - - - - - - - Enter a password - this.setState({password: text})} - onSubmitEditing={this.submitForm} +const SetPasswordPage = (props) => { + return ( + + + + + {props.isSmallScreenWidth && ( + + - - {this.state.formError && ( - - {this.state.formError} - - )} - {!_.isEmpty(this.props.account.error) && ( - - {this.props.account.error} - - )} - - - - ); - } -} + )} + + + + + ); +}; SetPasswordPage.propTypes = propTypes; SetPasswordPage.defaultProps = defaultProps; -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(SetPasswordPage); + +export default withWindowDimensions( + withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, + }), +)(SetPasswordPage); From 9491840a2aeba7df76f9902da908a36c1f20e893 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:46:27 +0800 Subject: [PATCH 16/33] fix exporting component --- src/pages/setpassword/SetPasswordPage.js | 59 +++++++++++------------- 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index 5a0628f53709..72d6a7bf1a37 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -4,13 +4,13 @@ import { } from 'react-native'; import PropTypes from 'prop-types'; import lodashGet from 'lodash.get'; +import {withOnyx} from 'react-native-onyx'; import styles from '../../styles/styles'; import SignInPageLayout from '../signin/SignInPageLayout'; import welcomeScreenshot from '../../../assets/images/welcome-screenshot.png'; import withWindowDimensions from '../../components/withWindowDimensions'; import SetPasswordForm from './SetPasswordForm'; import WelcomeText from '../../components/WelcomeText'; -import {withOnyx} from 'react-native-onyx'; import ONYXKEYS from '../../ONYXKEYS'; const propTypes = { @@ -51,38 +51,33 @@ const defaultProps = { }, }; -const SetPasswordPage = (props) => { - return ( - - - - - {props.isSmallScreenWidth && ( - - - - )} - - - - - ); -}; +const SetPasswordPage = props => ( + + + + + {props.isSmallScreenWidth && ( + + + + )} + + + + +); SetPasswordPage.propTypes = propTypes; SetPasswordPage.defaultProps = defaultProps; - -export default withWindowDimensions( - withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, - }), -)(SetPasswordPage); +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(withWindowDimensions((SetPasswordPage))); From 9a362da3ae827738d8c69d6886c8443dc86dc80f Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:48:23 +0800 Subject: [PATCH 17/33] remove unused onyx --- src/pages/setpassword/SetPasswordForm.js | 14 ----------- src/pages/setpassword/SetPasswordPage.js | 30 +----------------------- 2 files changed, 1 insertion(+), 43 deletions(-) diff --git a/src/pages/setpassword/SetPasswordForm.js b/src/pages/setpassword/SetPasswordForm.js index 502b64cddb4b..3aaff0156d7d 100644 --- a/src/pages/setpassword/SetPasswordForm.js +++ b/src/pages/setpassword/SetPasswordForm.js @@ -7,23 +7,10 @@ import ButtonWithLoader from '../../components/ButtonWithLoader'; import {setPassword} from '../../libs/actions/Session'; const propTypes = { - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - // The user's validate code (passed in through the URL) validateCode: PropTypes.string.isRequired, }; -const defaultProps = { - account: {}, -}; - class SetPasswordForm extends React.Component { constructor(props) { super(props); @@ -89,6 +76,5 @@ class SetPasswordForm extends React.Component { } SetPasswordForm.propTypes = propTypes; -SetPasswordForm.defaultProps = defaultProps; export default SetPasswordForm; diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index 72d6a7bf1a37..807510e32ad9 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -4,36 +4,14 @@ import { } from 'react-native'; import PropTypes from 'prop-types'; import lodashGet from 'lodash.get'; -import {withOnyx} from 'react-native-onyx'; import styles from '../../styles/styles'; import SignInPageLayout from '../signin/SignInPageLayout'; import welcomeScreenshot from '../../../assets/images/welcome-screenshot.png'; import withWindowDimensions from '../../components/withWindowDimensions'; import SetPasswordForm from './SetPasswordForm'; import WelcomeText from '../../components/WelcomeText'; -import ONYXKEYS from '../../ONYXKEYS'; const propTypes = { - /* Onyx Props */ - - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - - // The credentials of the logged in person - credentials: PropTypes.shape({ - // The email the user logged in with - login: PropTypes.string, - - // The password used to log in the user - password: PropTypes.string, - }), - // Is this displaying on a device with a narrower screen width? isSmallScreenWidth: PropTypes.bool.isRequired, @@ -44,8 +22,6 @@ const propTypes = { }), }; const defaultProps = { - account: {}, - credentials: {}, route: { params: {}, }, @@ -57,7 +33,6 @@ const SetPasswordPage = props => ( {props.isSmallScreenWidth && ( @@ -77,7 +52,4 @@ const SetPasswordPage = props => ( SetPasswordPage.propTypes = propTypes; SetPasswordPage.defaultProps = defaultProps; -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(withWindowDimensions((SetPasswordPage))); +export default withWindowDimensions((SetPasswordPage)); From 8db75ccc0e697e8fba1842758a18522686db7eae Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 24 Mar 2021 18:49:33 +0800 Subject: [PATCH 18/33] put with onyx back --- src/pages/setpassword/SetPasswordForm.js | 14 +++++++++++ src/pages/setpassword/SetPasswordPage.js | 30 +++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/pages/setpassword/SetPasswordForm.js b/src/pages/setpassword/SetPasswordForm.js index 3aaff0156d7d..502b64cddb4b 100644 --- a/src/pages/setpassword/SetPasswordForm.js +++ b/src/pages/setpassword/SetPasswordForm.js @@ -7,10 +7,23 @@ import ButtonWithLoader from '../../components/ButtonWithLoader'; import {setPassword} from '../../libs/actions/Session'; const propTypes = { + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + // The user's validate code (passed in through the URL) validateCode: PropTypes.string.isRequired, }; +const defaultProps = { + account: {}, +}; + class SetPasswordForm extends React.Component { constructor(props) { super(props); @@ -76,5 +89,6 @@ class SetPasswordForm extends React.Component { } SetPasswordForm.propTypes = propTypes; +SetPasswordForm.defaultProps = defaultProps; export default SetPasswordForm; diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js index 807510e32ad9..72d6a7bf1a37 100644 --- a/src/pages/setpassword/SetPasswordPage.js +++ b/src/pages/setpassword/SetPasswordPage.js @@ -4,14 +4,36 @@ import { } from 'react-native'; import PropTypes from 'prop-types'; import lodashGet from 'lodash.get'; +import {withOnyx} from 'react-native-onyx'; import styles from '../../styles/styles'; import SignInPageLayout from '../signin/SignInPageLayout'; import welcomeScreenshot from '../../../assets/images/welcome-screenshot.png'; import withWindowDimensions from '../../components/withWindowDimensions'; import SetPasswordForm from './SetPasswordForm'; import WelcomeText from '../../components/WelcomeText'; +import ONYXKEYS from '../../ONYXKEYS'; const propTypes = { + /* Onyx Props */ + + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + + // The credentials of the logged in person + credentials: PropTypes.shape({ + // The email the user logged in with + login: PropTypes.string, + + // The password used to log in the user + password: PropTypes.string, + }), + // Is this displaying on a device with a narrower screen width? isSmallScreenWidth: PropTypes.bool.isRequired, @@ -22,6 +44,8 @@ const propTypes = { }), }; const defaultProps = { + account: {}, + credentials: {}, route: { params: {}, }, @@ -33,6 +57,7 @@ const SetPasswordPage = props => ( {props.isSmallScreenWidth && ( @@ -52,4 +77,7 @@ const SetPasswordPage = props => ( SetPasswordPage.propTypes = propTypes; SetPasswordPage.defaultProps = defaultProps; -export default withWindowDimensions((SetPasswordPage)); +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(withWindowDimensions((SetPasswordPage))); From 6b6c43f5472e73861d42548a8e00e995adae46fe Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Thu, 25 Mar 2021 15:59:43 +0800 Subject: [PATCH 19/33] Refactor everything into a single component --- .../Navigation/AppNavigator/PublicScreens.js | 2 +- src/pages/SetPasswordPage.js | 141 ++++++++++++++++++ src/pages/setpassword/SetPasswordForm.js | 94 ------------ src/pages/setpassword/SetPasswordPage.js | 83 ----------- 4 files changed, 142 insertions(+), 178 deletions(-) create mode 100644 src/pages/SetPasswordPage.js delete mode 100644 src/pages/setpassword/SetPasswordForm.js delete mode 100644 src/pages/setpassword/SetPasswordPage.js diff --git a/src/libs/Navigation/AppNavigator/PublicScreens.js b/src/libs/Navigation/AppNavigator/PublicScreens.js index 896dc599e90c..141695a74ff5 100644 --- a/src/libs/Navigation/AppNavigator/PublicScreens.js +++ b/src/libs/Navigation/AppNavigator/PublicScreens.js @@ -1,7 +1,7 @@ import React from 'react'; import {createStackNavigator} from '@react-navigation/stack'; import SignInPage from '../../../pages/signin/SignInPage'; -import SetPasswordPage from '../../../pages/setpassword/SetPasswordPage'; +import SetPasswordPage from '../../../pages/SetPasswordPage'; const RootStack = createStackNavigator(); const defaultScreenOptions = { diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js new file mode 100644 index 000000000000..bc4986f445d1 --- /dev/null +++ b/src/pages/SetPasswordPage.js @@ -0,0 +1,141 @@ +import React from 'react'; +import { + Image, SafeAreaView, Text, TextInput, View, +} from 'react-native'; +import PropTypes from 'prop-types'; +import lodashGet from 'lodash.get'; +import {withOnyx} from 'react-native-onyx'; +import _ from 'underscore'; +import styles from '../styles/styles'; +import SignInPageLayout from './signin/SignInPageLayout'; +import welcomeScreenshot from '../../assets/images/welcome-screenshot.png'; +import withWindowDimensions from '../components/withWindowDimensions'; +import WelcomeText from '../components/WelcomeText'; +import ONYXKEYS from '../ONYXKEYS'; +import {setPassword} from '../libs/actions/Session'; +import ButtonWithLoader from '../components/ButtonWithLoader'; + +const propTypes = { + /* Onyx Props */ + + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + + // The credentials of the logged in person + credentials: PropTypes.shape({ + // The email the user logged in with + login: PropTypes.string, + + // The password used to log in the user + password: PropTypes.string, + }), + + // Is this displaying on a device with a narrower screen width? + isSmallScreenWidth: PropTypes.bool.isRequired, + + route: PropTypes.shape({ + params: PropTypes.shape({ + validateCode: PropTypes.string, + }), + }), +}; +const defaultProps = { + account: {}, + credentials: {}, + route: { + params: {}, + }, +}; + +class SetPasswordPage extends React.Component { + + constructor(props) { + super(props); + this.submitForm = this.submitForm.bind(this); + + this.state = { + password: '', + formError: null, + }; + } + + /** + * Validate the form and then submit it + */ + submitForm() { + if (!this.state.password.trim()) { + this.setState({ + formError: 'Password cannot be blank', + }); + return; + } + + this.setState({ + formError: null, + }); + setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); + } + + render() { + return ( + + + + + Enter a password: + this.setState({password: text})} + onSubmitEditing={this.submitForm} + autoFocus + /> + + + {this.state.formError && ( + + {this.state.formError} + + )} + {!_.isEmpty(this.props.account.error) && ( + + {this.props.account.error} + + )} + {this.props.isSmallScreenWidth && ( + + + + )} + + + + + ); + } +} + +SetPasswordPage.propTypes = propTypes; +SetPasswordPage.defaultProps = defaultProps; + +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(withWindowDimensions((SetPasswordPage))); diff --git a/src/pages/setpassword/SetPasswordForm.js b/src/pages/setpassword/SetPasswordForm.js deleted file mode 100644 index 502b64cddb4b..000000000000 --- a/src/pages/setpassword/SetPasswordForm.js +++ /dev/null @@ -1,94 +0,0 @@ -import {Text, TextInput, View} from 'react-native'; -import _ from 'underscore'; -import React from 'react'; -import PropTypes from 'prop-types'; -import styles from '../../styles/styles'; -import ButtonWithLoader from '../../components/ButtonWithLoader'; -import {setPassword} from '../../libs/actions/Session'; - -const propTypes = { - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - - // The user's validate code (passed in through the URL) - validateCode: PropTypes.string.isRequired, -}; - -const defaultProps = { - account: {}, -}; - -class SetPasswordForm extends React.Component { - constructor(props) { - super(props); - this.submitForm = this.submitForm.bind(this); - - this.state = { - password: '', - formError: null, - }; - } - - /** - * Validate the form and then submit it - */ - submitForm() { - if (!this.state.password.trim()) { - this.setState({ - formError: 'Password cannot be blank', - }); - return; - } - - this.setState({ - formError: null, - }); - setPassword(this.state.password, this.props.validateCode); - } - - render() { - return ( - <> - - Enter a password: - this.setState({password: text})} - onSubmitEditing={this.submitForm} - autoFocus - /> - - - {this.state.formError && ( - - {this.state.formError} - - )} - {!_.isEmpty(this.props.account.error) && ( - - {this.props.account.error} - - )} - - ); - } -} - -SetPasswordForm.propTypes = propTypes; -SetPasswordForm.defaultProps = defaultProps; - -export default SetPasswordForm; diff --git a/src/pages/setpassword/SetPasswordPage.js b/src/pages/setpassword/SetPasswordPage.js deleted file mode 100644 index 72d6a7bf1a37..000000000000 --- a/src/pages/setpassword/SetPasswordPage.js +++ /dev/null @@ -1,83 +0,0 @@ -import React from 'react'; -import { - Image, SafeAreaView, View, -} from 'react-native'; -import PropTypes from 'prop-types'; -import lodashGet from 'lodash.get'; -import {withOnyx} from 'react-native-onyx'; -import styles from '../../styles/styles'; -import SignInPageLayout from '../signin/SignInPageLayout'; -import welcomeScreenshot from '../../../assets/images/welcome-screenshot.png'; -import withWindowDimensions from '../../components/withWindowDimensions'; -import SetPasswordForm from './SetPasswordForm'; -import WelcomeText from '../../components/WelcomeText'; -import ONYXKEYS from '../../ONYXKEYS'; - -const propTypes = { - /* Onyx Props */ - - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - - // The credentials of the logged in person - credentials: PropTypes.shape({ - // The email the user logged in with - login: PropTypes.string, - - // The password used to log in the user - password: PropTypes.string, - }), - - // Is this displaying on a device with a narrower screen width? - isSmallScreenWidth: PropTypes.bool.isRequired, - - route: PropTypes.shape({ - params: PropTypes.shape({ - validateCode: PropTypes.string, - }), - }), -}; -const defaultProps = { - account: {}, - credentials: {}, - route: { - params: {}, - }, -}; - -const SetPasswordPage = props => ( - - - - - {props.isSmallScreenWidth && ( - - - - )} - - - - -); - -SetPasswordPage.propTypes = propTypes; -SetPasswordPage.defaultProps = defaultProps; - -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(withWindowDimensions((SetPasswordPage))); From ea5b9734bf43795715e9a40b4c7bc3ae3f1cb119 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Thu, 25 Mar 2021 16:04:46 +0800 Subject: [PATCH 20/33] Eslint fix --- src/pages/SetPasswordPage.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js index bc4986f445d1..12195ef893a9 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/SetPasswordPage.js @@ -54,7 +54,6 @@ const defaultProps = { }; class SetPasswordPage extends React.Component { - constructor(props) { super(props); this.submitForm = this.submitForm.bind(this); From 461aef6f41008857cd05ef692d01bd00d0d77566 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Thu, 25 Mar 2021 16:06:21 +0800 Subject: [PATCH 21/33] Fix import --- src/pages/SetPasswordPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js index 12195ef893a9..d7c8998f6157 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/SetPasswordPage.js @@ -3,7 +3,7 @@ import { Image, SafeAreaView, Text, TextInput, View, } from 'react-native'; import PropTypes from 'prop-types'; -import lodashGet from 'lodash.get'; +import lodashGet from 'lodash/get'; import {withOnyx} from 'react-native-onyx'; import _ from 'underscore'; import styles from '../styles/styles'; From 8dc41d2701ff2a41b74b99fdc37c91c89b4b1953 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Fri, 26 Mar 2021 14:02:46 +0800 Subject: [PATCH 22/33] Use compose --- src/pages/SetPasswordPage.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js index d7c8998f6157..69b82e5cafd3 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/SetPasswordPage.js @@ -14,6 +14,7 @@ import WelcomeText from '../components/WelcomeText'; import ONYXKEYS from '../ONYXKEYS'; import {setPassword} from '../libs/actions/Session'; import ButtonWithLoader from '../components/ButtonWithLoader'; +import compose from '../libs/compose'; const propTypes = { /* Onyx Props */ @@ -134,7 +135,10 @@ class SetPasswordPage extends React.Component { SetPasswordPage.propTypes = propTypes; SetPasswordPage.defaultProps = defaultProps; -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(withWindowDimensions((SetPasswordPage))); +export default compose( + withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, + }), + withWindowDimensions, +)(SetPasswordPage); From 5bef9a17127930bd0911511468129657f488ca7d Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Fri, 26 Mar 2021 14:03:29 +0800 Subject: [PATCH 23/33] Add displayName --- src/components/WelcomeText.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/WelcomeText.js b/src/components/WelcomeText.js index c8af5ac26bd7..74a020ccf517 100644 --- a/src/components/WelcomeText.js +++ b/src/components/WelcomeText.js @@ -22,5 +22,6 @@ const WelcomeText = props => ( ); WelcomeText.propTypes = propTypes; +WelcomeText.displayName = 'WelcomeText'; export default withWindowDimensions(WelcomeText); From f534f061c9b0dfe6f5d437d58bbbc362159b0aef Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Fri, 26 Mar 2021 14:04:38 +0800 Subject: [PATCH 24/33] Use ...windowDimensionsPropTypes --- src/components/WelcomeText.js | 5 ++--- src/pages/SetPasswordPage.js | 6 ++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/components/WelcomeText.js b/src/components/WelcomeText.js index 74a020ccf517..e41550d86c16 100644 --- a/src/components/WelcomeText.js +++ b/src/components/WelcomeText.js @@ -1,11 +1,10 @@ import React from 'react'; import {Text, View} from 'react-native'; -import PropTypes from 'prop-types'; import styles from '../styles/styles'; -import withWindowDimensions from './withWindowDimensions'; +import withWindowDimensions, {windowDimensionsPropTypes} from './withWindowDimensions'; const propTypes = { - isSmallScreenWidth: PropTypes.bool.isRequired, + ...windowDimensionsPropTypes, }; const WelcomeText = props => ( diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js index 69b82e5cafd3..b82d3780d936 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/SetPasswordPage.js @@ -9,7 +9,7 @@ import _ from 'underscore'; import styles from '../styles/styles'; import SignInPageLayout from './signin/SignInPageLayout'; import welcomeScreenshot from '../../assets/images/welcome-screenshot.png'; -import withWindowDimensions from '../components/withWindowDimensions'; +import withWindowDimensions, {windowDimensionsPropTypes} from '../components/withWindowDimensions'; import WelcomeText from '../components/WelcomeText'; import ONYXKEYS from '../ONYXKEYS'; import {setPassword} from '../libs/actions/Session'; @@ -37,14 +37,12 @@ const propTypes = { password: PropTypes.string, }), - // Is this displaying on a device with a narrower screen width? - isSmallScreenWidth: PropTypes.bool.isRequired, - route: PropTypes.shape({ params: PropTypes.shape({ validateCode: PropTypes.string, }), }), + ...windowDimensionsPropTypes, }; const defaultProps = { account: {}, From ade55fb86f924f291d5dd9375e44cad1eb9639f3 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Fri, 26 Mar 2021 14:07:01 +0800 Subject: [PATCH 25/33] Revert stuff changed by --fix --- src/pages/SetPasswordPage.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js index b82d3780d936..4d09d5dd8a46 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/SetPasswordPage.js @@ -1,6 +1,10 @@ -import React from 'react'; +import React, {Component} from 'react'; import { - Image, SafeAreaView, Text, TextInput, View, + Image, + SafeAreaView, + Text, + TextInput, + View, } from 'react-native'; import PropTypes from 'prop-types'; import lodashGet from 'lodash/get'; @@ -52,7 +56,7 @@ const defaultProps = { }, }; -class SetPasswordPage extends React.Component { +class SetPasswordPage extends Component { constructor(props) { super(props); this.submitForm = this.submitForm.bind(this); From c7382e12cb28ede3d4a8c3ddaec6912c0af28a2c Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Fri, 26 Mar 2021 14:07:57 +0800 Subject: [PATCH 26/33] Revert stuff changed by --fix --- src/pages/SetPasswordPage.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js index 4d09d5dd8a46..af12df76737f 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/SetPasswordPage.js @@ -59,6 +59,7 @@ const defaultProps = { class SetPasswordPage extends Component { constructor(props) { super(props); + this.submitForm = this.submitForm.bind(this); this.state = { From a658b53936f340fbdb52d5ad1394c0e7fb0dc98d Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 31 Mar 2021 13:16:33 +0800 Subject: [PATCH 27/33] Revert back into multiple components to fix layout on wide native devices. --- .../Navigation/AppNavigator/PublicScreens.js | 2 +- src/pages/SetPasswordPage.js | 147 ------------------ src/pages/setpassword/SetPasswordForm.js | 83 ++++++++++ .../setpassword/SetPasswordPageNarrow.js | 41 +++++ src/pages/setpassword/SetPasswordPageWide.js | 32 ++++ src/pages/setpassword/index.js | 23 +++ src/pages/setpassword/index.native.js | 3 + .../setpassword/setPasswordPagePropTypes.js | 38 +++++ 8 files changed, 221 insertions(+), 148 deletions(-) delete mode 100644 src/pages/SetPasswordPage.js create mode 100644 src/pages/setpassword/SetPasswordForm.js create mode 100644 src/pages/setpassword/SetPasswordPageNarrow.js create mode 100644 src/pages/setpassword/SetPasswordPageWide.js create mode 100644 src/pages/setpassword/index.js create mode 100644 src/pages/setpassword/index.native.js create mode 100644 src/pages/setpassword/setPasswordPagePropTypes.js diff --git a/src/libs/Navigation/AppNavigator/PublicScreens.js b/src/libs/Navigation/AppNavigator/PublicScreens.js index 141695a74ff5..f3982f8f3f7f 100644 --- a/src/libs/Navigation/AppNavigator/PublicScreens.js +++ b/src/libs/Navigation/AppNavigator/PublicScreens.js @@ -1,7 +1,7 @@ import React from 'react'; import {createStackNavigator} from '@react-navigation/stack'; import SignInPage from '../../../pages/signin/SignInPage'; -import SetPasswordPage from '../../../pages/SetPasswordPage'; +import SetPasswordPage from '../../../pages/setpassword'; const RootStack = createStackNavigator(); const defaultScreenOptions = { diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js deleted file mode 100644 index af12df76737f..000000000000 --- a/src/pages/SetPasswordPage.js +++ /dev/null @@ -1,147 +0,0 @@ -import React, {Component} from 'react'; -import { - Image, - SafeAreaView, - Text, - TextInput, - View, -} from 'react-native'; -import PropTypes from 'prop-types'; -import lodashGet from 'lodash/get'; -import {withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; -import styles from '../styles/styles'; -import SignInPageLayout from './signin/SignInPageLayout'; -import welcomeScreenshot from '../../assets/images/welcome-screenshot.png'; -import withWindowDimensions, {windowDimensionsPropTypes} from '../components/withWindowDimensions'; -import WelcomeText from '../components/WelcomeText'; -import ONYXKEYS from '../ONYXKEYS'; -import {setPassword} from '../libs/actions/Session'; -import ButtonWithLoader from '../components/ButtonWithLoader'; -import compose from '../libs/compose'; - -const propTypes = { - /* Onyx Props */ - - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - - // The credentials of the logged in person - credentials: PropTypes.shape({ - // The email the user logged in with - login: PropTypes.string, - - // The password used to log in the user - password: PropTypes.string, - }), - - route: PropTypes.shape({ - params: PropTypes.shape({ - validateCode: PropTypes.string, - }), - }), - ...windowDimensionsPropTypes, -}; -const defaultProps = { - account: {}, - credentials: {}, - route: { - params: {}, - }, -}; - -class SetPasswordPage extends Component { - constructor(props) { - super(props); - - this.submitForm = this.submitForm.bind(this); - - this.state = { - password: '', - formError: null, - }; - } - - /** - * Validate the form and then submit it - */ - submitForm() { - if (!this.state.password.trim()) { - this.setState({ - formError: 'Password cannot be blank', - }); - return; - } - - this.setState({ - formError: null, - }); - setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); - } - - render() { - return ( - - - - - Enter a password: - this.setState({password: text})} - onSubmitEditing={this.submitForm} - autoFocus - /> - - - {this.state.formError && ( - - {this.state.formError} - - )} - {!_.isEmpty(this.props.account.error) && ( - - {this.props.account.error} - - )} - {this.props.isSmallScreenWidth && ( - - - - )} - - - - - ); - } -} - -SetPasswordPage.propTypes = propTypes; -SetPasswordPage.defaultProps = defaultProps; - -export default compose( - withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, - }), - withWindowDimensions, -)(SetPasswordPage); diff --git a/src/pages/setpassword/SetPasswordForm.js b/src/pages/setpassword/SetPasswordForm.js new file mode 100644 index 000000000000..7e52004d9c44 --- /dev/null +++ b/src/pages/setpassword/SetPasswordForm.js @@ -0,0 +1,83 @@ +import React, {Component} from 'react'; +import lodashGet from 'lodash/get'; +import {Text, TextInput, View} from 'react-native'; +import _ from 'underscore'; +import {withOnyx} from 'react-native-onyx'; +import styles from '../../styles/styles'; +import ButtonWithLoader from '../../components/ButtonWithLoader'; +import {setPassword} from '../../libs/actions/Session'; +import setPasswordPagePropTypes from './setPasswordPagePropTypes'; +import ONYXKEYS from '../../ONYXKEYS'; + +class SetPasswordForm extends Component { + constructor(props) { + super(props); + + this.submitForm = this.submitForm.bind(this); + + this.state = { + password: '', + formError: null, + }; + } + + /** + * Validate the form and then submit it + */ + submitForm() { + if (!this.state.password.trim()) { + this.setState({ + formError: 'Password cannot be blank', + }); + return; + } + + this.setState({ + formError: null, + }); + setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); + } + + render() { + return ( + <> + + Enter a password: + this.setState({password: text})} + onSubmitEditing={this.submitForm} + autoFocus + /> + + + {this.state.formError && ( + + {this.state.formError} + + )} + {!_.isEmpty(this.props.account.error) && ( + + {this.props.account.error} + + )} + + ); + } +} + +SetPasswordForm.propTypes = setPasswordPagePropTypes.propTypes; +SetPasswordForm.defaultProps = setPasswordPagePropTypes.defaultProps; + +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(SetPasswordForm); diff --git a/src/pages/setpassword/SetPasswordPageNarrow.js b/src/pages/setpassword/SetPasswordPageNarrow.js new file mode 100644 index 000000000000..8e43a805147b --- /dev/null +++ b/src/pages/setpassword/SetPasswordPageNarrow.js @@ -0,0 +1,41 @@ +import React from 'react'; +import { + SafeAreaView, + View, + Image, +} from 'react-native'; +import withOnyx from 'react-native-onyx/lib/withOnyx'; +import styles from '../../styles/styles'; +import SignInPageLayout from '../signin/SignInPageLayout'; +import WelcomeText from '../../components/WelcomeText'; +import ONYXKEYS from '../../ONYXKEYS'; +import SetPasswordForm from './SetPasswordForm'; +import welcomeScreenshot from '../../../assets/images/welcome-screenshot-wide.png'; +import setPasswordPagePropTypes from './setPasswordPagePropTypes'; + +const SetPasswordPageNarrow = props => ( + + + + {/* eslint-disable-next-line react/jsx-props-no-spreading */} + + + + + + + + +); + +SetPasswordPageNarrow.propTypes = setPasswordPagePropTypes.propTypes; +SetPasswordPageNarrow.defaultProps = setPasswordPagePropTypes.defaultProps; + +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(SetPasswordPageNarrow); diff --git a/src/pages/setpassword/SetPasswordPageWide.js b/src/pages/setpassword/SetPasswordPageWide.js new file mode 100644 index 000000000000..e0dd5d8c1149 --- /dev/null +++ b/src/pages/setpassword/SetPasswordPageWide.js @@ -0,0 +1,32 @@ +import React from 'react'; +import { + SafeAreaView, + View, +} from 'react-native'; +import {withOnyx} from 'react-native-onyx'; +import styles from '../../styles/styles'; +import SignInPageLayout from '../signin/SignInPageLayout'; +import WelcomeText from '../../components/WelcomeText'; +import ONYXKEYS from '../../ONYXKEYS'; +import setPasswordPagePropTypes from './setPasswordPagePropTypes'; +import SetPasswordForm from './SetPasswordForm'; + +const SetPasswordPageWide = props => ( + + + + {/* eslint-disable-next-line react/jsx-props-no-spreading */} + + + + + +); + +SetPasswordPageWide.propTypes = setPasswordPagePropTypes.propTypes; +SetPasswordPageWide.defaultProps = setPasswordPagePropTypes.defaultProps; + +export default withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, +})(SetPasswordPageWide); diff --git a/src/pages/setpassword/index.js b/src/pages/setpassword/index.js new file mode 100644 index 000000000000..2e39913f60f8 --- /dev/null +++ b/src/pages/setpassword/index.js @@ -0,0 +1,23 @@ +import React from 'react'; +import SetPasswordPageWide from './SetPasswordPageWide'; +import SetPasswordPageNarrow from './SetPasswordPageNarrow'; +import withWindowDimensions, {windowDimensionsPropTypes} from '../../components/withWindowDimensions'; +import setPasswordPagePropTypes from './setPasswordPagePropTypes'; + +const propTypes = { + ...windowDimensionsPropTypes, + ...setPasswordPagePropTypes.propTypes, +}; + +const SetPasswordPage = props => ( + !props.isSmallScreenWidth + // eslint-disable-next-line react/jsx-props-no-spreading + ? + // eslint-disable-next-line react/jsx-props-no-spreading + : +); + +SetPasswordPage.propTypes = propTypes; +SetPasswordPage.defaultProps = setPasswordPagePropTypes.defaultProps; + +export default withWindowDimensions(SetPasswordPage); diff --git a/src/pages/setpassword/index.native.js b/src/pages/setpassword/index.native.js new file mode 100644 index 000000000000..099b24104f3c --- /dev/null +++ b/src/pages/setpassword/index.native.js @@ -0,0 +1,3 @@ +import SetPasswordPageNarrow from './SetPasswordPageNarrow'; + +export default SetPasswordPageNarrow; diff --git a/src/pages/setpassword/setPasswordPagePropTypes.js b/src/pages/setpassword/setPasswordPagePropTypes.js new file mode 100644 index 000000000000..9ea2e080fc31 --- /dev/null +++ b/src/pages/setpassword/setPasswordPagePropTypes.js @@ -0,0 +1,38 @@ +import PropTypes from 'prop-types'; + +export default { + propTypes: PropTypes.shape({ + /* Onyx Props */ + + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + + // The credentials of the logged in person + credentials: PropTypes.shape({ + // The email the user logged in with + login: PropTypes.string, + + // The password used to log in the user + password: PropTypes.string, + }), + + route: PropTypes.shape({ + params: PropTypes.shape({ + validateCode: PropTypes.string, + }), + }), + }), + defaultProps: { + account: {}, + credentials: {}, + route: { + params: {}, + }, + }, +}; From cc0ebcd460dbf708a5f11e33263fa28493f1ca33 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Wed, 31 Mar 2021 13:20:27 +0800 Subject: [PATCH 28/33] Fix ESLint --- src/pages/setpassword/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/setpassword/index.js b/src/pages/setpassword/index.js index 2e39913f60f8..4016ae4fa1c8 100644 --- a/src/pages/setpassword/index.js +++ b/src/pages/setpassword/index.js @@ -6,6 +6,7 @@ import setPasswordPagePropTypes from './setPasswordPagePropTypes'; const propTypes = { ...windowDimensionsPropTypes, + // eslint-disable-next-line react/forbid-foreign-prop-types ...setPasswordPagePropTypes.propTypes, }; From e6a36040daad311c4c34c038557a748117f8f297 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Thu, 1 Apr 2021 09:37:41 +0800 Subject: [PATCH 29/33] Revert "Fix ESLint" This reverts commit cc0ebcd460dbf708a5f11e33263fa28493f1ca33. --- src/pages/setpassword/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/setpassword/index.js b/src/pages/setpassword/index.js index 4016ae4fa1c8..2e39913f60f8 100644 --- a/src/pages/setpassword/index.js +++ b/src/pages/setpassword/index.js @@ -6,7 +6,6 @@ import setPasswordPagePropTypes from './setPasswordPagePropTypes'; const propTypes = { ...windowDimensionsPropTypes, - // eslint-disable-next-line react/forbid-foreign-prop-types ...setPasswordPagePropTypes.propTypes, }; From 951f4fb93d52384790f9c059e72bcaec292bc8ca Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Thu, 1 Apr 2021 09:37:45 +0800 Subject: [PATCH 30/33] Revert "Revert back into multiple components to fix layout on wide native devices." This reverts commit a658b53936f340fbdb52d5ad1394c0e7fb0dc98d. --- .../Navigation/AppNavigator/PublicScreens.js | 2 +- src/pages/SetPasswordPage.js | 147 ++++++++++++++++++ src/pages/setpassword/SetPasswordForm.js | 83 ---------- .../setpassword/SetPasswordPageNarrow.js | 41 ----- src/pages/setpassword/SetPasswordPageWide.js | 32 ---- src/pages/setpassword/index.js | 23 --- src/pages/setpassword/index.native.js | 3 - .../setpassword/setPasswordPagePropTypes.js | 38 ----- 8 files changed, 148 insertions(+), 221 deletions(-) create mode 100644 src/pages/SetPasswordPage.js delete mode 100644 src/pages/setpassword/SetPasswordForm.js delete mode 100644 src/pages/setpassword/SetPasswordPageNarrow.js delete mode 100644 src/pages/setpassword/SetPasswordPageWide.js delete mode 100644 src/pages/setpassword/index.js delete mode 100644 src/pages/setpassword/index.native.js delete mode 100644 src/pages/setpassword/setPasswordPagePropTypes.js diff --git a/src/libs/Navigation/AppNavigator/PublicScreens.js b/src/libs/Navigation/AppNavigator/PublicScreens.js index f3982f8f3f7f..141695a74ff5 100644 --- a/src/libs/Navigation/AppNavigator/PublicScreens.js +++ b/src/libs/Navigation/AppNavigator/PublicScreens.js @@ -1,7 +1,7 @@ import React from 'react'; import {createStackNavigator} from '@react-navigation/stack'; import SignInPage from '../../../pages/signin/SignInPage'; -import SetPasswordPage from '../../../pages/setpassword'; +import SetPasswordPage from '../../../pages/SetPasswordPage'; const RootStack = createStackNavigator(); const defaultScreenOptions = { diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js new file mode 100644 index 000000000000..af12df76737f --- /dev/null +++ b/src/pages/SetPasswordPage.js @@ -0,0 +1,147 @@ +import React, {Component} from 'react'; +import { + Image, + SafeAreaView, + Text, + TextInput, + View, +} from 'react-native'; +import PropTypes from 'prop-types'; +import lodashGet from 'lodash/get'; +import {withOnyx} from 'react-native-onyx'; +import _ from 'underscore'; +import styles from '../styles/styles'; +import SignInPageLayout from './signin/SignInPageLayout'; +import welcomeScreenshot from '../../assets/images/welcome-screenshot.png'; +import withWindowDimensions, {windowDimensionsPropTypes} from '../components/withWindowDimensions'; +import WelcomeText from '../components/WelcomeText'; +import ONYXKEYS from '../ONYXKEYS'; +import {setPassword} from '../libs/actions/Session'; +import ButtonWithLoader from '../components/ButtonWithLoader'; +import compose from '../libs/compose'; + +const propTypes = { + /* Onyx Props */ + + // The details about the account that the user is signing in with + account: PropTypes.shape({ + // An error message to display to the user + error: PropTypes.string, + + // Whether or not a sign on form is loading (being submitted) + loading: PropTypes.bool, + }), + + // The credentials of the logged in person + credentials: PropTypes.shape({ + // The email the user logged in with + login: PropTypes.string, + + // The password used to log in the user + password: PropTypes.string, + }), + + route: PropTypes.shape({ + params: PropTypes.shape({ + validateCode: PropTypes.string, + }), + }), + ...windowDimensionsPropTypes, +}; +const defaultProps = { + account: {}, + credentials: {}, + route: { + params: {}, + }, +}; + +class SetPasswordPage extends Component { + constructor(props) { + super(props); + + this.submitForm = this.submitForm.bind(this); + + this.state = { + password: '', + formError: null, + }; + } + + /** + * Validate the form and then submit it + */ + submitForm() { + if (!this.state.password.trim()) { + this.setState({ + formError: 'Password cannot be blank', + }); + return; + } + + this.setState({ + formError: null, + }); + setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); + } + + render() { + return ( + + + + + Enter a password: + this.setState({password: text})} + onSubmitEditing={this.submitForm} + autoFocus + /> + + + {this.state.formError && ( + + {this.state.formError} + + )} + {!_.isEmpty(this.props.account.error) && ( + + {this.props.account.error} + + )} + {this.props.isSmallScreenWidth && ( + + + + )} + + + + + ); + } +} + +SetPasswordPage.propTypes = propTypes; +SetPasswordPage.defaultProps = defaultProps; + +export default compose( + withOnyx({ + credentials: {key: ONYXKEYS.CREDENTIALS}, + account: {key: ONYXKEYS.ACCOUNT}, + }), + withWindowDimensions, +)(SetPasswordPage); diff --git a/src/pages/setpassword/SetPasswordForm.js b/src/pages/setpassword/SetPasswordForm.js deleted file mode 100644 index 7e52004d9c44..000000000000 --- a/src/pages/setpassword/SetPasswordForm.js +++ /dev/null @@ -1,83 +0,0 @@ -import React, {Component} from 'react'; -import lodashGet from 'lodash/get'; -import {Text, TextInput, View} from 'react-native'; -import _ from 'underscore'; -import {withOnyx} from 'react-native-onyx'; -import styles from '../../styles/styles'; -import ButtonWithLoader from '../../components/ButtonWithLoader'; -import {setPassword} from '../../libs/actions/Session'; -import setPasswordPagePropTypes from './setPasswordPagePropTypes'; -import ONYXKEYS from '../../ONYXKEYS'; - -class SetPasswordForm extends Component { - constructor(props) { - super(props); - - this.submitForm = this.submitForm.bind(this); - - this.state = { - password: '', - formError: null, - }; - } - - /** - * Validate the form and then submit it - */ - submitForm() { - if (!this.state.password.trim()) { - this.setState({ - formError: 'Password cannot be blank', - }); - return; - } - - this.setState({ - formError: null, - }); - setPassword(this.state.password, lodashGet(this.props.route, 'params.validateCode', '')); - } - - render() { - return ( - <> - - Enter a password: - this.setState({password: text})} - onSubmitEditing={this.submitForm} - autoFocus - /> - - - {this.state.formError && ( - - {this.state.formError} - - )} - {!_.isEmpty(this.props.account.error) && ( - - {this.props.account.error} - - )} - - ); - } -} - -SetPasswordForm.propTypes = setPasswordPagePropTypes.propTypes; -SetPasswordForm.defaultProps = setPasswordPagePropTypes.defaultProps; - -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(SetPasswordForm); diff --git a/src/pages/setpassword/SetPasswordPageNarrow.js b/src/pages/setpassword/SetPasswordPageNarrow.js deleted file mode 100644 index 8e43a805147b..000000000000 --- a/src/pages/setpassword/SetPasswordPageNarrow.js +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react'; -import { - SafeAreaView, - View, - Image, -} from 'react-native'; -import withOnyx from 'react-native-onyx/lib/withOnyx'; -import styles from '../../styles/styles'; -import SignInPageLayout from '../signin/SignInPageLayout'; -import WelcomeText from '../../components/WelcomeText'; -import ONYXKEYS from '../../ONYXKEYS'; -import SetPasswordForm from './SetPasswordForm'; -import welcomeScreenshot from '../../../assets/images/welcome-screenshot-wide.png'; -import setPasswordPagePropTypes from './setPasswordPagePropTypes'; - -const SetPasswordPageNarrow = props => ( - - - - {/* eslint-disable-next-line react/jsx-props-no-spreading */} - - - - - - - - -); - -SetPasswordPageNarrow.propTypes = setPasswordPagePropTypes.propTypes; -SetPasswordPageNarrow.defaultProps = setPasswordPagePropTypes.defaultProps; - -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(SetPasswordPageNarrow); diff --git a/src/pages/setpassword/SetPasswordPageWide.js b/src/pages/setpassword/SetPasswordPageWide.js deleted file mode 100644 index e0dd5d8c1149..000000000000 --- a/src/pages/setpassword/SetPasswordPageWide.js +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; -import { - SafeAreaView, - View, -} from 'react-native'; -import {withOnyx} from 'react-native-onyx'; -import styles from '../../styles/styles'; -import SignInPageLayout from '../signin/SignInPageLayout'; -import WelcomeText from '../../components/WelcomeText'; -import ONYXKEYS from '../../ONYXKEYS'; -import setPasswordPagePropTypes from './setPasswordPagePropTypes'; -import SetPasswordForm from './SetPasswordForm'; - -const SetPasswordPageWide = props => ( - - - - {/* eslint-disable-next-line react/jsx-props-no-spreading */} - - - - - -); - -SetPasswordPageWide.propTypes = setPasswordPagePropTypes.propTypes; -SetPasswordPageWide.defaultProps = setPasswordPagePropTypes.defaultProps; - -export default withOnyx({ - credentials: {key: ONYXKEYS.CREDENTIALS}, - account: {key: ONYXKEYS.ACCOUNT}, -})(SetPasswordPageWide); diff --git a/src/pages/setpassword/index.js b/src/pages/setpassword/index.js deleted file mode 100644 index 2e39913f60f8..000000000000 --- a/src/pages/setpassword/index.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import SetPasswordPageWide from './SetPasswordPageWide'; -import SetPasswordPageNarrow from './SetPasswordPageNarrow'; -import withWindowDimensions, {windowDimensionsPropTypes} from '../../components/withWindowDimensions'; -import setPasswordPagePropTypes from './setPasswordPagePropTypes'; - -const propTypes = { - ...windowDimensionsPropTypes, - ...setPasswordPagePropTypes.propTypes, -}; - -const SetPasswordPage = props => ( - !props.isSmallScreenWidth - // eslint-disable-next-line react/jsx-props-no-spreading - ? - // eslint-disable-next-line react/jsx-props-no-spreading - : -); - -SetPasswordPage.propTypes = propTypes; -SetPasswordPage.defaultProps = setPasswordPagePropTypes.defaultProps; - -export default withWindowDimensions(SetPasswordPage); diff --git a/src/pages/setpassword/index.native.js b/src/pages/setpassword/index.native.js deleted file mode 100644 index 099b24104f3c..000000000000 --- a/src/pages/setpassword/index.native.js +++ /dev/null @@ -1,3 +0,0 @@ -import SetPasswordPageNarrow from './SetPasswordPageNarrow'; - -export default SetPasswordPageNarrow; diff --git a/src/pages/setpassword/setPasswordPagePropTypes.js b/src/pages/setpassword/setPasswordPagePropTypes.js deleted file mode 100644 index 9ea2e080fc31..000000000000 --- a/src/pages/setpassword/setPasswordPagePropTypes.js +++ /dev/null @@ -1,38 +0,0 @@ -import PropTypes from 'prop-types'; - -export default { - propTypes: PropTypes.shape({ - /* Onyx Props */ - - // The details about the account that the user is signing in with - account: PropTypes.shape({ - // An error message to display to the user - error: PropTypes.string, - - // Whether or not a sign on form is loading (being submitted) - loading: PropTypes.bool, - }), - - // The credentials of the logged in person - credentials: PropTypes.shape({ - // The email the user logged in with - login: PropTypes.string, - - // The password used to log in the user - password: PropTypes.string, - }), - - route: PropTypes.shape({ - params: PropTypes.shape({ - validateCode: PropTypes.string, - }), - }), - }), - defaultProps: { - account: {}, - credentials: {}, - route: { - params: {}, - }, - }, -}; From 5b48bd07050a8b2e6cda34a53b3db9b174b74661 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Thu, 1 Apr 2021 09:58:53 +0800 Subject: [PATCH 31/33] Refactored back into single components, change SigninPageLayout so it can be used with components that don't have wide/narrow counterparts. --- src/pages/SetPasswordPage.js | 63 ++++++++----------- src/pages/signin/LoginForm/LoginFormNarrow.js | 14 +---- src/pages/signin/PasswordForm.js | 4 +- src/pages/signin/ResendValidationForm.js | 4 +- src/pages/signin/SignInPage.js | 21 +++++-- .../SignInPageLayoutNarrow.js | 17 ++++- .../SignInPageLayout/SignInPageLayoutWide.js | 2 +- src/pages/signin/SignInPageLayout/index.js | 9 +-- 8 files changed, 69 insertions(+), 65 deletions(-) diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js index af12df76737f..48261cff6dac 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/SetPasswordPage.js @@ -89,45 +89,34 @@ class SetPasswordPage extends Component { return ( - - - Enter a password: - this.setState({password: text})} - onSubmitEditing={this.submitForm} - autoFocus - /> - - + Enter a password: + this.setState({password: text})} + onSubmitEditing={this.submitForm} + autoFocus /> - {this.state.formError && ( - - {this.state.formError} - - )} - {!_.isEmpty(this.props.account.error) && ( - - {this.props.account.error} - - )} - {this.props.isSmallScreenWidth && ( - - - - )} + + {this.state.formError && ( + + {this.state.formError} + + )} + {!_.isEmpty(this.props.account.error) && ( + + {this.props.account.error} + + )} diff --git a/src/pages/signin/LoginForm/LoginFormNarrow.js b/src/pages/signin/LoginForm/LoginFormNarrow.js index 821dbc0367bb..dd90c85e7fb1 100644 --- a/src/pages/signin/LoginForm/LoginFormNarrow.js +++ b/src/pages/signin/LoginForm/LoginFormNarrow.js @@ -61,7 +61,7 @@ class LoginFormNarrow extends React.Component { render() { return ( - + <> Enter your phone or email: )} - - - - - - - + ); } } diff --git a/src/pages/signin/PasswordForm.js b/src/pages/signin/PasswordForm.js index 8c9b95b9f284..8f2bb3e86d62 100644 --- a/src/pages/signin/PasswordForm.js +++ b/src/pages/signin/PasswordForm.js @@ -64,7 +64,7 @@ class PasswordForm extends React.Component { render() { return ( - + <> Password )} - + ); } } diff --git a/src/pages/signin/ResendValidationForm.js b/src/pages/signin/ResendValidationForm.js index 19ea6c5e41a9..f2763669f518 100644 --- a/src/pages/signin/ResendValidationForm.js +++ b/src/pages/signin/ResendValidationForm.js @@ -57,7 +57,7 @@ class ResendValidationForm extends React.Component { render() { return ( - + <> Please validate your account by clicking on the link we just sent you. @@ -77,7 +77,7 @@ class ResendValidationForm extends React.Component { {this.state.formSuccess} )} - + ); } } diff --git a/src/pages/signin/SignInPage.js b/src/pages/signin/SignInPage.js index bcc0b34157d1..292f59383661 100644 --- a/src/pages/signin/SignInPage.js +++ b/src/pages/signin/SignInPage.js @@ -13,6 +13,8 @@ import LoginForm from './LoginForm'; import PasswordForm from './PasswordForm'; import ResendValidationForm from './ResendValidationForm'; import TermsAndLicenses from './TermsAndLicenses'; +import withWindowDimensions, {windowDimensionsPropTypes} from '../../components/withWindowDimensions'; +import compose from '../../libs/compose'; const propTypes = { /* Onyx Props */ @@ -38,6 +40,8 @@ const propTypes = { // Error to display when there is a session error returned authToken: PropTypes.string, }), + + ...windowDimensionsPropTypes, }; const defaultProps = { @@ -94,7 +98,9 @@ class SignInPage extends Component { )} - + {/* Because the Terms and Licenses need to be placed in different parts of the DOM + to display correctly between wide/narrow screens */} + {!this.props.isSmallScreenWidth && } @@ -105,8 +111,11 @@ class SignInPage extends Component { SignInPage.propTypes = propTypes; SignInPage.defaultProps = defaultProps; -export default withOnyx({ - account: {key: ONYXKEYS.ACCOUNT}, - credentials: {key: ONYXKEYS.CREDENTIALS}, - session: {key: ONYXKEYS.SESSION}, -})(SignInPage); +export default compose( + withOnyx({ + account: {key: ONYXKEYS.ACCOUNT}, + credentials: {key: ONYXKEYS.CREDENTIALS}, + session: {key: ONYXKEYS.SESSION}, + }), + withWindowDimensions, +)(SignInPage); diff --git a/src/pages/signin/SignInPageLayout/SignInPageLayoutNarrow.js b/src/pages/signin/SignInPageLayout/SignInPageLayoutNarrow.js index e3e70ea20b57..725b3d8f4422 100644 --- a/src/pages/signin/SignInPageLayout/SignInPageLayoutNarrow.js +++ b/src/pages/signin/SignInPageLayout/SignInPageLayoutNarrow.js @@ -1,11 +1,15 @@ import React from 'react'; import { + Image, ScrollView, Text, View, } from 'react-native'; import PropTypes from 'prop-types'; import styles from '../../../styles/styles'; import variables from '../../../styles/variables'; import ExpensifyCashLogo from '../../../../assets/images/expensify-cash.svg'; +import welcomeScreenshot from '../../../../assets/images/welcome-screenshot.png'; +import WelcomeText from '../../../components/WelcomeText'; +import TermsAndLicenses from '../TermsAndLicenses'; const propTypes = { // The children to show inside the layout @@ -26,7 +30,18 @@ const SignInPageLayoutNarrow = ({children}) => ( - {children} + + {children} + + + + + + diff --git a/src/pages/signin/SignInPageLayout/SignInPageLayoutWide.js b/src/pages/signin/SignInPageLayout/SignInPageLayoutWide.js index d2bfce6cdb44..0bc4df2f90c4 100644 --- a/src/pages/signin/SignInPageLayout/SignInPageLayoutWide.js +++ b/src/pages/signin/SignInPageLayout/SignInPageLayoutWide.js @@ -7,6 +7,7 @@ import styles from '../../../styles/styles'; import ExpensifyCashLogo from '../../../../assets/images/expensify-cash.svg'; import welcomeScreenshot from '../../../../assets/images/welcome-screenshot-wide.png'; import variables from '../../../styles/variables'; +import TermsAndLicenses from '../TermsAndLicenses'; const propTypes = { // The children to show inside the layout @@ -35,7 +36,6 @@ const SignInPageLayoutWide = ({children}) => ( Expensify.cash - {children} diff --git a/src/pages/signin/SignInPageLayout/index.js b/src/pages/signin/SignInPageLayout/index.js index 41313d9484cf..73b7cadc7d7b 100644 --- a/src/pages/signin/SignInPageLayout/index.js +++ b/src/pages/signin/SignInPageLayout/index.js @@ -2,6 +2,7 @@ import React from 'react'; import SignInPageLayoutNarrow from './SignInPageLayoutNarrow'; import SignInPageLayoutWide from './SignInPageLayoutWide'; import withWindowDimensions, {windowDimensionsPropTypes} from '../../../components/withWindowDimensions'; +import TermsAndLicenses from '../TermsAndLicenses'; const propTypes = { ...windowDimensionsPropTypes, @@ -9,10 +10,10 @@ const propTypes = { const SignInPageLayout = props => ( !props.isSmallScreenWidth - // eslint-disable-next-line react/jsx-props-no-spreading - ? - // eslint-disable-next-line react/jsx-props-no-spreading - : + // eslint-disable-next-line react/jsx-props-no-spreading + ? + // eslint-disable-next-line react/jsx-props-no-spreading + : ); SignInPageLayout.propTypes = propTypes; From 19684a4b8c8edd783e41c761c920457a63753528 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Thu, 1 Apr 2021 10:00:46 +0800 Subject: [PATCH 32/33] Fix indent --- src/pages/signin/SignInPageLayout/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/signin/SignInPageLayout/index.js b/src/pages/signin/SignInPageLayout/index.js index 73b7cadc7d7b..7ad437090127 100644 --- a/src/pages/signin/SignInPageLayout/index.js +++ b/src/pages/signin/SignInPageLayout/index.js @@ -10,10 +10,10 @@ const propTypes = { const SignInPageLayout = props => ( !props.isSmallScreenWidth - // eslint-disable-next-line react/jsx-props-no-spreading - ? - // eslint-disable-next-line react/jsx-props-no-spreading - : + // eslint-disable-next-line react/jsx-props-no-spreading + ? + // eslint-disable-next-line react/jsx-props-no-spreading + : ); SignInPageLayout.propTypes = propTypes; From c265e20572256318df98b3bed217d8e7909d01f1 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Thu, 1 Apr 2021 10:04:12 +0800 Subject: [PATCH 33/33] Remove duplicate text --- src/pages/SetPasswordPage.js | 1 - src/pages/signin/SignInPageLayout/index.js | 1 - 2 files changed, 2 deletions(-) diff --git a/src/pages/SetPasswordPage.js b/src/pages/SetPasswordPage.js index 48261cff6dac..906cb86ee0b7 100644 --- a/src/pages/SetPasswordPage.js +++ b/src/pages/SetPasswordPage.js @@ -117,7 +117,6 @@ class SetPasswordPage extends Component { {this.props.account.error} )} - ); diff --git a/src/pages/signin/SignInPageLayout/index.js b/src/pages/signin/SignInPageLayout/index.js index 7ad437090127..41313d9484cf 100644 --- a/src/pages/signin/SignInPageLayout/index.js +++ b/src/pages/signin/SignInPageLayout/index.js @@ -2,7 +2,6 @@ import React from 'react'; import SignInPageLayoutNarrow from './SignInPageLayoutNarrow'; import SignInPageLayoutWide from './SignInPageLayoutWide'; import withWindowDimensions, {windowDimensionsPropTypes} from '../../../components/withWindowDimensions'; -import TermsAndLicenses from '../TermsAndLicenses'; const propTypes = { ...windowDimensionsPropTypes,