From 1eb31bc8cbd51cb0edf4966dbba970e5570e4198 Mon Sep 17 00:00:00 2001 From: Marc Glasser Date: Mon, 21 Aug 2023 09:01:26 -1000 Subject: [PATCH 01/18] Save queued updates to memory only --- src/ONYXKEYS.js | 3 --- src/libs/actions/QueuedOnyxUpdates.js | 16 +++++----------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/ONYXKEYS.js b/src/ONYXKEYS.js index 27e7f9f0ecf3..093ef83ef62b 100755 --- a/src/ONYXKEYS.js +++ b/src/ONYXKEYS.js @@ -24,9 +24,6 @@ export default { // Note: These are Persisted Requests - not all requests in the main queue as the key name might lead one to believe PERSISTED_REQUESTS: 'networkRequestQueue', - // Onyx updates from a response, or success or failure data from a request. - QUEUED_ONYX_UPDATES: 'queuedOnyxUpdates', - // Stores current date CURRENT_DATE: 'currentDate', diff --git a/src/libs/actions/QueuedOnyxUpdates.js b/src/libs/actions/QueuedOnyxUpdates.js index 486108dd56cf..f13ce83dcb97 100644 --- a/src/libs/actions/QueuedOnyxUpdates.js +++ b/src/libs/actions/QueuedOnyxUpdates.js @@ -1,24 +1,18 @@ -import Onyx from 'react-native-onyx'; -import ONYXKEYS from '../../ONYXKEYS'; - -// In this file we manage a queue of Onyx updates while the SequentialQueue is processing. There are functions to get the updates and clear the queue after saving the updates in Onyx. +// In this file we manage a queue of Onyx updates while the SequentialQueue is processing. There are functions to get the updates and clear the queue after saving the updates. let queuedOnyxUpdates = []; -Onyx.connect({ - key: ONYXKEYS.QUEUED_ONYX_UPDATES, - callback: (val) => (queuedOnyxUpdates = val || []), -}); /** * @param {Array} updates Onyx updates to queue for later - * @returns {Promise} + * @returns {Promise} */ function queueOnyxUpdates(updates) { - return Onyx.set(ONYXKEYS.QUEUED_ONYX_UPDATES, [...queuedOnyxUpdates, ...updates]); + queuedOnyxUpdates.concat(updates); + return Promise.resolve(); } function clear() { - Onyx.set(ONYXKEYS.QUEUED_ONYX_UPDATES, null); + queuedOnyxUpdates = []; } /** From 6307d475240e777bc6f3de1f167a6dc5ed802310 Mon Sep 17 00:00:00 2001 From: Marc Glasser Date: Mon, 21 Aug 2023 09:05:30 -1000 Subject: [PATCH 02/18] concat returns a new array --- src/libs/actions/QueuedOnyxUpdates.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/QueuedOnyxUpdates.js b/src/libs/actions/QueuedOnyxUpdates.js index f13ce83dcb97..d8f2d0b2519c 100644 --- a/src/libs/actions/QueuedOnyxUpdates.js +++ b/src/libs/actions/QueuedOnyxUpdates.js @@ -7,7 +7,7 @@ let queuedOnyxUpdates = []; * @returns {Promise} */ function queueOnyxUpdates(updates) { - queuedOnyxUpdates.concat(updates); + queuedOnyxUpdates = queuedOnyxUpdates.concat(updates); return Promise.resolve(); } From 3151b5f31adb04fb4a31324157653fe8901cc59c Mon Sep 17 00:00:00 2001 From: Marc Glasser Date: Fri, 1 Sep 2023 13:09:15 -1000 Subject: [PATCH 03/18] remove type --- src/ONYXKEYS.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index f381fab3fc64..d0e97e438736 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -302,7 +302,6 @@ type OnyxValues = { [ONYXKEYS.IS_SIDEBAR_LOADED]: boolean; [ONYXKEYS.SHOW_DOWNLOAD_APP_BANNER]: boolean; [ONYXKEYS.PERSISTED_REQUESTS]: OnyxTypes.Request[]; - [ONYXKEYS.QUEUED_ONYX_UPDATES]: OnyxTypes.QueuedOnyxUpdates; [ONYXKEYS.CURRENT_DATE]: string; [ONYXKEYS.CREDENTIALS]: OnyxTypes.Credentials; [ONYXKEYS.IOU]: OnyxTypes.IOU; From fd3c662cf8ef13758a52239db421ee8bfc7b2ae8 Mon Sep 17 00:00:00 2001 From: Marc Glasser Date: Fri, 15 Sep 2023 10:14:34 -1000 Subject: [PATCH 04/18] Fix import --- src/libs/actions/QueuedOnyxUpdates.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/actions/QueuedOnyxUpdates.js b/src/libs/actions/QueuedOnyxUpdates.js index bd83e7db3c01..d8e80613406e 100644 --- a/src/libs/actions/QueuedOnyxUpdates.js +++ b/src/libs/actions/QueuedOnyxUpdates.js @@ -1,5 +1,6 @@ -// In this file we manage a queue of Onyx updates while the SequentialQueue is processing. There are functions to get the updates and clear the queue after saving the updates. +import Onyx from 'react-native-onyx'; +// In this file we manage a queue of Onyx updates while the SequentialQueue is processing. There are functions to get the updates and clear the queue after saving the updates. let queuedOnyxUpdates = []; /** From 6a327f1ad1e80bf3c8238638687cfcecbe20aa11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20M=C3=B3rawski?= Date: Tue, 19 Sep 2023 16:37:41 +0200 Subject: [PATCH 05/18] added delete account error handling and delete modal visiblity fixx --- .../Contacts/ContactMethodDetailsPage.js | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js index a0091e5c184b..62aac934afe6 100644 --- a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js +++ b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js @@ -230,6 +230,7 @@ class ContactMethodDetailsPage extends Component { const isDefaultContactMethod = this.props.session.email === loginData.partnerUserID; const hasMagicCodeBeenSent = lodashGet(this.props.loginList, [contactMethod, 'validateCodeSent'], false); const isFailedAddContactMethod = Boolean(lodashGet(loginData, 'errorFields.addedLogin')); + const isFailedRemovedContactMethod = !!lodashGet(loginData, 'errorFields.deletedLogin'); return ( this.validateCodeFormRef.current && this.validateCodeFormRef.current.focus()}> @@ -245,7 +246,7 @@ class ContactMethodDetailsPage extends Component { prompt={this.props.translate('contacts.removeAreYouSure')} confirmText={this.props.translate('common.yesContinue')} cancelText={this.props.translate('common.cancel')} - isVisible={this.state.isDeleteModalOpen} + isVisible={this.state.isDeleteModalOpen && !isDefaultContactMethod} danger /> {isFailedAddContactMethod && ( @@ -284,14 +285,25 @@ class ContactMethodDetailsPage extends Component { ) : null} {isDefaultContactMethod ? ( - User.clearContactMethodErrors(contactMethod, 'defaultLogin')} - > - {this.props.translate('contacts.yourDefaultContactMethod')} - + <> + User.clearContactMethodErrors(contactMethod, 'defaultLogin')} + > + {this.props.translate('contacts.yourDefaultContactMethod')} + + {isFailedRemovedContactMethod && ( + User.clearContactMethodErrors(contactMethod, 'deletedLogin')} + > + <> + + )} + ) : ( Date: Wed, 20 Sep 2023 17:56:20 +0200 Subject: [PATCH 06/18] bool coercion by Boolean casting Co-authored-by: Michael (Mykhailo) Kravchenko --- src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js index 62aac934afe6..d3c212bae8e9 100644 --- a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js +++ b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js @@ -230,7 +230,7 @@ class ContactMethodDetailsPage extends Component { const isDefaultContactMethod = this.props.session.email === loginData.partnerUserID; const hasMagicCodeBeenSent = lodashGet(this.props.loginList, [contactMethod, 'validateCodeSent'], false); const isFailedAddContactMethod = Boolean(lodashGet(loginData, 'errorFields.addedLogin')); - const isFailedRemovedContactMethod = !!lodashGet(loginData, 'errorFields.deletedLogin'); + const isFailedRemovedContactMethod = Boolean(lodashGet(loginData, 'errorFields.deletedLogin')); return ( this.validateCodeFormRef.current && this.validateCodeFormRef.current.focus()}> From d0cb1551b409f2c10cf9ea321aa442fa2756c58f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20M=C3=B3rawski?= Date: Wed, 20 Sep 2023 18:50:01 +0200 Subject: [PATCH 07/18] cleaner way of presenting default contact delete error --- .../Contacts/ContactMethodDetailsPage.js | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js index d3c212bae8e9..2d9fb75cc983 100644 --- a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js +++ b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js @@ -285,25 +285,14 @@ class ContactMethodDetailsPage extends Component { ) : null} {isDefaultContactMethod ? ( - <> - User.clearContactMethodErrors(contactMethod, 'defaultLogin')} - > - {this.props.translate('contacts.yourDefaultContactMethod')} - - {isFailedRemovedContactMethod && ( - User.clearContactMethodErrors(contactMethod, 'deletedLogin')} - > - <> - - )} - + User.clearContactMethodErrors(contactMethod, isFailedRemovedContactMethod ? 'deletedLogin' : 'defaultLogin')} + > + {this.props.translate('contacts.yourDefaultContactMethod')} + ) : ( Date: Mon, 25 Sep 2023 17:03:02 +0700 Subject: [PATCH 08/18] update get contract method from url when open deep link --- src/CONST.ts | 2 ++ .../Contacts/ContactMethodDetailsPage.js | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/CONST.ts b/src/CONST.ts index 3a198aca2c8c..e3da90c3428c 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1252,6 +1252,8 @@ const CONST = { DATE_TIME_FORMAT: /^\d{2}-\d{2} \d{2}:\d{2} [AP]M$/, ATTACHMENT_ROUTE: /\/r\/(\d*)\/attachment/, ILLEGAL_FILENAME_CHARACTERS: /\/|<|>|\*|"|:|\?|\\|\|/g, + + ENCODE_PERCENT_CHARACTER: /%(25)+/g, }, PRONOUNS: { diff --git a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js index b8c817350a38..79d5f96aaefb 100644 --- a/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js +++ b/src/pages/settings/Profile/Contacts/ContactMethodDetailsPage.js @@ -25,6 +25,7 @@ import ValidateCodeForm from './ValidateCodeForm'; import ROUTES from '../../../../ROUTES'; import FullscreenLoadingIndicator from '../../../../components/FullscreenLoadingIndicator'; import FullPageNotFoundView from '../../../../components/BlockingViews/FullPageNotFoundView'; +import CONST from '../../../../CONST'; const propTypes = { /* Onyx Props */ @@ -131,7 +132,22 @@ class ContactMethodDetailsPage extends Component { * @returns {string} */ getContactMethod() { - return decodeURIComponent(lodashGet(this.props.route, 'params.contactMethod')); + const contactMethod = lodashGet(this.props.route, 'params.contactMethod'); + + // We find the number of times the url is encoded based on the last % sign and remove them. + const lastPercentIndex = contactMethod.lastIndexOf('%'); + const encodePercents = contactMethod.substring(lastPercentIndex).match(new RegExp('25', 'g')); + let numberEncodePercents = encodePercents ? encodePercents.length : 0; + const beforeAtSign = contactMethod.substring(0, lastPercentIndex).replace(CONST.REGEX.ENCODE_PERCENT_CHARACTER, (match) => { + if (numberEncodePercents > 0) { + numberEncodePercents--; + return '%'; + } + return match; + }); + const afterAtSign = contactMethod.substring(lastPercentIndex).replace(CONST.REGEX.ENCODE_PERCENT_CHARACTER, '%'); + + return decodeURIComponent(beforeAtSign + afterAtSign); } /** From 917c29263b00c12c7b0548e4132ee2796de5d9d9 Mon Sep 17 00:00:00 2001 From: Manan Date: Tue, 26 Sep 2023 10:53:18 +0530 Subject: [PATCH 09/18] Fix Green drag and drop area --- src/pages/EditRequestReceiptPage.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/EditRequestReceiptPage.js b/src/pages/EditRequestReceiptPage.js index f45085a052e9..c5dd69624159 100644 --- a/src/pages/EditRequestReceiptPage.js +++ b/src/pages/EditRequestReceiptPage.js @@ -37,11 +37,11 @@ function EditRequestReceiptPage({route, transactionID}) { shouldEnableMaxHeight testID={EditRequestReceiptPage.displayName} > - + Date: Tue, 26 Sep 2023 09:41:33 +0200 Subject: [PATCH 10/18] refactor: migrated EnablePaymentsPage to function component --- .../EnablePayments/EnablePaymentsPage.js | 123 +++++++++--------- 1 file changed, 58 insertions(+), 65 deletions(-) diff --git a/src/pages/EnablePayments/EnablePaymentsPage.js b/src/pages/EnablePayments/EnablePaymentsPage.js index 064f9371e46a..4b0210e9ec71 100644 --- a/src/pages/EnablePayments/EnablePaymentsPage.js +++ b/src/pages/EnablePayments/EnablePaymentsPage.js @@ -1,5 +1,5 @@ import _ from 'underscore'; -import React from 'react'; +import React, {useEffect} from 'react'; import {withOnyx} from 'react-native-onyx'; import ScreenWrapper from '../../components/ScreenWrapper'; import * as Wallet from '../../libs/actions/Wallet'; @@ -7,8 +7,6 @@ import ONYXKEYS from '../../ONYXKEYS'; import FullScreenLoadingIndicator from '../../components/FullscreenLoadingIndicator'; import CONST from '../../CONST'; import userWalletPropTypes from './userWalletPropTypes'; -import {withNetwork} from '../../components/OnyxProvider'; -import networkPropTypes from '../../components/networkPropTypes'; // Steps import OnfidoStep from './OnfidoStep'; @@ -17,94 +15,89 @@ import TermsStep from './TermsStep'; import ActivateStep from './ActivateStep'; import HeaderWithBackButton from '../../components/HeaderWithBackButton'; import FailedKYC from './FailedKYC'; -import compose from '../../libs/compose'; -import withLocalize, {withLocalizePropTypes} from '../../components/withLocalize'; import Navigation from '../../libs/Navigation/Navigation'; import ROUTES from '../../ROUTES'; +import useLocalize from '../../hooks/useLocalize'; +import useNetwork from '../../hooks/useNetwork'; +import usePrevious from '../../hooks/usePrevious'; const propTypes = { - /** Information about the network from Onyx */ - network: networkPropTypes.isRequired, - /** The user's wallet */ userWallet: userWalletPropTypes, - - ...withLocalizePropTypes, }; const defaultProps = { userWallet: {}, }; -class EnablePaymentsPage extends React.Component { - componentDidMount() { - Wallet.openEnablePaymentsPage(); - } +function EnablePaymentsPage({userWallet}) { + const {translate} = useLocalize(); + const {isOffline} = useNetwork(); - componentDidUpdate(prevProps) { - if (!prevProps.network.isOffline || this.props.network.isOffline) { + useEffect(() => { + if (isOffline) { return; } Wallet.openEnablePaymentsPage(); - } + }, [isOffline]); - render() { - if (_.isEmpty(this.props.userWallet)) { - return ; - } - - return ( - - {() => { - if (this.props.userWallet.errorCode === CONST.WALLET.ERROR.KYC) { - return ( - <> - Navigation.goBack(ROUTES.SETTINGS_WALLET)} - /> - - - ); - } - - if (this.props.userWallet.shouldShowWalletActivationSuccess) { - return ; - } - - const currentStep = this.props.userWallet.currentStep || CONST.WALLET.STEP.ADDITIONAL_DETAILS; + if (_.isEmpty(userWallet)) { + return ; + } + return ( + + {() => { + if (userWallet.errorCode === CONST.WALLET.ERROR.KYC) { return ( <> - {(currentStep === CONST.WALLET.STEP.ADDITIONAL_DETAILS || currentStep === CONST.WALLET.STEP.ADDITIONAL_DETAILS_KBA) && } - {currentStep === CONST.WALLET.STEP.ONFIDO && } - {currentStep === CONST.WALLET.STEP.TERMS && } - {currentStep === CONST.WALLET.STEP.ACTIVATE && } + Navigation.goBack(ROUTES.SETTINGS_WALLET)} + /> + ); - }} - - ); - } + } + + if (userWallet.shouldShowWalletActivationSuccess) { + return ; + } + + const currentStep = userWallet.currentStep || CONST.WALLET.STEP.ADDITIONAL_DETAILS; + + switch (currentStep) { + case CONST.WALLET.STEP.ADDITIONAL_DETAILS: + case CONST.WALLET.STEP.ADDITIONAL_DETAILS_KBA: + return ; + case CONST.WALLET.STEP.ONFIDO: + return ; + case CONST.WALLET.STEP.TERMS: + return ; + case CONST.WALLET.STEP.ACTIVATE: + return ; + default: + return null; + } + }} + + ); } +EnablePaymentsPage.displayName = 'EnablePaymentsPage'; EnablePaymentsPage.propTypes = propTypes; EnablePaymentsPage.defaultProps = defaultProps; -export default compose( - withLocalize, - withOnyx({ - userWallet: { - key: ONYXKEYS.USER_WALLET, +export default withOnyx({ + userWallet: { + key: ONYXKEYS.USER_WALLET, - // We want to refresh the wallet each time the user attempts to activate the wallet so we won't use the - // stored values here. - initWithStoredValues: false, - }, - }), - withNetwork(), -)(EnablePaymentsPage); + // We want to refresh the wallet each time the user attempts to activate the wallet so we won't use the + // stored values here. + initWithStoredValues: false, + }, +})(EnablePaymentsPage); From 37a2c5e6d52199d0590236eb709d2a78731d381f Mon Sep 17 00:00:00 2001 From: bartektomczyk Date: Tue, 26 Sep 2023 09:41:57 +0200 Subject: [PATCH 11/18] refactor: migrated EnablePaymentsPage to function component --- src/pages/EnablePayments/EnablePaymentsPage.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/EnablePayments/EnablePaymentsPage.js b/src/pages/EnablePayments/EnablePaymentsPage.js index 4b0210e9ec71..773dfe8b5df7 100644 --- a/src/pages/EnablePayments/EnablePaymentsPage.js +++ b/src/pages/EnablePayments/EnablePaymentsPage.js @@ -19,7 +19,6 @@ import Navigation from '../../libs/Navigation/Navigation'; import ROUTES from '../../ROUTES'; import useLocalize from '../../hooks/useLocalize'; import useNetwork from '../../hooks/useNetwork'; -import usePrevious from '../../hooks/usePrevious'; const propTypes = { /** The user's wallet */ From c8baa3c7c1deffa3e95247d876623c0b0d8a06bd Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Tue, 26 Sep 2023 23:07:03 +0530 Subject: [PATCH 12/18] fix: subcategories for policy and domain settings --- .../expensify-classic/policy-and-domain-settings/Admins.md | 5 ----- .../policy-and-domain-settings/Domain-Admins.md | 5 ----- .../policy-and-domain-settings/Domain-Members.md | 5 ----- .../expensify-classic/policy-and-domain-settings/Overview.md | 5 ----- .../expensify-classic/policy-and-domain-settings/Reports.md | 5 ----- .../expensify-classic/policy-and-domain-settings/Trips.md | 5 ----- .../policy-and-domain-settings/reports/Currency.md | 5 +++++ .../reports/Report-Fields-And-Titles.md | 5 +++++ .../policy-and-domain-settings/reports/Scheduled-Submit.md | 5 +++++ 9 files changed, 15 insertions(+), 30 deletions(-) delete mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/Admins.md delete mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/Domain-Admins.md delete mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/Domain-Members.md delete mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/Overview.md delete mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/Reports.md delete mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/Trips.md create mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/reports/Currency.md create mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/reports/Report-Fields-And-Titles.md create mode 100644 docs/articles/expensify-classic/policy-and-domain-settings/reports/Scheduled-Submit.md diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/Admins.md b/docs/articles/expensify-classic/policy-and-domain-settings/Admins.md deleted file mode 100644 index cea96cfe2057..000000000000 --- a/docs/articles/expensify-classic/policy-and-domain-settings/Admins.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Admins -description: Admins ---- -## Resource Coming Soon! diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/Domain-Admins.md b/docs/articles/expensify-classic/policy-and-domain-settings/Domain-Admins.md deleted file mode 100644 index 3ee1c8656b4b..000000000000 --- a/docs/articles/expensify-classic/policy-and-domain-settings/Domain-Admins.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Coming Soon -description: Coming Soon ---- -## Resource Coming Soon! diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/Domain-Members.md b/docs/articles/expensify-classic/policy-and-domain-settings/Domain-Members.md deleted file mode 100644 index 3ee1c8656b4b..000000000000 --- a/docs/articles/expensify-classic/policy-and-domain-settings/Domain-Members.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Coming Soon -description: Coming Soon ---- -## Resource Coming Soon! diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/Overview.md b/docs/articles/expensify-classic/policy-and-domain-settings/Overview.md deleted file mode 100644 index 3ee1c8656b4b..000000000000 --- a/docs/articles/expensify-classic/policy-and-domain-settings/Overview.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Coming Soon -description: Coming Soon ---- -## Resource Coming Soon! diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/Reports.md b/docs/articles/expensify-classic/policy-and-domain-settings/Reports.md deleted file mode 100644 index 3ee1c8656b4b..000000000000 --- a/docs/articles/expensify-classic/policy-and-domain-settings/Reports.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Coming Soon -description: Coming Soon ---- -## Resource Coming Soon! diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/Trips.md b/docs/articles/expensify-classic/policy-and-domain-settings/Trips.md deleted file mode 100644 index 3ee1c8656b4b..000000000000 --- a/docs/articles/expensify-classic/policy-and-domain-settings/Trips.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Coming Soon -description: Coming Soon ---- -## Resource Coming Soon! diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/reports/Currency.md b/docs/articles/expensify-classic/policy-and-domain-settings/reports/Currency.md new file mode 100644 index 000000000000..e5c9096fa610 --- /dev/null +++ b/docs/articles/expensify-classic/policy-and-domain-settings/reports/Currency.md @@ -0,0 +1,5 @@ +--- +title: Currency +description: Currency +--- +## Resource Coming Soon! diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/reports/Report-Fields-And-Titles.md b/docs/articles/expensify-classic/policy-and-domain-settings/reports/Report-Fields-And-Titles.md new file mode 100644 index 000000000000..47b96f495a1c --- /dev/null +++ b/docs/articles/expensify-classic/policy-and-domain-settings/reports/Report-Fields-And-Titles.md @@ -0,0 +1,5 @@ +--- +title: Report Fields & Titles +description: Report Fields & Titles +--- +## Resource Coming Soon! diff --git a/docs/articles/expensify-classic/policy-and-domain-settings/reports/Scheduled-Submit.md b/docs/articles/expensify-classic/policy-and-domain-settings/reports/Scheduled-Submit.md new file mode 100644 index 000000000000..78471e6c3906 --- /dev/null +++ b/docs/articles/expensify-classic/policy-and-domain-settings/reports/Scheduled-Submit.md @@ -0,0 +1,5 @@ +--- +title: Scheduled Submit +description: Scheduled Submit +--- +## Resource Coming Soon! From 126a7562eeae28258e4d2a0722004241a0db0048 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Tue, 26 Sep 2023 23:08:06 +0530 Subject: [PATCH 13/18] add section for Reports --- .../hubs/policy-and-domain-settings/reports.html | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/expensify-classic/hubs/policy-and-domain-settings/reports.html diff --git a/docs/expensify-classic/hubs/policy-and-domain-settings/reports.html b/docs/expensify-classic/hubs/policy-and-domain-settings/reports.html new file mode 100644 index 000000000000..86641ee60b7d --- /dev/null +++ b/docs/expensify-classic/hubs/policy-and-domain-settings/reports.html @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{% include section.html %} From 2c01ca128dcb21d0479f39b54caad352d7255098 Mon Sep 17 00:00:00 2001 From: Hans Date: Thu, 28 Sep 2023 10:20:08 +0700 Subject: [PATCH 14/18] add linking config for search --- .well-known/apple-app-site-association | 4 ++++ android/app/src/main/AndroidManifest.xml | 2 ++ 2 files changed, 6 insertions(+) diff --git a/.well-known/apple-app-site-association b/.well-known/apple-app-site-association index a9e2b0383691..d6da0232f2fc 100644 --- a/.well-known/apple-app-site-association +++ b/.well-known/apple-app-site-association @@ -75,6 +75,10 @@ { "/": "/teachersunite/*", "comment": "Teachers Unite!" + }, + { + "/": "/search/*", + "comment": "Search" } ] } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8d69c62bfd1f..dc135fa9834e 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -67,6 +67,7 @@ + @@ -83,6 +84,7 @@ + From 24fb4c899dcc1c52123ea0703a722c13594b011c Mon Sep 17 00:00:00 2001 From: situchan Date: Thu, 28 Sep 2023 11:57:02 +0600 Subject: [PATCH 15/18] fix crash on room name validation --- src/libs/ValidationUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/ValidationUtils.ts b/src/libs/ValidationUtils.ts index 80b15690ac46..b94c240b6e92 100644 --- a/src/libs/ValidationUtils.ts +++ b/src/libs/ValidationUtils.ts @@ -314,8 +314,8 @@ function isReservedRoomName(roomName: string): boolean { /** * Checks if the room name already exists. */ -function isExistingRoomName(roomName: string, reports: Report[], policyID: string): boolean { - return reports.some((report) => report && report.policyID === policyID && report.reportName === roomName); +function isExistingRoomName(roomName: string, reports: Record, policyID: string): boolean { + return Object.values(reports).some((report) => report && report.policyID === policyID && report.reportName === roomName); } /** From d0adf804ee6268ba193c03c5904d3ad469003f3d Mon Sep 17 00:00:00 2001 From: situchan Date: Thu, 28 Sep 2023 12:15:53 +0600 Subject: [PATCH 16/18] recheck From 02b5eef105349053f4f8adef55d9b9d85289a820 Mon Sep 17 00:00:00 2001 From: Marc Glasser Date: Thu, 28 Sep 2023 17:23:54 +0800 Subject: [PATCH 17/18] Update ONYXKEYS.ts Remove unused import --- src/ONYXKEYS.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 14db8d2ab0c2..7a0def596774 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -1,5 +1,4 @@ import {ValueOf} from 'type-fest'; -import {OnyxUpdate} from 'react-native-onyx'; import DeepValueOf from './types/utils/DeepValueOf'; import * as OnyxTypes from './types/onyx'; import CONST from './CONST'; From 3b2dc326a52127b6e5552b81c9f14e5e2c5a8126 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Thu, 28 Sep 2023 18:31:23 +0000 Subject: [PATCH 18/18] Update version to 1.3.75-0 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 4 ++-- ios/NewExpensifyTests/Info.plist | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 4c5311ffea20..b63b41077169 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -90,8 +90,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1001037403 - versionName "1.3.74-3" + versionCode 1001037500 + versionName "1.3.75-0" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 73e22053eda1..90683ca8e085 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.3.74 + 1.3.75 CFBundleSignature ???? CFBundleURLTypes @@ -40,7 +40,7 @@ CFBundleVersion - 1.3.74.3 + 1.3.75.0 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 5e7f02699579..60a57f3bec42 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.3.74 + 1.3.75 CFBundleSignature ???? CFBundleVersion - 1.3.74.3 + 1.3.75.0 diff --git a/package-lock.json b/package-lock.json index 42755b09f8b6..bc94fb780a1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.3.74-3", + "version": "1.3.75-0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.74-3", + "version": "1.3.75-0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 3b88d603ba52..f7f385f7620c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.74-3", + "version": "1.3.75-0", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",