From 4b6941f37c22be08d55e8fbf12be68228187215e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20J=2E=20G=C3=B6decke?= Date: Mon, 7 Aug 2023 08:30:09 +0200 Subject: [PATCH 01/30] Toggle label correcty --- src/components/TextInput/BaseTextInput.js | 48 +++++++++++------------ 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/components/TextInput/BaseTextInput.js b/src/components/TextInput/BaseTextInput.js index 68c09e3a7f82..d97e4df1c5bc 100644 --- a/src/components/TextInput/BaseTextInput.js +++ b/src/components/TextInput/BaseTextInput.js @@ -22,8 +22,8 @@ import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; import withLocalize from '../withLocalize'; function BaseTextInput(props) { - const inputValue = props.value || props.defaultValue || ''; - const initialActiveLabel = props.forceActiveLabel || inputValue.length > 0 || Boolean(props.prefixCharacter); + const initialValue = props.value || props.defaultValue || ''; + const initialActiveLabel = props.forceActiveLabel || initialValue.length > 0 || Boolean(props.prefixCharacter); const [isFocused, setIsFocused] = useState(false); const [passwordHidden, setPasswordHidden] = useState(props.secureTextEntry); @@ -168,34 +168,28 @@ function BaseTextInput(props) { [props.autoGrowHeight, props.multiline], ); - useEffect(() => { - // Handle side effects when the value gets changed programatically from the outside - - // In some cases, When the value prop is empty, it is not properly updated on the TextInput due to its uncontrolled nature, thus manually clearing the TextInput. - if (inputValue === '') { - input.current.clear(); - } + // The ref is needed when the component is uncontrolled and we don't have a value prop + const hasValueRef = useRef(initialValue.length > 0); + const inputValue = props.value || ''; + const hasValue = inputValue.length > 0 || hasValueRef.current; - if (inputValue) { + // Activate or deactivate the label when either focus changes, or for controlled + // components when the value prop changes: + useEffect(() => { + if (hasValue || isFocused) { activateLabel(); + } else if (!hasValue && !isFocused) { + deactivateLabel(); } - }, [activateLabel, inputValue]); - - // We capture whether the input has a value or not in a ref. - // It gets updated when the text gets changed. - const hasValueRef = useRef(inputValue.length > 0); + }, [activateLabel, deactivateLabel, hasValue, isFocused]); - // Activate or deactivate the label when the focus changes: + // When the value prop gets cleared externally, we need to deactivate the label: useEffect(() => { - // We can't use inputValue here directly, as it might contain - // the defaultValue, which doesn't get updated when the text changes. - // We can't use props.value either, as it might be undefined. - if (hasValueRef.current || isFocused) { - activateLabel(); - } else if (!hasValueRef.current && !isFocused) { - deactivateLabel(); + if (props.value === undefined || props.value > 0) { + return; } - }, [activateLabel, deactivateLabel, inputValue, isFocused]); + hasValueRef.current = false; + }, [props.value]); /** * Set Value & activateLabel @@ -209,9 +203,13 @@ function BaseTextInput(props) { } Str.result(props.onChangeText, value); + if (value && value.length > 0) { hasValueRef.current = true; - activateLabel(); + // When the componment is uncontrolled, we need to manually activate the label: + if (props.value === undefined) { + activateLabel(); + } } else { hasValueRef.current = false; } From c2d31263da67ad7ec7b81f4f6baedfb6d9f6a9bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20J=2E=20G=C3=B6decke?= Date: Wed, 23 Aug 2023 14:53:34 +0200 Subject: [PATCH 02/30] reapply changes --- src/components/TextInput/BaseTextInput.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/TextInput/BaseTextInput.js b/src/components/TextInput/BaseTextInput.js index d97e4df1c5bc..e3ff3715aaef 100644 --- a/src/components/TextInput/BaseTextInput.js +++ b/src/components/TextInput/BaseTextInput.js @@ -176,9 +176,9 @@ function BaseTextInput(props) { // Activate or deactivate the label when either focus changes, or for controlled // components when the value prop changes: useEffect(() => { - if (hasValue || isFocused) { + if (hasValue || isFocused || isInputAutoFilled(input.current)) { activateLabel(); - } else if (!hasValue && !isFocused) { + } else { deactivateLabel(); } }, [activateLabel, deactivateLabel, hasValue, isFocused]); From 620831f5db18df6c6e5612e0779c0d81e73ac82b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20J=2E=20G=C3=B6decke?= Date: Wed, 23 Aug 2023 15:09:46 +0200 Subject: [PATCH 03/30] use isEmpty --- src/components/TextInput/BaseTextInput.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/TextInput/BaseTextInput.js b/src/components/TextInput/BaseTextInput.js index e3ff3715aaef..acdb23296691 100644 --- a/src/components/TextInput/BaseTextInput.js +++ b/src/components/TextInput/BaseTextInput.js @@ -183,9 +183,9 @@ function BaseTextInput(props) { } }, [activateLabel, deactivateLabel, hasValue, isFocused]); - // When the value prop gets cleared externally, we need to deactivate the label: + // When the value prop gets cleared externally, we need to keep the ref in sync: useEffect(() => { - if (props.value === undefined || props.value > 0) { + if (!_.isEmpty(props.value)) { return; } hasValueRef.current = false; From eb3796d7f652698bcc26454f0625be01b066bb64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20J=2E=20G=C3=B6decke?= Date: Thu, 24 Aug 2023 11:31:50 +0200 Subject: [PATCH 04/30] fix --- src/components/TextInput/BaseTextInput.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/TextInput/BaseTextInput.js b/src/components/TextInput/BaseTextInput.js index acdb23296691..16e391f12215 100644 --- a/src/components/TextInput/BaseTextInput.js +++ b/src/components/TextInput/BaseTextInput.js @@ -185,7 +185,8 @@ function BaseTextInput(props) { // When the value prop gets cleared externally, we need to keep the ref in sync: useEffect(() => { - if (!_.isEmpty(props.value)) { + // Return early when component uncontrolled, or we still have a value + if (props.value === undefined || !_.isEmpty(props.value)) { return; } hasValueRef.current = false; From b8dea602cb05bf13b10bd428b60df12ca9d888fc Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Fri, 22 Sep 2023 14:30:16 +0200 Subject: [PATCH 05/30] [TS migration] Migrate 'ComposerUtils' lib to TypeScript --- src/components/Composer/index.js | 2 +- .../debouncedSaveReportComment.js | 13 ----------- .../debouncedSaveReportComment.ts | 11 ++++++++++ ...{getDraftComment.js => getDraftComment.ts} | 8 +++---- .../getNumberOfLines/index.native.js | 14 ------------ .../getNumberOfLines/index.native.ts | 8 +++++++ .../getNumberOfLines/{index.js => index.ts} | 13 ++++------- .../ComposerUtils/getNumberOfLines/types.ts | 3 +++ src/libs/ComposerUtils/{index.js => index.ts} | 22 ++++++++----------- src/libs/ComposerUtils/types.ts | 6 +++++ ...le.js => updateIsFullComposerAvailable.ts} | 6 ++--- .../updateNumberOfLines/index.js | 1 - .../{index.native.js => index.native.ts} | 10 ++++----- .../updateNumberOfLines/index.ts | 5 +++++ .../updateNumberOfLines/types.ts | 6 +++++ 15 files changed, 63 insertions(+), 65 deletions(-) delete mode 100644 src/libs/ComposerUtils/debouncedSaveReportComment.js create mode 100644 src/libs/ComposerUtils/debouncedSaveReportComment.ts rename src/libs/ComposerUtils/{getDraftComment.js => getDraftComment.ts} (75%) delete mode 100644 src/libs/ComposerUtils/getNumberOfLines/index.native.js create mode 100644 src/libs/ComposerUtils/getNumberOfLines/index.native.ts rename src/libs/ComposerUtils/getNumberOfLines/{index.js => index.ts} (55%) create mode 100644 src/libs/ComposerUtils/getNumberOfLines/types.ts rename src/libs/ComposerUtils/{index.js => index.ts} (69%) create mode 100644 src/libs/ComposerUtils/types.ts rename src/libs/ComposerUtils/{updateIsFullComposerAvailable.js => updateIsFullComposerAvailable.ts} (66%) delete mode 100644 src/libs/ComposerUtils/updateNumberOfLines/index.js rename src/libs/ComposerUtils/updateNumberOfLines/{index.native.js => index.native.ts} (77%) create mode 100644 src/libs/ComposerUtils/updateNumberOfLines/index.ts create mode 100644 src/libs/ComposerUtils/updateNumberOfLines/types.ts diff --git a/src/components/Composer/index.js b/src/components/Composer/index.js index 44075a4ec1eb..e7b18bbd8d69 100755 --- a/src/components/Composer/index.js +++ b/src/components/Composer/index.js @@ -358,7 +358,7 @@ function Composer({ const paddingTopAndBottom = parseInt(computedStyle.paddingBottom, 10) + parseInt(computedStyle.paddingTop, 10); setTextInputWidth(computedStyle.width); - const computedNumberOfLines = ComposerUtils.getNumberOfLines(maxLines, lineHeight, paddingTopAndBottom, textInput.current.scrollHeight); + const computedNumberOfLines = ComposerUtils.getNumberOfLines(lineHeight, paddingTopAndBottom, textInput.current.scrollHeight, maxLines); const generalNumberOfLines = computedNumberOfLines === 0 ? numberOfLinesProp : computedNumberOfLines; onNumberOfLinesChange(generalNumberOfLines); diff --git a/src/libs/ComposerUtils/debouncedSaveReportComment.js b/src/libs/ComposerUtils/debouncedSaveReportComment.js deleted file mode 100644 index c39da78c2c3e..000000000000 --- a/src/libs/ComposerUtils/debouncedSaveReportComment.js +++ /dev/null @@ -1,13 +0,0 @@ -import _ from 'underscore'; -import * as Report from '../actions/Report'; - -/** - * Save draft report comment. Debounced to happen at most once per second. - * @param {String} reportID - * @param {String} comment - */ -const debouncedSaveReportComment = _.debounce((reportID, comment) => { - Report.saveReportComment(reportID, comment || ''); -}, 1000); - -export default debouncedSaveReportComment; diff --git a/src/libs/ComposerUtils/debouncedSaveReportComment.ts b/src/libs/ComposerUtils/debouncedSaveReportComment.ts new file mode 100644 index 000000000000..e449245edc52 --- /dev/null +++ b/src/libs/ComposerUtils/debouncedSaveReportComment.ts @@ -0,0 +1,11 @@ +import debounce from 'lodash/debounce'; +import * as Report from '../actions/Report'; + +/** + * Save draft report comment. Debounced to happen at most once per second. + */ +const debouncedSaveReportComment = debounce((reportID: string, comment = '') => { + Report.saveReportComment(reportID, comment); +}, 1000); + +export default debouncedSaveReportComment; diff --git a/src/libs/ComposerUtils/getDraftComment.js b/src/libs/ComposerUtils/getDraftComment.ts similarity index 75% rename from src/libs/ComposerUtils/getDraftComment.js rename to src/libs/ComposerUtils/getDraftComment.ts index 854df1ac65ee..ac3d2f3d09be 100644 --- a/src/libs/ComposerUtils/getDraftComment.js +++ b/src/libs/ComposerUtils/getDraftComment.ts @@ -1,7 +1,7 @@ -import Onyx from 'react-native-onyx'; +import Onyx, {OnyxEntry} from 'react-native-onyx'; import ONYXKEYS from '../../ONYXKEYS'; -const draftCommentMap = {}; +const draftCommentMap: Record> = {}; Onyx.connect({ key: ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT, callback: (value, key) => { @@ -18,9 +18,7 @@ Onyx.connect({ * Returns a draft comment from the onyx collection. * Note: You should use the HOCs/hooks to get onyx data, instead of using this directly. * A valid use case to use this is if the value is only needed once for an initial value. - * @param {String} reportID - * @returns {String|undefined} */ -export default function getDraftComment(reportID) { +export default function getDraftComment(reportID: string): OnyxEntry { return draftCommentMap[reportID]; } diff --git a/src/libs/ComposerUtils/getNumberOfLines/index.native.js b/src/libs/ComposerUtils/getNumberOfLines/index.native.js deleted file mode 100644 index ff4a1c6d74b1..000000000000 --- a/src/libs/ComposerUtils/getNumberOfLines/index.native.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Get the current number of lines in the composer - * - * @param {Number} lineHeight - * @param {Number} paddingTopAndBottom - * @param {Number} scrollHeight - * - * @returns {Number} - */ -function getNumberOfLines(lineHeight, paddingTopAndBottom, scrollHeight) { - return Math.ceil((scrollHeight - paddingTopAndBottom) / lineHeight); -} - -export default getNumberOfLines; diff --git a/src/libs/ComposerUtils/getNumberOfLines/index.native.ts b/src/libs/ComposerUtils/getNumberOfLines/index.native.ts new file mode 100644 index 000000000000..9a7340b9a035 --- /dev/null +++ b/src/libs/ComposerUtils/getNumberOfLines/index.native.ts @@ -0,0 +1,8 @@ +import GetNumberOfLines from './types'; + +/** + * Get the current number of lines in the composer + */ +const getNumberOfLines: GetNumberOfLines = (lineHeight, paddingTopAndBottom, scrollHeight) => Math.ceil((scrollHeight - paddingTopAndBottom) / lineHeight); + +export default getNumberOfLines; diff --git a/src/libs/ComposerUtils/getNumberOfLines/index.js b/src/libs/ComposerUtils/getNumberOfLines/index.ts similarity index 55% rename from src/libs/ComposerUtils/getNumberOfLines/index.js rename to src/libs/ComposerUtils/getNumberOfLines/index.ts index a469da7516bb..cf85b45443d5 100644 --- a/src/libs/ComposerUtils/getNumberOfLines/index.js +++ b/src/libs/ComposerUtils/getNumberOfLines/index.ts @@ -1,17 +1,12 @@ +import GetNumberOfLines from './types'; + /** * Get the current number of lines in the composer - * - * @param {Number} maxLines - * @param {Number} lineHeight - * @param {Number} paddingTopAndBottom - * @param {Number} scrollHeight - * - * @returns {Number} */ -function getNumberOfLines(maxLines, lineHeight, paddingTopAndBottom, scrollHeight) { +const getNumberOfLines: GetNumberOfLines = (lineHeight, paddingTopAndBottom, scrollHeight, maxLines = 0) => { let newNumberOfLines = Math.ceil((scrollHeight - paddingTopAndBottom) / lineHeight); newNumberOfLines = maxLines <= 0 ? newNumberOfLines : Math.min(newNumberOfLines, maxLines); return newNumberOfLines; -} +}; export default getNumberOfLines; diff --git a/src/libs/ComposerUtils/getNumberOfLines/types.ts b/src/libs/ComposerUtils/getNumberOfLines/types.ts new file mode 100644 index 000000000000..67bb790f726b --- /dev/null +++ b/src/libs/ComposerUtils/getNumberOfLines/types.ts @@ -0,0 +1,3 @@ +type GetNumberOfLines = (lineHeight: number, paddingTopAndBottom: number, scrollHeight: number, maxLines?: number) => number; + +export default GetNumberOfLines; diff --git a/src/libs/ComposerUtils/index.js b/src/libs/ComposerUtils/index.ts similarity index 69% rename from src/libs/ComposerUtils/index.js rename to src/libs/ComposerUtils/index.ts index dfe6cf446809..5e2a42fc65dd 100644 --- a/src/libs/ComposerUtils/index.js +++ b/src/libs/ComposerUtils/index.ts @@ -2,24 +2,22 @@ import getNumberOfLines from './getNumberOfLines'; import updateNumberOfLines from './updateNumberOfLines'; import * as DeviceCapabilities from '../DeviceCapabilities'; +type Selection = { + start: number; + end: number; +}; + /** * Replace substring between selection with a text. - * @param {String} text - * @param {Object} selection - * @param {String} textToInsert - * @returns {String} */ -function insertText(text, selection, textToInsert) { +function insertText(text: string, selection: Selection, textToInsert: string): string { return text.slice(0, selection.start) + textToInsert + text.slice(selection.end, text.length); } /** * Check whether we can skip trigger hotkeys on some specific devices. - * @param {Boolean} isSmallScreenWidth - * @param {Boolean} isKeyboardShown - * @returns {Boolean} */ -function canSkipTriggerHotkeys(isSmallScreenWidth, isKeyboardShown) { +function canSkipTriggerHotkeys(isSmallScreenWidth: boolean, isKeyboardShown: boolean): boolean { // Do not trigger actions for mobileWeb or native clients that have the keyboard open // because for those devices, we want the return key to insert newlines rather than submit the form return (isSmallScreenWidth && DeviceCapabilities.canUseTouchScreen()) || isKeyboardShown; @@ -30,11 +28,9 @@ function canSkipTriggerHotkeys(isSmallScreenWidth, isKeyboardShown) { * The common suffix is the number of characters shared by both strings * at the end (suffix) until a mismatch is encountered. * - * @param {string} str1 - * @param {string} str2 - * @returns {number} The length of the common suffix between the strings. + * @returns The length of the common suffix between the strings. */ -function getCommonSuffixLength(str1, str2) { +function getCommonSuffixLength(str1: string, str2: string): number { let i = 0; while (str1[str1.length - 1 - i] === str2[str2.length - 1 - i]) { i++; diff --git a/src/libs/ComposerUtils/types.ts b/src/libs/ComposerUtils/types.ts new file mode 100644 index 000000000000..a417d951ff51 --- /dev/null +++ b/src/libs/ComposerUtils/types.ts @@ -0,0 +1,6 @@ +type ComposerProps = { + isFullComposerAvailable: boolean; + setIsFullComposerAvailable: (isFullComposerAvailable: boolean) => void; +}; + +export default ComposerProps; diff --git a/src/libs/ComposerUtils/updateIsFullComposerAvailable.js b/src/libs/ComposerUtils/updateIsFullComposerAvailable.ts similarity index 66% rename from src/libs/ComposerUtils/updateIsFullComposerAvailable.js rename to src/libs/ComposerUtils/updateIsFullComposerAvailable.ts index 00b12d1742e3..5d73619482db 100644 --- a/src/libs/ComposerUtils/updateIsFullComposerAvailable.js +++ b/src/libs/ComposerUtils/updateIsFullComposerAvailable.ts @@ -1,11 +1,11 @@ import CONST from '../../CONST'; +import ComposerProps from './types'; /** * Update isFullComposerAvailable if needed - * @param {Object} props - * @param {Number} numberOfLines The number of lines in the text input + * @param numberOfLines The number of lines in the text input */ -function updateIsFullComposerAvailable(props, numberOfLines) { +function updateIsFullComposerAvailable(props: ComposerProps, numberOfLines: number) { const isFullComposerAvailable = numberOfLines >= CONST.COMPOSER.FULL_COMPOSER_MIN_LINES; if (isFullComposerAvailable !== props.isFullComposerAvailable) { props.setIsFullComposerAvailable(isFullComposerAvailable); diff --git a/src/libs/ComposerUtils/updateNumberOfLines/index.js b/src/libs/ComposerUtils/updateNumberOfLines/index.js deleted file mode 100644 index ff8b4c56321a..000000000000 --- a/src/libs/ComposerUtils/updateNumberOfLines/index.js +++ /dev/null @@ -1 +0,0 @@ -export default {}; diff --git a/src/libs/ComposerUtils/updateNumberOfLines/index.native.js b/src/libs/ComposerUtils/updateNumberOfLines/index.native.ts similarity index 77% rename from src/libs/ComposerUtils/updateNumberOfLines/index.native.js rename to src/libs/ComposerUtils/updateNumberOfLines/index.native.ts index 5a13ae670d81..b22135b4f767 100644 --- a/src/libs/ComposerUtils/updateNumberOfLines/index.native.js +++ b/src/libs/ComposerUtils/updateNumberOfLines/index.native.ts @@ -1,23 +1,21 @@ -import lodashGet from 'lodash/get'; import styles from '../../../styles/styles'; import updateIsFullComposerAvailable from '../updateIsFullComposerAvailable'; import getNumberOfLines from '../getNumberOfLines'; +import UpdateNumberOfLines from './types'; /** * Check the current scrollHeight of the textarea (minus any padding) and * divide by line height to get the total number of rows for the textarea. - * @param {Object} props - * @param {Event} e */ -function updateNumberOfLines(props, e) { +const updateNumberOfLines: UpdateNumberOfLines = (props, event) => { const lineHeight = styles.textInputCompose.lineHeight; const paddingTopAndBottom = styles.textInputComposeSpacing.paddingVertical * 2; - const inputHeight = lodashGet(e, 'nativeEvent.contentSize.height', null); + const inputHeight = event?.nativeEvent?.contentSize?.height ?? null; if (!inputHeight) { return; } const numberOfLines = getNumberOfLines(lineHeight, paddingTopAndBottom, inputHeight); updateIsFullComposerAvailable(props, numberOfLines); -} +}; export default updateNumberOfLines; diff --git a/src/libs/ComposerUtils/updateNumberOfLines/index.ts b/src/libs/ComposerUtils/updateNumberOfLines/index.ts new file mode 100644 index 000000000000..91a9c9c0f102 --- /dev/null +++ b/src/libs/ComposerUtils/updateNumberOfLines/index.ts @@ -0,0 +1,5 @@ +import UpdateNumberOfLines from './types'; + +const updateNumberOfLines: UpdateNumberOfLines = () => {}; + +export default updateNumberOfLines; diff --git a/src/libs/ComposerUtils/updateNumberOfLines/types.ts b/src/libs/ComposerUtils/updateNumberOfLines/types.ts new file mode 100644 index 000000000000..c0650be25433 --- /dev/null +++ b/src/libs/ComposerUtils/updateNumberOfLines/types.ts @@ -0,0 +1,6 @@ +import {NativeSyntheticEvent, TextInputContentSizeChangeEventData} from 'react-native'; +import ComposerProps from '../types'; + +type UpdateNumberOfLines = (props: ComposerProps, event: NativeSyntheticEvent) => void; + +export default UpdateNumberOfLines; From 37b4afa8408bfff847ffca5c885e4c338bfc1bf7 Mon Sep 17 00:00:00 2001 From: dukenv0307 Date: Tue, 26 Sep 2023 10:53:57 +0700 Subject: [PATCH 06/30] update pending action when we cancel task --- src/libs/actions/Task.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/libs/actions/Task.js b/src/libs/actions/Task.js index 963bfebb7eb2..38e5c46a5071 100644 --- a/src/libs/actions/Task.js +++ b/src/libs/actions/Task.js @@ -827,6 +827,15 @@ function cancelTask(taskReportID, taskTitle, originalStateNum, originalStatusNum }, }, }, + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${parentReport.reportID}`, + value: { + [parentReportAction.reportActionID]: { + pendingAction: null, + }, + }, + }, ]; const failureData = [ @@ -845,6 +854,15 @@ function cancelTask(taskReportID, taskTitle, originalStateNum, originalStatusNum [optimisticReportActionID]: null, }, }, + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${parentReport.reportID}`, + value: { + [parentReportAction.reportActionID]: { + pendingAction: null, + }, + }, + }, ]; API.write('CancelTask', {cancelledTaskReportActionID: optimisticReportActionID, taskReportID}, {optimisticData, successData, failureData}); From 5da55f71c78a80a500d4d57465aa7ccd11c1b1cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20J=2E=20G=C3=B6decke?= Date: Wed, 27 Sep 2023 07:54:30 +0200 Subject: [PATCH 07/30] add comment back --- src/components/TextInput/BaseTextInput.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/TextInput/BaseTextInput.js b/src/components/TextInput/BaseTextInput.js index a99c387647cf..bd6548607cb9 100644 --- a/src/components/TextInput/BaseTextInput.js +++ b/src/components/TextInput/BaseTextInput.js @@ -153,7 +153,13 @@ function BaseTextInput(props) { // Activate or deactivate the label when either focus changes, or for controlled // components when the value prop changes: useEffect(() => { - if (hasValue || isFocused || isInputAutoFilled(input.current)) { + if ( + hasValue || + isFocused || + // If the text has been supplied by Chrome autofill, the value state is not synced with the value + // as Chrome doesn't trigger a change event. When there is autofill text, keep the label activated. + isInputAutoFilled(input.current) + ) { activateLabel(); } else { deactivateLabel(); From fd7fe62edceeb8b0edb46d1a5dab1193d8a7ae65 Mon Sep 17 00:00:00 2001 From: Ishpaul Singh Date: Thu, 28 Sep 2023 22:53:42 +0530 Subject: [PATCH 08/30] fix: status bar color when modal is visible --- src/styles/StyleUtils.ts | 4 ++-- src/styles/themes/default.js | 1 - src/styles/themes/light.js | 1 - src/styles/variables.ts | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/styles/StyleUtils.ts b/src/styles/StyleUtils.ts index 190f18f8d969..bc8bc6b4074a 100644 --- a/src/styles/StyleUtils.ts +++ b/src/styles/StyleUtils.ts @@ -678,10 +678,10 @@ function extractValuesFromRGB(color: string): number[] | null { * @returns The theme color as an RGB value. */ function getThemeBackgroundColor(bgColor: string = themeColors.appBG): string { - const backdropOpacity = variables.modalFullscreenBackdropOpacity; + const backdropOpacity = variables.overlayOpacity; const [backgroundRed, backgroundGreen, backgroundBlue] = extractValuesFromRGB(bgColor) ?? hexadecimalToRGBArray(bgColor) ?? []; - const [backdropRed, backdropGreen, backdropBlue] = hexadecimalToRGBArray(themeColors.modalBackdrop) ?? []; + const [backdropRed, backdropGreen, backdropBlue] = hexadecimalToRGBArray(themeColors.overlay) ?? []; const normalizedBackdropRGB = convertRGBToUnitValues(backdropRed, backdropGreen, backdropBlue); const normalizedBackgroundRGB = convertRGBToUnitValues(backgroundRed, backgroundGreen, backgroundBlue); const [red, green, blue] = convertRGBAToRGB(normalizedBackdropRGB, normalizedBackgroundRGB, backdropOpacity); diff --git a/src/styles/themes/default.js b/src/styles/themes/default.js index 75db4be30e2b..ef64c4caec35 100644 --- a/src/styles/themes/default.js +++ b/src/styles/themes/default.js @@ -53,7 +53,6 @@ const darkTheme = { textMutedReversed: colors.darkIcons, textError: colors.red, offline: colors.darkIcons, - modalBackdrop: colors.darkHighlightBackground, modalBackground: colors.darkAppBackground, cardBG: colors.darkHighlightBackground, cardBorder: colors.darkHighlightBackground, diff --git a/src/styles/themes/light.js b/src/styles/themes/light.js index 8bc149c5af08..c459f9f10da6 100644 --- a/src/styles/themes/light.js +++ b/src/styles/themes/light.js @@ -51,7 +51,6 @@ const lightTheme = { textMutedReversed: colors.lightIcons, textError: colors.red, offline: colors.lightIcons, - modalBackdrop: colors.lightHighlightBackground, modalBackground: colors.lightAppBackground, cardBG: colors.lightHighlightBackground, cardBorder: colors.lightHighlightBackground, diff --git a/src/styles/variables.ts b/src/styles/variables.ts index 9ee9b64e6467..a7191ce5b002 100644 --- a/src/styles/variables.ts +++ b/src/styles/variables.ts @@ -78,7 +78,6 @@ export default { extraSmallMobileResponsiveWidthBreakpoint: 320, extraSmallMobileResponsiveHeightBreakpoint: 667, mobileResponsiveWidthBreakpoint: 800, - modalFullscreenBackdropOpacity: 0.5, tabletResponsiveWidthBreakpoint: 1024, safeInsertPercentage: 0.7, sideBarWidth: 375, From 391bbd78ad99e7d8eef15b94adc4af1088307c37 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Fri, 29 Sep 2023 12:07:14 +0530 Subject: [PATCH 09/30] add redirect plugin --- docs/Gemfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Gemfile b/docs/Gemfile index 7cad729ee45b..94103f9b1bd4 100644 --- a/docs/Gemfile +++ b/docs/Gemfile @@ -32,3 +32,5 @@ gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] gem "webrick", "~> 1.7" gem 'jekyll-seo-tag' + +gem 'jekyll-redirect-from' From c40cf665857b6d254cbf5d2b8af971713462ca79 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Fri, 29 Sep 2023 12:16:46 +0530 Subject: [PATCH 10/30] add redirect url for referral page --- docs/Gemfile.lock | 3 ++- .../expensify-classic/getting-started/Referral-Program.md | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 1a5b26e2dc23..0963d3c73e6c 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -263,6 +263,7 @@ DEPENDENCIES github-pages http_parser.rb (~> 0.6.0) jekyll-feed (~> 0.12) + jekyll-redirect-from jekyll-seo-tag tzinfo (~> 1.2) tzinfo-data @@ -270,4 +271,4 @@ DEPENDENCIES webrick (~> 1.7) BUNDLED WITH - 2.4.3 + 2.4.19 diff --git a/docs/articles/expensify-classic/getting-started/Referral-Program.md b/docs/articles/expensify-classic/getting-started/Referral-Program.md index 683e93d0277a..fa9d4b7ef388 100644 --- a/docs/articles/expensify-classic/getting-started/Referral-Program.md +++ b/docs/articles/expensify-classic/getting-started/Referral-Program.md @@ -1,6 +1,7 @@ --- title: Expensify Referral Program description: Send your joining link, submit a receipt or invoice, and we'll pay you if your referral adopts Expensify. +redirect_from: /articles/other/Referral-Program/ --- From 915fa647cdf410479fab18ad216aae7d5e2188bd Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Fri, 29 Sep 2023 10:03:44 +0300 Subject: [PATCH 11/30] Update Referral-Program.md --- .../expensify-classic/getting-started/Referral-Program.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/articles/expensify-classic/getting-started/Referral-Program.md b/docs/articles/expensify-classic/getting-started/Referral-Program.md index fa9d4b7ef388..950998ff33b7 100644 --- a/docs/articles/expensify-classic/getting-started/Referral-Program.md +++ b/docs/articles/expensify-classic/getting-started/Referral-Program.md @@ -7,6 +7,7 @@ redirect_from: /articles/other/Referral-Program/ # About +test Expensify has grown thanks to our users who love Expensify so much that they tell their friends, colleagues, managers, and fellow business founders to use it, too. As a thank you, every time you bring a new user into the platform who directly or indirectly leads to the adoption of a paid annual plan on Expensify, you will earn $250. From 5b6af37324950371dfb40cfa3673df1368ea7aea Mon Sep 17 00:00:00 2001 From: tienifr Date: Fri, 29 Sep 2023 17:11:27 +0700 Subject: [PATCH 12/30] fix: regression 28417 --- src/pages/iou/steps/MoneyRequestAmountForm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/iou/steps/MoneyRequestAmountForm.js b/src/pages/iou/steps/MoneyRequestAmountForm.js index c4fc29957179..cc918e3ee3df 100644 --- a/src/pages/iou/steps/MoneyRequestAmountForm.js +++ b/src/pages/iou/steps/MoneyRequestAmountForm.js @@ -109,7 +109,7 @@ function MoneyRequestAmountForm({amount, currency, isEditing, forwardedRef, onCu if (!currency || !_.isNumber(amount)) { return; } - const amountAsStringForState = CurrencyUtils.convertToFrontendAmount(amount).toString(); + const amountAsStringForState = amount ? CurrencyUtils.convertToFrontendAmount(amount).toString() : ''; setCurrentAmount(amountAsStringForState); setSelection({ start: amountAsStringForState.length, From e16fb74e0840504f4aee89528f1b4e8f313adf22 Mon Sep 17 00:00:00 2001 From: OlimpiaZurek Date: Fri, 29 Sep 2023 12:59:36 +0200 Subject: [PATCH 13/30] fix composer focus after deleting a message from edit mode --- .../home/report/ContextMenu/PopoverReportActionContextMenu.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js b/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js index 4f09df7330ff..7328f02adc5f 100644 --- a/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js +++ b/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js @@ -321,8 +321,6 @@ function PopoverReportActionContextMenu(_props, ref) { onConfirm={confirmDeleteAndHideModal} onCancel={hideDeleteModal} onModalHide={() => { - reportIDRef.current = '0'; - reportActionRef.current = {}; callbackWhenDeleteModalHide.current(); }} prompt={translate('reportActionContextMenu.deleteConfirmation', {action: reportAction})} From 5fd69da1cf05fef1a39fb64937ef15b0e8f163e2 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Fri, 29 Sep 2023 16:46:37 +0000 Subject: [PATCH 14/30] Update version to 1.3.75-3 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index f0eddd6085bc..1e2e9b46fad6 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 1001037502 - versionName "1.3.75-2" + versionCode 1001037503 + versionName "1.3.75-3" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 8536b4da82b5..c16c6dce16ca 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.3.75.2 + 1.3.75.3 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 802ee97145ae..21803f251753 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.3.75.2 + 1.3.75.3 diff --git a/package-lock.json b/package-lock.json index 97b6f6ea7b38..8ab673766f6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.3.75-2", + "version": "1.3.75-3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.75-2", + "version": "1.3.75-3", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 8804c2002a10..b7acd8bd7b55 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.75-2", + "version": "1.3.75-3", "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.", From 0c7f552ea68f67ee009a1cdea8d043d91c0e0d15 Mon Sep 17 00:00:00 2001 From: Carlos Dario Almonte Date: Fri, 29 Sep 2023 12:49:48 -0400 Subject: [PATCH 15/30] fix: notification navigation to report #28328 --- src/libs/actions/Report.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/Report.js b/src/libs/actions/Report.js index 66008ae5ae2a..e21d9fdd75c6 100644 --- a/src/libs/actions/Report.js +++ b/src/libs/actions/Report.js @@ -1683,7 +1683,7 @@ function showReportActionNotification(reportID, reportAction) { const notificationParams = { report, reportAction, - onClick: () => Navigation.navigate(ROUTES.getReportRoute(reportID)), + onClick: () => Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(reportID)), }; if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.MODIFIEDEXPENSE) { LocalNotification.showModifiedExpenseNotification(notificationParams); From e95821e252d31d2e3772c910efd169923d6f93b9 Mon Sep 17 00:00:00 2001 From: Sibtain Ali Date: Sat, 30 Sep 2023 05:21:38 +0500 Subject: [PATCH 16/30] fix: use correct variables for navigateToNextPage fn --- src/pages/iou/ReceiptSelector/index.native.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pages/iou/ReceiptSelector/index.native.js b/src/pages/iou/ReceiptSelector/index.native.js index 4de4e9bb9148..128782093718 100644 --- a/src/pages/iou/ReceiptSelector/index.native.js +++ b/src/pages/iou/ReceiptSelector/index.native.js @@ -99,7 +99,6 @@ function ReceiptSelector({route, report, iou, transactionID, isInTabNavigator}) const appState = useRef(AppState.currentState); const iouType = lodashGet(route, 'params.iouType', ''); - const reportID = lodashGet(route, 'params.reportID', ''); const pageIndex = lodashGet(route, 'params.pageIndex', 1); const {translate} = useLocalize(); @@ -223,13 +222,13 @@ function ReceiptSelector({route, report, iou, transactionID, isInTabNavigator}) return; } - IOU.navigateToNextPage(iou, iouType, reportID, report, route.path); + IOU.navigateToNextPage(iou, iouType, report, route.path); }) .catch((error) => { showCameraAlert(); Log.warn('Error taking photo', error); }); - }, [flash, iouType, iou, report, reportID, translate, transactionID, route.path]); + }, [flash, iouType, iou, report, translate, transactionID, route.path]); CameraPermission.getCameraPermissionStatus().then((permissionStatus) => { setPermissions(permissionStatus); From 05945321262eab0b2e5f334257852f6f21e468d3 Mon Sep 17 00:00:00 2001 From: Shubham Agrawal Date: Sat, 30 Sep 2023 18:45:14 +0530 Subject: [PATCH 17/30] fix readFileAsync to extract type too --- src/libs/fileDownload/FileUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/fileDownload/FileUtils.js b/src/libs/fileDownload/FileUtils.js index cee2b8877ef6..e508d096128d 100644 --- a/src/libs/fileDownload/FileUtils.js +++ b/src/libs/fileDownload/FileUtils.js @@ -157,7 +157,7 @@ const readFileAsync = (path, fileName) => return res.blob(); }) .then((blob) => { - const file = new File([blob], cleanFileName(fileName)); + const file = new File([blob], cleanFileName(fileName), {type: blob.type}); file.source = path; // For some reason, the File object on iOS does not have a uri property // so images aren't uploaded correctly to the backend From 9f480294055593b2602b0cfc81988e4ef913d470 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Sun, 1 Oct 2023 10:04:32 +0530 Subject: [PATCH 18/30] add config to redirect from --- docs/Gemfile | 1 + docs/_config.yml | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/docs/Gemfile b/docs/Gemfile index 94103f9b1bd4..701ae50ca381 100644 --- a/docs/Gemfile +++ b/docs/Gemfile @@ -34,3 +34,4 @@ gem "webrick", "~> 1.7" gem 'jekyll-seo-tag' gem 'jekyll-redirect-from' + diff --git a/docs/_config.yml b/docs/_config.yml index 114e562cae04..000e025d28d2 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -17,3 +17,7 @@ exclude: [README.md, TEMPLATE.md, vendor] plugins: - jekyll-seo-tag + - jekyll-redirect-from + +whitelist: + - jekyll-redirect-from \ No newline at end of file From 141b14f762811eaf4287afd7ecdcbdb8006907d3 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Sun, 1 Oct 2023 10:16:26 +0530 Subject: [PATCH 19/30] add redirect url for free trial --- .../expensify-classic/billing-and-subscriptions/Free-Trial.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/articles/expensify-classic/billing-and-subscriptions/Free-Trial.md b/docs/articles/expensify-classic/billing-and-subscriptions/Free-Trial.md index e08aaa3d6094..0a8c82c2f08c 100644 --- a/docs/articles/expensify-classic/billing-and-subscriptions/Free-Trial.md +++ b/docs/articles/expensify-classic/billing-and-subscriptions/Free-Trial.md @@ -1,5 +1,6 @@ --- title: Free Trial description: Free Trial +redirect_from: articles/split-bills/workspaces/The-Free-Plan/ --- ## Resource Coming Soon! From bb730b931ec39e79ba5cb44d9d9434c59409e24d Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Sun, 1 Oct 2023 10:38:26 +0530 Subject: [PATCH 20/30] add redirect urls --- docs/articles/expensify-classic/exports/Insights.md | 1 + .../Card-Revenue-Share-For-Expensify-Approved-Partners.md | 1 + .../approved-accountants/Your-Expensify-Partner-Manager.md | 1 + .../Expensify-Playbook-For-Small-To-Medium-Sized-Businesses.md | 1 + .../Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md | 1 + .../Expensify-Playbook-For-US-Based-VC-Backed-Startups.md | 1 + .../getting-started/support/Your-Expensify-Account-Manager.md | 1 + .../tips-and-tricks/Enable-Location-Access-On-Web.md | 1 + docs/articles/new-expensify/get-paid-back/Request-Money.md | 1 + docs/articles/new-expensify/getting-started/Expensify-Lounge.md | 1 + .../new-expensify/getting-started/chat/Everything-About-Chat.md | 1 + .../getting-started/chat/Expensify-Chat-For-Admins.md | 1 + .../chat/Expensify-Chat-For-Conference-Attendees.md | 1 + .../chat/Expensify-Chat-For-Conference-Speakers.md | 1 + .../chat/Expensify-Chat-Playbook-For-Conferences.md | 1 + 15 files changed, 15 insertions(+) diff --git a/docs/articles/expensify-classic/exports/Insights.md b/docs/articles/expensify-classic/exports/Insights.md index 682c2a251228..6c71630015c5 100644 --- a/docs/articles/expensify-classic/exports/Insights.md +++ b/docs/articles/expensify-classic/exports/Insights.md @@ -1,6 +1,7 @@ --- title: Custom Reporting and Insights description: How to get the most out of the Custom Reporing and Insights +redirect_from: articles/other/Insights/ --- {% raw %} diff --git a/docs/articles/expensify-classic/getting-started/approved-accountants/Card-Revenue-Share-For-Expensify-Approved-Partners.md b/docs/articles/expensify-classic/getting-started/approved-accountants/Card-Revenue-Share-For-Expensify-Approved-Partners.md index b18531d43200..a8e1b0690b72 100644 --- a/docs/articles/expensify-classic/getting-started/approved-accountants/Card-Revenue-Share-For-Expensify-Approved-Partners.md +++ b/docs/articles/expensify-classic/getting-started/approved-accountants/Card-Revenue-Share-For-Expensify-Approved-Partners.md @@ -1,6 +1,7 @@ --- title: Expensify Card revenue share for ExpensifyApproved! partners description: Earn money when your clients adopt the Expensify Card +redirect_from: articles/other/Card-Revenue-Share-for-ExpensifyApproved!-Partners/ --- diff --git a/docs/articles/expensify-classic/getting-started/approved-accountants/Your-Expensify-Partner-Manager.md b/docs/articles/expensify-classic/getting-started/approved-accountants/Your-Expensify-Partner-Manager.md index c7a5dc5a04ab..104cd49daf96 100644 --- a/docs/articles/expensify-classic/getting-started/approved-accountants/Your-Expensify-Partner-Manager.md +++ b/docs/articles/expensify-classic/getting-started/approved-accountants/Your-Expensify-Partner-Manager.md @@ -1,6 +1,7 @@ --- title: Your Expensify Partner Manager description: Everything you need to know about your Expensify Partner Manager +redirect_from: articles/other/Your-Expensify-Partner-Manager/ --- diff --git a/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-Small-To-Medium-Sized-Businesses.md b/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-Small-To-Medium-Sized-Businesses.md index 2b95a1d13fde..a7553e6ae179 100644 --- a/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-Small-To-Medium-Sized-Businesses.md +++ b/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-Small-To-Medium-Sized-Businesses.md @@ -1,6 +1,7 @@ --- title: Expensify Playbook for Small to Medium-Sized Businesses description: Best practices for how to deploy Expensify for your business +redirect_from: articles/playbooks/Expensify-Playbook-for-Small-to-Medium-Sized-Businesses/ --- ## Overview This guide provides practical tips and recommendations for small businesses with 100 to 250 employees to effectively use Expensify to improve spend visibility, facilitate employee reimbursements, and reduce the risk of fraudulent expenses. diff --git a/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md b/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md index 86c6a583c758..bef59546a13d 100644 --- a/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md +++ b/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-Bootstrapped-Startups.md @@ -1,6 +1,7 @@ --- title: Expensify Playbook for US-Based Bootstrapped Startups description: Best practices for how to deploy Expensify for your business +redirect_from: articles/playbooks/Expensify-Playbook-for-US-Based-Bootstrapped-Startups/ --- This playbook details best practices on how Bootstrapped Startups with less than 5 employees can use Expensify to prioritize product development while capturing business-related receipts for future reimbursement. diff --git a/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-VC-Backed-Startups.md b/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-VC-Backed-Startups.md index 501d2f1538ef..bdce2cd7bf81 100644 --- a/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-VC-Backed-Startups.md +++ b/docs/articles/expensify-classic/getting-started/playbooks/Expensify-Playbook-For-US-Based-VC-Backed-Startups.md @@ -1,6 +1,7 @@ --- title: Expensify Playbook for US-Based VC-Backed Startups description: Best practices for how to deploy Expensify for your business +redirect_from: articles/playbooks/Expensify-Playbook-for-US-based-VC-Backed-Startups/ --- This playbook details best practices on how Seed to Series A startups with under 100 employees can use Expensify to prioritize top-line revenue growth while managing spend responsibly. diff --git a/docs/articles/expensify-classic/getting-started/support/Your-Expensify-Account-Manager.md b/docs/articles/expensify-classic/getting-started/support/Your-Expensify-Account-Manager.md index 3ef47337a74c..a6fa0220c0dc 100644 --- a/docs/articles/expensify-classic/getting-started/support/Your-Expensify-Account-Manager.md +++ b/docs/articles/expensify-classic/getting-started/support/Your-Expensify-Account-Manager.md @@ -1,6 +1,7 @@ --- title: Your Expensify Account Manager description: Everything you need to know about Having an Expensify account manager +redirect_from: articles/other/Your-Expensify-Account-Manager/ --- diff --git a/docs/articles/expensify-classic/getting-started/tips-and-tricks/Enable-Location-Access-On-Web.md b/docs/articles/expensify-classic/getting-started/tips-and-tricks/Enable-Location-Access-On-Web.md index 649212b00f7b..507d24503af8 100644 --- a/docs/articles/expensify-classic/getting-started/tips-and-tricks/Enable-Location-Access-On-Web.md +++ b/docs/articles/expensify-classic/getting-started/tips-and-tricks/Enable-Location-Access-On-Web.md @@ -1,6 +1,7 @@ --- title: Enable Location Access on Web description: How to enable location access for Expensify websites on your browser +redirect_from: articles/other/Enable-Location-Access-on-Web/ --- diff --git a/docs/articles/new-expensify/get-paid-back/Request-Money.md b/docs/articles/new-expensify/get-paid-back/Request-Money.md index dc6de6656cc9..a2b765915af0 100644 --- a/docs/articles/new-expensify/get-paid-back/Request-Money.md +++ b/docs/articles/new-expensify/get-paid-back/Request-Money.md @@ -1,5 +1,6 @@ --- title: Request Money description: Request Money +redirect_from: articles/request-money/Request-and-Split-Bills/ --- ## Resource Coming Soon! diff --git a/docs/articles/new-expensify/getting-started/Expensify-Lounge.md b/docs/articles/new-expensify/getting-started/Expensify-Lounge.md index 01a2d7a9e250..bdccbe927769 100644 --- a/docs/articles/new-expensify/getting-started/Expensify-Lounge.md +++ b/docs/articles/new-expensify/getting-started/Expensify-Lounge.md @@ -1,6 +1,7 @@ --- title: Welcome to the Expensify Lounge! description: How to get the most out of the Expensify Lounge. +redirect_from: articles/other/Expensify-Lounge/ --- diff --git a/docs/articles/new-expensify/getting-started/chat/Everything-About-Chat.md b/docs/articles/new-expensify/getting-started/chat/Everything-About-Chat.md index 9f73d1c759c2..77bbe54e8e2c 100644 --- a/docs/articles/new-expensify/getting-started/chat/Everything-About-Chat.md +++ b/docs/articles/new-expensify/getting-started/chat/Everything-About-Chat.md @@ -1,6 +1,7 @@ --- title: Everything About Chat description: Everything you need to know about Expensify's Chat Features! +redirect_from: articles/other/Everything-About-Chat/ --- diff --git a/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Admins.md b/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Admins.md index 31de150d5b5e..996d7896502f 100644 --- a/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Admins.md +++ b/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Admins.md @@ -1,6 +1,7 @@ --- title: Expensify Chat for Admins description: Best Practices for Admins settings up Expensify Chat +redirect_from: articles/other/Expensify-Chat-For-Admins/ --- ## Overview diff --git a/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Conference-Attendees.md b/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Conference-Attendees.md index 3d30237dca5a..20e15aaa6c72 100644 --- a/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Conference-Attendees.md +++ b/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Conference-Attendees.md @@ -1,6 +1,7 @@ --- title: Expensify Chat for Conference Attendees description: Best Practices for Conference Attendees +redirect_from: articles/other/Expensify-Chat-For-Conference-Attendees/ --- ## Overview diff --git a/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Conference-Speakers.md b/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Conference-Speakers.md index 5bd52425d92b..3e19cf6fe26a 100644 --- a/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Conference-Speakers.md +++ b/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-For-Conference-Speakers.md @@ -1,6 +1,7 @@ --- title: Expensify Chat for Conference Speakers description: Best Practices for Conference Speakers +redirect_from: articles/other/Expensify-Chat-For-Conference-Speakers/ --- ## Overview diff --git a/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-Playbook-For-Conferences.md b/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-Playbook-For-Conferences.md index 8f806bb03146..a81aef2044a2 100644 --- a/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-Playbook-For-Conferences.md +++ b/docs/articles/new-expensify/getting-started/chat/Expensify-Chat-Playbook-For-Conferences.md @@ -1,6 +1,7 @@ --- title: Expensify Chat Playbook for Conferences description: Best practices for how to deploy Expensify Chat for your conference +redirect_from: articles/playbooks/Expensify-Chat-Playbook-for-Conferences/ --- ## Overview To help make setting up Expensify Chat for your event and your attendees super simple, we’ve created a guide for all of the technical setup details. From f1090f8c44fe48be84ac688258571bcfa3bb4757 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Sun, 1 Oct 2023 10:41:18 +0530 Subject: [PATCH 21/30] add redirect urls --- docs/_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_config.yml b/docs/_config.yml index 000e025d28d2..4a0ce8c053c5 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -20,4 +20,4 @@ plugins: - jekyll-redirect-from whitelist: - - jekyll-redirect-from \ No newline at end of file + - jekyll-redirect-from From de4d405f1cf7af92c63af6248a19823ed2f793ed Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Sun, 1 Oct 2023 10:42:39 +0530 Subject: [PATCH 22/30] fix typo --- .../expensify-classic/getting-started/Referral-Program.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/expensify-classic/getting-started/Referral-Program.md b/docs/articles/expensify-classic/getting-started/Referral-Program.md index 950998ff33b7..0e085795d241 100644 --- a/docs/articles/expensify-classic/getting-started/Referral-Program.md +++ b/docs/articles/expensify-classic/getting-started/Referral-Program.md @@ -1,7 +1,7 @@ --- title: Expensify Referral Program description: Send your joining link, submit a receipt or invoice, and we'll pay you if your referral adopts Expensify. -redirect_from: /articles/other/Referral-Program/ +redirect_from: articles/other/Referral-Program/ --- From 91578f1e3aac75506dec5fcaf6be87406b8db966 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Sun, 1 Oct 2023 10:42:59 +0530 Subject: [PATCH 23/30] fix typo --- .../expensify-classic/getting-started/Referral-Program.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/articles/expensify-classic/getting-started/Referral-Program.md b/docs/articles/expensify-classic/getting-started/Referral-Program.md index 0e085795d241..b4a2b4a7de74 100644 --- a/docs/articles/expensify-classic/getting-started/Referral-Program.md +++ b/docs/articles/expensify-classic/getting-started/Referral-Program.md @@ -7,7 +7,6 @@ redirect_from: articles/other/Referral-Program/ # About -test Expensify has grown thanks to our users who love Expensify so much that they tell their friends, colleagues, managers, and fellow business founders to use it, too. As a thank you, every time you bring a new user into the platform who directly or indirectly leads to the adoption of a paid annual plan on Expensify, you will earn $250. From 9990789a09d58202a7b38872436ce530195c47b4 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Sun, 1 Oct 2023 06:57:07 +0000 Subject: [PATCH 24/30] Update version to 1.3.75-4 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 1e2e9b46fad6..a4d7d0fc1866 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 1001037503 - versionName "1.3.75-3" + versionCode 1001037504 + versionName "1.3.75-4" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index c16c6dce16ca..f93b7f6dbe3d 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.3.75.3 + 1.3.75.4 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 21803f251753..918506e08d62 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.3.75.3 + 1.3.75.4 diff --git a/package-lock.json b/package-lock.json index 8ab673766f6f..d0caf08f2344 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.3.75-3", + "version": "1.3.75-4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.75-3", + "version": "1.3.75-4", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index b7acd8bd7b55..e5788d6978ec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.75-3", + "version": "1.3.75-4", "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.", From 04bee398f247ba5bbded7ab41ee82ed24e66b5c4 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Sun, 1 Oct 2023 07:03:05 +0000 Subject: [PATCH 25/30] Update version to 1.3.75-5 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index a4d7d0fc1866..9092b80ab2b4 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 1001037504 - versionName "1.3.75-4" + versionCode 1001037505 + versionName "1.3.75-5" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index f93b7f6dbe3d..7ce5d6768f05 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.3.75.4 + 1.3.75.5 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 918506e08d62..1126651383b4 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.3.75.4 + 1.3.75.5 diff --git a/package-lock.json b/package-lock.json index d0caf08f2344..43f70b66bcd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.3.75-4", + "version": "1.3.75-5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.75-4", + "version": "1.3.75-5", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index e5788d6978ec..27e4d9ec434a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.75-4", + "version": "1.3.75-5", "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.", From 8cfba89a595ef8d956b0e81626922a7fcdc62daf Mon Sep 17 00:00:00 2001 From: OSBotify Date: Sun, 1 Oct 2023 07:12:14 +0000 Subject: [PATCH 26/30] Update version to 1.3.75-6 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 9092b80ab2b4..c2ee8d2c7573 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 1001037505 - versionName "1.3.75-5" + versionCode 1001037506 + versionName "1.3.75-6" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 7ce5d6768f05..4d27940fa735 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.3.75.5 + 1.3.75.6 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 1126651383b4..3a604142c1ac 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.3.75.5 + 1.3.75.6 diff --git a/package-lock.json b/package-lock.json index 43f70b66bcd6..b65087eae188 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.3.75-5", + "version": "1.3.75-6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.75-5", + "version": "1.3.75-6", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 27e4d9ec434a..e57b97d2fe66 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.75-5", + "version": "1.3.75-6", "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.", From a53fc8ff9c0a0a3c5423e343d8b2a2d22ab247aa Mon Sep 17 00:00:00 2001 From: OSBotify Date: Sun, 1 Oct 2023 08:17:58 +0000 Subject: [PATCH 27/30] Update version to 1.3.75-7 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index c2ee8d2c7573..fc9b3936b0e2 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 1001037506 - versionName "1.3.75-6" + versionCode 1001037507 + versionName "1.3.75-7" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 4d27940fa735..bf1797bf7af2 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.3.75.6 + 1.3.75.7 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index 3a604142c1ac..eff6164e9e39 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.3.75.6 + 1.3.75.7 diff --git a/package-lock.json b/package-lock.json index b65087eae188..b63ffbcd520f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.3.75-6", + "version": "1.3.75-7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.75-6", + "version": "1.3.75-7", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index e57b97d2fe66..5d3e23b511c5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.75-6", + "version": "1.3.75-7", "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.", From 32cbae688e075167b92f7e9f25b158301dd20464 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Sun, 1 Oct 2023 13:53:19 +0530 Subject: [PATCH 28/30] redirect from correct article --- .../expensify-classic/billing-and-subscriptions/Free-Trial.md | 1 - .../new-expensify/billing-and-plan-types/The-Free-Plan.md | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/articles/expensify-classic/billing-and-subscriptions/Free-Trial.md b/docs/articles/expensify-classic/billing-and-subscriptions/Free-Trial.md index 0a8c82c2f08c..e08aaa3d6094 100644 --- a/docs/articles/expensify-classic/billing-and-subscriptions/Free-Trial.md +++ b/docs/articles/expensify-classic/billing-and-subscriptions/Free-Trial.md @@ -1,6 +1,5 @@ --- title: Free Trial description: Free Trial -redirect_from: articles/split-bills/workspaces/The-Free-Plan/ --- ## Resource Coming Soon! diff --git a/docs/articles/new-expensify/billing-and-plan-types/The-Free-Plan.md b/docs/articles/new-expensify/billing-and-plan-types/The-Free-Plan.md index 0a8d6b3493e0..e157ede1969d 100644 --- a/docs/articles/new-expensify/billing-and-plan-types/The-Free-Plan.md +++ b/docs/articles/new-expensify/billing-and-plan-types/The-Free-Plan.md @@ -1,6 +1,7 @@ --- title: The Free Plan description: Everything you need to know about Expensify's Free Plan! +redirect_from: articles/split-bills/workspaces/The-Free-Plan/ --- From cfc14ae20767d333c3cac5f1517a1e20f4560ee9 Mon Sep 17 00:00:00 2001 From: Hans Date: Sun, 1 Oct 2023 15:34:18 +0700 Subject: [PATCH 29/30] fix crash while opening emoji picker --- .../home/report/ContextMenu/PopoverReportActionContextMenu.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js b/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js index 7328f02adc5f..1c54bc572a34 100644 --- a/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js +++ b/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js @@ -278,6 +278,7 @@ function PopoverReportActionContextMenu(_props, ref) { instanceID, runAndResetOnPopoverHide, clearActiveReportAction, + contentRef, })); const reportAction = reportActionRef.current; From 00933e121f0952b7d1c2a3d577a04d2acc208de8 Mon Sep 17 00:00:00 2001 From: OSBotify Date: Sun, 1 Oct 2023 10:48:04 +0000 Subject: [PATCH 30/30] Update version to 1.3.75-8 --- android/app/build.gradle | 4 ++-- ios/NewExpensify/Info.plist | 2 +- ios/NewExpensifyTests/Info.plist | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index fc9b3936b0e2..d85dda721838 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 1001037507 - versionName "1.3.75-7" + versionCode 1001037508 + versionName "1.3.75-8" } flavorDimensions "default" diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index bf1797bf7af2..fb13a410dd8e 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -40,7 +40,7 @@ CFBundleVersion - 1.3.75.7 + 1.3.75.8 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index eff6164e9e39..2168da376988 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -19,6 +19,6 @@ CFBundleSignature ???? CFBundleVersion - 1.3.75.7 + 1.3.75.8 diff --git a/package-lock.json b/package-lock.json index b63ffbcd520f..e31fae9ded6d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "new.expensify", - "version": "1.3.75-7", + "version": "1.3.75-8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.75-7", + "version": "1.3.75-8", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 5d3e23b511c5..6f00a174971e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.75-7", + "version": "1.3.75-8", "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.",