From 2927390f51d9b44f785d18f708c430f86cebb0e4 Mon Sep 17 00:00:00 2001 From: tienifr Date: Thu, 10 Aug 2023 18:26:45 +0700 Subject: [PATCH 001/275] fix: composer does not refocus when click the same chat --- src/pages/home/sidebar/SidebarLinks.js | 4 +++- src/pages/home/sidebar/SidebarLinksData.js | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pages/home/sidebar/SidebarLinks.js b/src/pages/home/sidebar/SidebarLinks.js index 5747ed0e1d4a..2e618ee0781e 100644 --- a/src/pages/home/sidebar/SidebarLinks.js +++ b/src/pages/home/sidebar/SidebarLinks.js @@ -59,6 +59,8 @@ const propTypes = { priorityMode: PropTypes.oneOf(_.values(CONST.PRIORITY_MODE)), + isActiveReport: PropTypes.func.isRequired, + ...withLocalizePropTypes, }; @@ -153,7 +155,7 @@ class SidebarLinks extends React.PureComponent { // or when clicking the active LHN row // or when continuously clicking different LHNs, only apply to small screen // since getTopmostReportId always returns on other devices - if (this.props.isCreateMenuOpen || this.props.currentReportID === option.reportID || (this.props.isSmallScreenWidth && Navigation.getTopmostReportId())) { + if (this.props.isCreateMenuOpen || (!this.props.isSmallScreenWidth && this.props.isActiveReport(option.reportID)) || (this.props.isSmallScreenWidth && Navigation.getTopmostReportId())) { return; } Navigation.navigate(ROUTES.getReportRoute(option.reportID)); diff --git a/src/pages/home/sidebar/SidebarLinksData.js b/src/pages/home/sidebar/SidebarLinksData.js index 58a7e676403a..68900eb5648b 100644 --- a/src/pages/home/sidebar/SidebarLinksData.js +++ b/src/pages/home/sidebar/SidebarLinksData.js @@ -1,4 +1,4 @@ -import React, {useMemo, useRef} from 'react'; +import React, {useCallback, useMemo, useRef} from 'react'; import _ from 'underscore'; import {deepEqual} from 'fast-equals'; import {withOnyx} from 'react-native-onyx'; @@ -15,6 +15,7 @@ import CONST from '../../../CONST'; import useLocalize from '../../../hooks/useLocalize'; import styles from '../../../styles/styles'; import withNavigationFocus from '../../../components/withNavigationFocus'; +import usePrevious from "../../../hooks/usePrevious"; const propTypes = { ...basePropTypes, @@ -75,6 +76,10 @@ function SidebarLinksData({isFocused, allReportActions, betas, chatReports, curr return reportIDs; }, [allReportActions, betas, chatReports, currentReportID, policies, priorityMode]); + const prevCurrentReportID = usePrevious(currentReportID); + const isActiveReport = useCallback((reportID) => prevCurrentReportID === reportID, [prevCurrentReportID]); + console.log(currentReportID, prevCurrentReportID, 'SidebarLinksData') + const isLoading = _.isEmpty(chatReports) || isPersonalDetailsLoading; return ( @@ -90,6 +95,7 @@ function SidebarLinksData({isFocused, allReportActions, betas, chatReports, curr isSmallScreenWidth={isSmallScreenWidth} priorityMode={priorityMode} // Data props: + isActiveReport={isActiveReport} isLoading={isLoading} optionListItems={optionListItems} /> From adb010e186c5d63a4fa659cb4ae7c2340b424e3c Mon Sep 17 00:00:00 2001 From: tienifr Date: Thu, 10 Aug 2023 18:32:37 +0700 Subject: [PATCH 002/275] prettier --- src/pages/home/sidebar/SidebarLinks.js | 6 +++++- src/pages/home/sidebar/SidebarLinksData.js | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pages/home/sidebar/SidebarLinks.js b/src/pages/home/sidebar/SidebarLinks.js index 2e618ee0781e..938e86e3a6e0 100644 --- a/src/pages/home/sidebar/SidebarLinks.js +++ b/src/pages/home/sidebar/SidebarLinks.js @@ -155,7 +155,11 @@ class SidebarLinks extends React.PureComponent { // or when clicking the active LHN row // or when continuously clicking different LHNs, only apply to small screen // since getTopmostReportId always returns on other devices - if (this.props.isCreateMenuOpen || (!this.props.isSmallScreenWidth && this.props.isActiveReport(option.reportID)) || (this.props.isSmallScreenWidth && Navigation.getTopmostReportId())) { + if ( + this.props.isCreateMenuOpen || + (!this.props.isSmallScreenWidth && this.props.isActiveReport(option.reportID)) || + (this.props.isSmallScreenWidth && Navigation.getTopmostReportId()) + ) { return; } Navigation.navigate(ROUTES.getReportRoute(option.reportID)); diff --git a/src/pages/home/sidebar/SidebarLinksData.js b/src/pages/home/sidebar/SidebarLinksData.js index 68900eb5648b..82423aa4357c 100644 --- a/src/pages/home/sidebar/SidebarLinksData.js +++ b/src/pages/home/sidebar/SidebarLinksData.js @@ -15,7 +15,7 @@ import CONST from '../../../CONST'; import useLocalize from '../../../hooks/useLocalize'; import styles from '../../../styles/styles'; import withNavigationFocus from '../../../components/withNavigationFocus'; -import usePrevious from "../../../hooks/usePrevious"; +import usePrevious from '../../../hooks/usePrevious'; const propTypes = { ...basePropTypes, @@ -78,7 +78,7 @@ function SidebarLinksData({isFocused, allReportActions, betas, chatReports, curr const prevCurrentReportID = usePrevious(currentReportID); const isActiveReport = useCallback((reportID) => prevCurrentReportID === reportID, [prevCurrentReportID]); - console.log(currentReportID, prevCurrentReportID, 'SidebarLinksData') + console.log(currentReportID, prevCurrentReportID, 'SidebarLinksData'); const isLoading = _.isEmpty(chatReports) || isPersonalDetailsLoading; From 67e5169e183fae2795c23098e0a0787ff7e66d5f Mon Sep 17 00:00:00 2001 From: tienifr Date: Thu, 10 Aug 2023 18:34:09 +0700 Subject: [PATCH 003/275] add comment --- src/pages/home/sidebar/SidebarLinks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/home/sidebar/SidebarLinks.js b/src/pages/home/sidebar/SidebarLinks.js index 938e86e3a6e0..c535954773fa 100644 --- a/src/pages/home/sidebar/SidebarLinks.js +++ b/src/pages/home/sidebar/SidebarLinks.js @@ -152,7 +152,7 @@ class SidebarLinks extends React.PureComponent { */ showReportPage(option) { // Prevent opening Report page when clicking LHN row quickly after clicking FAB icon - // or when clicking the active LHN row + // or when clicking the active LHN row on large screens // or when continuously clicking different LHNs, only apply to small screen // since getTopmostReportId always returns on other devices if ( From fe9034bf454281bc2b1bec01abb94ec2c70e7c74 Mon Sep 17 00:00:00 2001 From: tienifr Date: Thu, 10 Aug 2023 18:37:30 +0700 Subject: [PATCH 004/275] remove console log --- src/pages/home/sidebar/SidebarLinksData.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/home/sidebar/SidebarLinksData.js b/src/pages/home/sidebar/SidebarLinksData.js index 82423aa4357c..219d697f3963 100644 --- a/src/pages/home/sidebar/SidebarLinksData.js +++ b/src/pages/home/sidebar/SidebarLinksData.js @@ -78,7 +78,6 @@ function SidebarLinksData({isFocused, allReportActions, betas, chatReports, curr const prevCurrentReportID = usePrevious(currentReportID); const isActiveReport = useCallback((reportID) => prevCurrentReportID === reportID, [prevCurrentReportID]); - console.log(currentReportID, prevCurrentReportID, 'SidebarLinksData'); const isLoading = _.isEmpty(chatReports) || isPersonalDetailsLoading; From bc0b9dfbc209195be7b10488aa39e364c47e526e Mon Sep 17 00:00:00 2001 From: tienifr Date: Fri, 11 Aug 2023 23:41:10 +0700 Subject: [PATCH 005/275] useRef instead of usePrevious --- src/pages/home/sidebar/SidebarLinksData.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/home/sidebar/SidebarLinksData.js b/src/pages/home/sidebar/SidebarLinksData.js index 219d697f3963..471812c27c54 100644 --- a/src/pages/home/sidebar/SidebarLinksData.js +++ b/src/pages/home/sidebar/SidebarLinksData.js @@ -76,8 +76,9 @@ function SidebarLinksData({isFocused, allReportActions, betas, chatReports, curr return reportIDs; }, [allReportActions, betas, chatReports, currentReportID, policies, priorityMode]); - const prevCurrentReportID = usePrevious(currentReportID); - const isActiveReport = useCallback((reportID) => prevCurrentReportID === reportID, [prevCurrentReportID]); + const currentReportIDRef = useRef(currentReportID); + currentReportIDRef.current = currentReportID; + const isActiveReport = useCallback((reportID) => currentReportIDRef.current === reportID, []); const isLoading = _.isEmpty(chatReports) || isPersonalDetailsLoading; From ac5f2dc9e6d68e6000bee555aedbfd6957d26974 Mon Sep 17 00:00:00 2001 From: tienifr Date: Sat, 12 Aug 2023 00:41:18 +0700 Subject: [PATCH 006/275] fix lint --- src/pages/home/sidebar/SidebarLinksData.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/home/sidebar/SidebarLinksData.js b/src/pages/home/sidebar/SidebarLinksData.js index 471812c27c54..1a27eefa6077 100644 --- a/src/pages/home/sidebar/SidebarLinksData.js +++ b/src/pages/home/sidebar/SidebarLinksData.js @@ -15,7 +15,6 @@ import CONST from '../../../CONST'; import useLocalize from '../../../hooks/useLocalize'; import styles from '../../../styles/styles'; import withNavigationFocus from '../../../components/withNavigationFocus'; -import usePrevious from '../../../hooks/usePrevious'; const propTypes = { ...basePropTypes, From cf5e3cae0d50cae7934fda43c70e538aca6d7a39 Mon Sep 17 00:00:00 2001 From: tienifr Date: Mon, 14 Aug 2023 16:47:50 +0700 Subject: [PATCH 007/275] move all currentReportID out of SidebarLinks --- .../LHNOptionsList/LHNOptionsList.js | 7 ++- src/pages/home/sidebar/SidebarLinks.js | 49 ++++--------------- src/pages/home/sidebar/SidebarLinksData.js | 18 ++++--- 3 files changed, 27 insertions(+), 47 deletions(-) diff --git a/src/components/LHNOptionsList/LHNOptionsList.js b/src/components/LHNOptionsList/LHNOptionsList.js index 13de5a5e8c52..873ce47eb371 100644 --- a/src/components/LHNOptionsList/LHNOptionsList.js +++ b/src/components/LHNOptionsList/LHNOptionsList.js @@ -21,6 +21,9 @@ const propTypes = { /** Toggle between compact and default view of the option */ optionMode: PropTypes.oneOf(_.values(CONST.OPTION_MODE)).isRequired, + /** Is loading report data */ + isLoading: PropTypes.bool.isRequired, + /** Whether to allow option focus or not */ shouldDisableFocusOptions: PropTypes.bool, }; @@ -29,7 +32,7 @@ const defaultProps = { shouldDisableFocusOptions: false, }; -function LHNOptionsList({contentContainerStyles, data, onSelectRow, optionMode, shouldDisableFocusOptions}) { +function LHNOptionsList({contentContainerStyles, data, onSelectRow, optionMode, shouldDisableFocusOptions, isLoading}) { /** * This function is used to compute the layout of any given item in our list. Since we know that each item will have the exact same height, this is a performance optimization * so that the heights can be determined before the options are rendered. Otherwise, the heights are determined when each option is rendering and it causes a lot of overhead on large @@ -67,7 +70,7 @@ function LHNOptionsList({contentContainerStyles, data, onSelectRow, optionMode, ); return ( - + - {this.props.isLoading ? ( - <> - {lodashGet(this.props.report, 'reportID') && ( - - )} - - - ) : ( - - )} + + {this.props.isLoading && } ); } @@ -262,15 +243,5 @@ class SidebarLinks extends React.PureComponent { SidebarLinks.propTypes = propTypes; SidebarLinks.defaultProps = defaultProps; -export default compose( - withLocalize, - withCurrentUserPersonalDetails, - withWindowDimensions, - withCurrentReportID, - withOnyx({ - report: { - key: ({currentReportID}) => `${ONYXKEYS.COLLECTION.REPORT}${currentReportID}`, - }, - }), -)(SidebarLinks); +export default compose(withLocalize, withCurrentUserPersonalDetails, withWindowDimensions)(SidebarLinks); export {basePropTypes}; diff --git a/src/pages/home/sidebar/SidebarLinksData.js b/src/pages/home/sidebar/SidebarLinksData.js index 8a0ee4f5c344..244a00fd7184 100644 --- a/src/pages/home/sidebar/SidebarLinksData.js +++ b/src/pages/home/sidebar/SidebarLinksData.js @@ -66,22 +66,28 @@ const defaultProps = { function SidebarLinksData({isFocused, allReportActions, betas, chatReports, currentReportID, insets, isLoadingReportData, isSmallScreenWidth, onLinkClick, policies, priorityMode}) { const {translate} = useLocalize(); + const isLoading = SessionUtils.didUserLogInDuringSession() && isLoadingReportData; + + const currentReportIDRef = useRef(currentReportID); + currentReportIDRef.current = currentReportID; + const reportIDsRef = useRef([]); const optionListItems = useMemo(() => { - const reportIDs = SidebarUtils.getOrderedReportIDs(currentReportID, chatReports, betas, policies, priorityMode, allReportActions); + if (isLoading && !lodashGet(chatReports, [`${ONYXKEYS.COLLECTION.REPORT}${currentReportIDRef.current}`, 'reportID'])) { + reportIDsRef.current = []; + return reportIDsRef.current; + } + + const reportIDs = SidebarUtils.getOrderedReportIDs(currentReportIDRef.current, chatReports, betas, policies, priorityMode, allReportActions); if (deepEqual(reportIDsRef.current, reportIDs)) { return reportIDsRef.current; } reportIDsRef.current = reportIDs; return reportIDs; - }, [allReportActions, betas, chatReports, currentReportID, policies, priorityMode]); + }, [allReportActions, betas, chatReports, isLoading, policies, priorityMode]); - const currentReportIDRef = useRef(currentReportID); - currentReportIDRef.current = currentReportID; const isActiveReport = useCallback((reportID) => currentReportIDRef.current === reportID, []); - const isLoading = SessionUtils.didUserLogInDuringSession() && isLoadingReportData; - return ( Date: Wed, 16 Aug 2023 12:00:29 +0700 Subject: [PATCH 008/275] fix: 24261 user able to select 2 emoji at a time --- .../EmojiPickerMenu/index.native.js | 4 ++- src/hooks/useSingleExecution.js | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/hooks/useSingleExecution.js diff --git a/src/components/EmojiPicker/EmojiPickerMenu/index.native.js b/src/components/EmojiPicker/EmojiPickerMenu/index.native.js index a794d4aa4bad..bfdaf1c13d1b 100644 --- a/src/components/EmojiPicker/EmojiPickerMenu/index.native.js +++ b/src/components/EmojiPicker/EmojiPickerMenu/index.native.js @@ -19,6 +19,7 @@ import * as User from '../../../libs/actions/User'; import TextInput from '../../TextInput'; import CategoryShortcutBar from '../CategoryShortcutBar'; import * as StyleUtils from '../../../styles/StyleUtils'; +import useSingleExecution from '../../../hooks/useSingleExecution'; const propTypes = { /** Function to add the selected emoji to the main compose text input */ @@ -49,6 +50,7 @@ function EmojiPickerMenu({preferredLocale, onEmojiSelected, preferredSkinTone, t const [filteredEmojis, setFilteredEmojis] = useState(allEmojis); const [headerIndices, setHeaderIndices] = useState(headerRowIndices); const {windowWidth} = useWindowDimensions(); + const {singleExecution} = useSingleExecution(); useEffect(() => { setFilteredEmojis(allEmojis); @@ -150,7 +152,7 @@ function EmojiPickerMenu({preferredLocale, onEmojiSelected, preferredSkinTone, t return ( addToFrequentAndSelectEmoji(emoji, item)} + onPress={singleExecution((emoji) => addToFrequentAndSelectEmoji(emoji, item))} emoji={emojiCode} /> ); diff --git a/src/hooks/useSingleExecution.js b/src/hooks/useSingleExecution.js new file mode 100644 index 000000000000..b6012013ff48 --- /dev/null +++ b/src/hooks/useSingleExecution.js @@ -0,0 +1,36 @@ +import {InteractionManager} from 'react-native'; +import {useCallback, useState} from 'react'; + +/** + * With any action passed in, it will only allow 1 such action to occur at a time. + * + * @returns {Object} + */ +export default function useSingleExecution() { + const [isExecuting, setIsExecuting] = useState(false); + + const singleExecution = useCallback( + (action) => + (...params) => { + if (isExecuting) { + return; + } + + setIsExecuting(true); + + const execution = action(params); + InteractionManager.runAfterInteractions(() => { + if (!(execution instanceof Promise)) { + setIsExecuting(false); + return; + } + execution.finally(() => { + setIsExecuting(false); + }); + }); + }, + [isExecuting], + ); + + return {isExecuting, singleExecution}; +} From 28c5a5d99744e17cc1b53c4b76f8cf621911433f Mon Sep 17 00:00:00 2001 From: tienifr Date: Wed, 16 Aug 2023 15:08:08 +0700 Subject: [PATCH 009/275] fix: update hook --- src/hooks/useSingleExecution.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/hooks/useSingleExecution.js b/src/hooks/useSingleExecution.js index b6012013ff48..8654118284bd 100644 --- a/src/hooks/useSingleExecution.js +++ b/src/hooks/useSingleExecution.js @@ -6,13 +6,16 @@ import {useCallback, useState} from 'react'; * * @returns {Object} */ -export default function useSingleExecution() { +function useSingleExecution() { const [isExecuting, setIsExecuting] = useState(false); + const isExecutingRef = useRef(); + + isExecutingRef.current = isExecuting; const singleExecution = useCallback( (action) => (...params) => { - if (isExecuting) { + if (isExecutingRef.current) { return; } @@ -29,7 +32,7 @@ export default function useSingleExecution() { }); }); }, - [isExecuting], + [], ); return {isExecuting, singleExecution}; From 331c5a8e4e9b674f34319efec64b3ea2f6117401 Mon Sep 17 00:00:00 2001 From: tienifr Date: Wed, 16 Aug 2023 15:22:58 +0700 Subject: [PATCH 010/275] fix: update use single execution hook --- ios/Podfile.lock | 2 +- src/hooks/useSingleExecution.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index af29315b58ca..d80ee7c6be61 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1241,4 +1241,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: ff7c8276619cfa428c00b8439045ffd134df7eb8 -COCOAPODS: 1.12.1 +COCOAPODS: 1.11.3 diff --git a/src/hooks/useSingleExecution.js b/src/hooks/useSingleExecution.js index 8654118284bd..5f5acebe744f 100644 --- a/src/hooks/useSingleExecution.js +++ b/src/hooks/useSingleExecution.js @@ -1,12 +1,12 @@ import {InteractionManager} from 'react-native'; -import {useCallback, useState} from 'react'; +import {useCallback, useState, useRef} from 'react'; /** * With any action passed in, it will only allow 1 such action to occur at a time. * * @returns {Object} */ -function useSingleExecution() { +export default function useSingleExecution() { const [isExecuting, setIsExecuting] = useState(false); const isExecutingRef = useRef(); From d3b053f22a47fdde269c125e1079dbcc8ed04db4 Mon Sep 17 00:00:00 2001 From: tienifr Date: Wed, 16 Aug 2023 15:24:05 +0700 Subject: [PATCH 011/275] reset -podfile --- ios/Podfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index d80ee7c6be61..af29315b58ca 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1241,4 +1241,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: ff7c8276619cfa428c00b8439045ffd134df7eb8 -COCOAPODS: 1.11.3 +COCOAPODS: 1.12.1 From 8eb68aaef5890a7055e09d8f3023cd18d4dc9940 Mon Sep 17 00:00:00 2001 From: Yogesh Bhatt Date: Fri, 25 Aug 2023 02:50:10 +0530 Subject: [PATCH 012/275] Fix LHN display issue for money request via scan --- .../LHNOptionsList/OptionRowLHNData.js | 20 +++++++- src/hooks/useDeepCompareMemo.js | 26 ++++++++++ src/libs/ReportUtils.js | 48 +++++++++++++++++++ .../home/report/ReportActionItemSingle.js | 2 +- 4 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 src/hooks/useDeepCompareMemo.js diff --git a/src/components/LHNOptionsList/OptionRowLHNData.js b/src/components/LHNOptionsList/OptionRowLHNData.js index 21fade6eb942..acf5a5523b27 100644 --- a/src/components/LHNOptionsList/OptionRowLHNData.js +++ b/src/components/LHNOptionsList/OptionRowLHNData.js @@ -12,9 +12,12 @@ import withCurrentReportID, {withCurrentReportIDPropTypes, withCurrentReportIDDe import OptionRowLHN, {propTypes as basePropTypes, defaultProps as baseDefaultProps} from './OptionRowLHN'; import * as Report from '../../libs/actions/Report'; import * as UserUtils from '../../libs/UserUtils'; +import * as ReportUtils from '../../libs/ReportUtils'; + import participantPropTypes from '../participantPropTypes'; import CONST from '../../CONST'; import reportActionPropTypes from '../../pages/home/report/reportActionPropTypes'; +import useDeepCompareMemo from '../../hooks/useDeepCompareMemo'; const propTypes = { /** If true will disable ever setting the OptionRowLHN to focused */ @@ -75,6 +78,7 @@ function OptionRowLHNData({ preferredLocale, comment, policies, + receiptTransactions, parentReportActions, ...propsToForward }) { @@ -88,6 +92,15 @@ function OptionRowLHNData({ const parentReportAction = parentReportActions[fullReport.parentReportActionID]; const optionItemRef = useRef(); + + const lastTransaction = useMemo(() => { + const transactionsWithReceipts = ReportUtils.getSortedTransactionsWithReceipts(fullReport.reportID); + const lastTransaction = _.first(transactionsWithReceipts); + return lastTransaction; + }, [fullReport.reportID, receiptTransactions]); + + let memoizedLastTransaction = useDeepCompareMemo(lastTransaction); + const optionItem = useMemo(() => { // Note: ideally we'd have this as a dependent selector in onyx! const item = SidebarUtils.getOptionData(fullReport, reportActions, personalDetails, preferredLocale, policy); @@ -98,7 +111,7 @@ function OptionRowLHNData({ return item; // Listen parentReportAction to update title of thread report when parentReportAction changed // eslint-disable-next-line react-hooks/exhaustive-deps - }, [fullReport, reportActions, personalDetails, preferredLocale, policy, parentReportAction]); + }, [fullReport, memoizedLastTransaction, reportActions, personalDetails, preferredLocale, policy, parentReportAction]); useEffect(() => { if (!optionItem || optionItem.hasDraftComment || !comment || comment.length <= 0 || isFocused) { @@ -186,6 +199,11 @@ export default React.memo( key: ({fullReport}) => `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${fullReport.parentReportID}`, canEvict: false, }, + // Ideally, we aim to access only the last transaction for the current report by listening to changes in reportActions. + // In some scenarios, a transaction might be created after reportActions have been modified. + // This can lead to situations where `lastTransaction` doesn't update and retains the previous value. + // However, performance overhead of this is minimized by using memos inside the component. + receiptTransactions: {key: ONYXKEYS.COLLECTION.TRANSACTION}, }), )(OptionRowLHNData), ); diff --git a/src/hooks/useDeepCompareMemo.js b/src/hooks/useDeepCompareMemo.js new file mode 100644 index 000000000000..ebed9ffdeebe --- /dev/null +++ b/src/hooks/useDeepCompareMemo.js @@ -0,0 +1,26 @@ +import {useRef} from 'react'; +import _ from 'lodash'; + +/** + * Custom hook to memoize a value based on deep comparison. + * Returns the previous value if the current value is deeply equal to the previous one. + * + * @function + * @template T + * @param {T} value - The value to be memoized. + * @returns {T} - The memoized value. Returns the previous value if the current value is deeply equal to the previous one. + * @example + * + * const object = { a: 1, b: 2 }; + * const memoizedObject = useDeepCompareMemo(object); + */ +export default function useDeepCompareMemo(value) { + const ref = useRef(); // Holds the previous value + + // If the new value is not deeply equal to the old value, update the ref + if (!_.isEqual(value, ref.current)) { + ref.current = value; + } + + return ref.current; +} diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index 681495350069..798f4b2eec36 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -1213,6 +1213,26 @@ function getMoneyRequestReportName(report, policy = undefined) { amount: formattedAmount, }); + // get lastReportActionTransaction + const reportActions = ReportActionsUtils.getAllReportActions(report.reportID); + const sortedReportActions = ReportActionsUtils.getSortedReportActionsForDisplay(reportActions); + const filteredReportActions = _.filter(sortedReportActions, (reportAction) => { + return reportAction.pendingAction !== 'delete'; + }); + const lastReportAction = _.first(filteredReportActions); + const lastReportActionTransaction = TransactionUtils.getLinkedTransaction(lastReportAction); + + // get lastTransaction + // eslint-disable-next-line no-use-before-define + const transactionsWithReceipts = getSortedTransactionsWithReceipts(report.reportID); + const lastTransaction = _.first(transactionsWithReceipts); + + const transactionIsLastReportAction = _.isEqual(lastReportActionTransaction, lastTransaction); + + if (lastTransaction && transactionIsLastReportAction && TransactionUtils.isReceiptBeingScanned(lastTransaction)) { + return Localize.translateLocal('iou.receiptScanning'); + } + if (report.isWaitingOnBankAccount) { return `${payerPaidAmountMesssage} • ${Localize.translateLocal('iou.pending')}`; } @@ -1274,6 +1294,33 @@ function getTransactionsWithReceipts(iouReportID) { ); } +/** + * Gets all sorted transactions on an IOU report with a receipt and whose pending action is not delete + * + * @param {Object|null} iouReportID + * @returns {[Object]} + */ +function getSortedTransactionsWithReceipts(iouReportID) { + const reportActions = ReportActionsUtils.getAllReportActions(iouReportID); + const sortedReportActions = ReportActionsUtils.getSortedReportActionsForDisplay(reportActions); + const filteredSortedReportActions = _.filter(sortedReportActions, (reportAction) => { + return reportAction.pendingAction !== 'delete'; + }); + return _.reduce( + filteredSortedReportActions, + (transactions, action) => { + if (ReportActionsUtils.isMoneyRequestAction(action)) { + const transaction = TransactionUtils.getLinkedTransaction(action); + if (TransactionUtils.hasReceipt(transaction)) { + transactions.push(transaction); + } + } + return transactions; + }, + [], + ); +} + /** * For report previews, we display a "Receipt scan in progress" indicator * instead of the report total only when we have no report total ready to show. This is the case when @@ -3445,4 +3492,5 @@ export { areAllRequestsBeingSmartScanned, getReportPreviewDisplayTransactions, getTransactionsWithReceipts, + getSortedTransactionsWithReceipts, }; diff --git a/src/pages/home/report/ReportActionItemSingle.js b/src/pages/home/report/ReportActionItemSingle.js index 80f49f177b6f..768076e7730b 100644 --- a/src/pages/home/report/ReportActionItemSingle.js +++ b/src/pages/home/report/ReportActionItemSingle.js @@ -151,7 +151,7 @@ function ReportActionItemSingle(props) { } showUserDetails(props.action.delegateAccountID ? props.action.delegateAccountID : actorAccountID); } - }, [isWorkspaceActor, props.report.reportID, actorAccountID, props.action.delegateAccountID, props.iouReport, displayAllActors]); + }, [isWorkspaceActor, props.report && props.report.reportID, actorAccountID, props.action.delegateAccountID, props.iouReport && props.iouReport.reportID, displayAllActors]); const shouldDisableDetailPage = useMemo( () => !isWorkspaceActor && ReportUtils.isOptimisticPersonalDetail(props.action.delegateAccountID ? props.action.delegateAccountID : actorAccountID), From 958b1ca33ecd43507c4e0e8361cab351a4892298 Mon Sep 17 00:00:00 2001 From: Yogesh Bhatt Date: Fri, 25 Aug 2023 04:41:10 +0530 Subject: [PATCH 013/275] Linting fixes --- src/components/LHNOptionsList/OptionRowLHNData.js | 5 ++--- src/libs/ReportUtils.js | 9 +++------ src/pages/home/report/ReportActionItemSingle.js | 9 ++++++--- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/components/LHNOptionsList/OptionRowLHNData.js b/src/components/LHNOptionsList/OptionRowLHNData.js index acf5a5523b27..bd7735be4a14 100644 --- a/src/components/LHNOptionsList/OptionRowLHNData.js +++ b/src/components/LHNOptionsList/OptionRowLHNData.js @@ -95,11 +95,10 @@ function OptionRowLHNData({ const lastTransaction = useMemo(() => { const transactionsWithReceipts = ReportUtils.getSortedTransactionsWithReceipts(fullReport.reportID); - const lastTransaction = _.first(transactionsWithReceipts); - return lastTransaction; + return _.first(transactionsWithReceipts); }, [fullReport.reportID, receiptTransactions]); - let memoizedLastTransaction = useDeepCompareMemo(lastTransaction); + const memoizedLastTransaction = useDeepCompareMemo(lastTransaction); const optionItem = useMemo(() => { // Note: ideally we'd have this as a dependent selector in onyx! diff --git a/src/libs/ReportUtils.js b/src/libs/ReportUtils.js index 798f4b2eec36..4022d03da0ad 100644 --- a/src/libs/ReportUtils.js +++ b/src/libs/ReportUtils.js @@ -1216,9 +1216,8 @@ function getMoneyRequestReportName(report, policy = undefined) { // get lastReportActionTransaction const reportActions = ReportActionsUtils.getAllReportActions(report.reportID); const sortedReportActions = ReportActionsUtils.getSortedReportActionsForDisplay(reportActions); - const filteredReportActions = _.filter(sortedReportActions, (reportAction) => { - return reportAction.pendingAction !== 'delete'; - }); + const filteredReportActions = _.filter(sortedReportActions, (reportAction) => reportAction.pendingAction !== 'delete'); + const lastReportAction = _.first(filteredReportActions); const lastReportActionTransaction = TransactionUtils.getLinkedTransaction(lastReportAction); @@ -1303,9 +1302,7 @@ function getTransactionsWithReceipts(iouReportID) { function getSortedTransactionsWithReceipts(iouReportID) { const reportActions = ReportActionsUtils.getAllReportActions(iouReportID); const sortedReportActions = ReportActionsUtils.getSortedReportActionsForDisplay(reportActions); - const filteredSortedReportActions = _.filter(sortedReportActions, (reportAction) => { - return reportAction.pendingAction !== 'delete'; - }); + const filteredSortedReportActions = _.filter(sortedReportActions, (reportAction) => reportAction.pendingAction !== 'delete'); return _.reduce( filteredSortedReportActions, (transactions, action) => { diff --git a/src/pages/home/report/ReportActionItemSingle.js b/src/pages/home/report/ReportActionItemSingle.js index 768076e7730b..d9dcb4446d9b 100644 --- a/src/pages/home/report/ReportActionItemSingle.js +++ b/src/pages/home/report/ReportActionItemSingle.js @@ -140,18 +140,21 @@ function ReportActionItemSingle(props) { ] : props.action.person; + const reportID = props.report && props.report.reportID; + const iouReportID = props.report && props.report.reportID; + const showActorDetails = useCallback(() => { if (isWorkspaceActor) { - showWorkspaceDetails(props.report.reportID); + showWorkspaceDetails(reportID); } else { // Show participants page IOU report preview if (displayAllActors) { - Navigation.navigate(ROUTES.getReportParticipantsRoute(props.iouReport.reportID)); + Navigation.navigate(ROUTES.getReportParticipantsRoute(iouReportID)); return; } showUserDetails(props.action.delegateAccountID ? props.action.delegateAccountID : actorAccountID); } - }, [isWorkspaceActor, props.report && props.report.reportID, actorAccountID, props.action.delegateAccountID, props.iouReport && props.iouReport.reportID, displayAllActors]); + }, [isWorkspaceActor, reportID, actorAccountID, props.action.delegateAccountID, iouReportID, displayAllActors]); const shouldDisableDetailPage = useMemo( () => !isWorkspaceActor && ReportUtils.isOptimisticPersonalDetail(props.action.delegateAccountID ? props.action.delegateAccountID : actorAccountID), From c735418548076ff00583711c472e6b36ca59a0df Mon Sep 17 00:00:00 2001 From: Yogesh Bhatt Date: Fri, 25 Aug 2023 05:07:26 +0530 Subject: [PATCH 014/275] Eslint fixes --- src/components/LHNOptionsList/OptionRowLHNData.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/LHNOptionsList/OptionRowLHNData.js b/src/components/LHNOptionsList/OptionRowLHNData.js index bd7735be4a14..83d59a24d5e1 100644 --- a/src/components/LHNOptionsList/OptionRowLHNData.js +++ b/src/components/LHNOptionsList/OptionRowLHNData.js @@ -96,6 +96,7 @@ function OptionRowLHNData({ const lastTransaction = useMemo(() => { const transactionsWithReceipts = ReportUtils.getSortedTransactionsWithReceipts(fullReport.reportID); return _.first(transactionsWithReceipts); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [fullReport.reportID, receiptTransactions]); const memoizedLastTransaction = useDeepCompareMemo(lastTransaction); From ca24904a08a22c55f2534d3a0498774ee5f88f42 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Mon, 28 Aug 2023 15:15:28 +0200 Subject: [PATCH 015/275] convert file to .ts --- src/styles/{StyleUtils.js => StyleUtils.ts} | 244 ++++++-------------- 1 file changed, 74 insertions(+), 170 deletions(-) rename src/styles/{StyleUtils.js => StyleUtils.ts} (86%) diff --git a/src/styles/StyleUtils.js b/src/styles/StyleUtils.ts similarity index 86% rename from src/styles/StyleUtils.js rename to src/styles/StyleUtils.ts index 9dcf954e84fd..1628befe283e 100644 --- a/src/styles/StyleUtils.js +++ b/src/styles/StyleUtils.ts @@ -10,6 +10,10 @@ import spacing from './utilities/spacing'; import * as UserUtils from '../libs/UserUtils'; import * as Browser from '../libs/Browser'; import cursor from './utilities/cursor'; +import {EdgeInsets} from 'react-native-safe-area-context' +import { Animated, TextStyle, ViewStyle } from 'react-native'; +import { CSSProperties } from 'react'; +import { ValueOf } from 'type-fest'; const workspaceColorOptions = [ {backgroundColor: colors.blue200, fill: colors.blue700}, @@ -30,7 +34,7 @@ const workspaceColorOptions = [ {backgroundColor: colors.ice200, fill: colors.ice700}, {backgroundColor: colors.ice400, fill: colors.ice800}, {backgroundColor: colors.ice700, fill: colors.ice200}, -]; +] satisfies Array<{ backgroundColor: ValueOf, fill: ValueOf }> const avatarBorderSizes = { [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: variables.componentBorderRadiusSmall, @@ -44,7 +48,7 @@ const avatarBorderSizes = { [CONST.AVATAR_SIZE.LARGE]: variables.componentBorderRadiusLarge, [CONST.AVATAR_SIZE.LARGE_BORDERED]: variables.componentBorderRadiusRounded, [CONST.AVATAR_SIZE.SMALL_NORMAL]: variables.componentBorderRadiusMedium, -}; +} satisfies Partial, number>>; const avatarSizes = { [CONST.AVATAR_SIZE.DEFAULT]: variables.avatarSizeNormal, @@ -59,50 +63,39 @@ const avatarSizes = { [CONST.AVATAR_SIZE.HEADER]: variables.avatarSizeHeader, [CONST.AVATAR_SIZE.MENTION_ICON]: variables.avatarSizeMentionIcon, [CONST.AVATAR_SIZE.SMALL_NORMAL]: variables.avatarSizeSmallNormal, -}; +} satisfies Partial, number>>; const emptyAvatarStyles = { [CONST.AVATAR_SIZE.SMALL]: styles.emptyAvatarSmall, [CONST.AVATAR_SIZE.MEDIUM]: styles.emptyAvatarMedium, [CONST.AVATAR_SIZE.LARGE]: styles.emptyAvatarLarge, -}; +} satisfies Partial, ViewStyle | CSSProperties>>; /** * Return the style size from an avatar size constant - * - * @param {String} size - * @returns {Number} */ -function getAvatarSize(size) { +function getAvatarSize(size: ValueOf): number { return avatarSizes[size]; } /** * Return the height of magic code input container - * - * @returns {Object} */ -function getHeightOfMagicCodeInput() { +function getHeightOfMagicCodeInput(): { height: number } { return {height: styles.magicCodeInputContainer.minHeight - styles.textInputContainer.borderBottomWidth}; } /** * Return the style from an empty avatar size constant - * - * @param {String} size - * @returns {Object} */ -function getEmptyAvatarStyle(size) { +function getEmptyAvatarStyle(size: string) { return emptyAvatarStyles[size]; } /** * Return the width style from an avatar size constant - * - * @param {String} size - * @returns {Object} */ -function getAvatarWidthStyle(size) { +function getAvatarWidthStyle(size: string): {width: number} { const avatarSize = getAvatarSize(size); return { width: avatarSize, @@ -111,11 +104,8 @@ function getAvatarWidthStyle(size) { /** * Return the style from an avatar size constant - * - * @param {String} size - * @returns {Object} */ -function getAvatarStyle(size) { +function getAvatarStyle(size: string): {height: number, width: number, borderRadius: number, backgroundColor: string} { const avatarSize = getAvatarSize(size); return { height: avatarSize, @@ -127,10 +117,8 @@ function getAvatarStyle(size) { /** * Get Font size of '+1' text on avatar overlay - * @param {String} size - * @returns {Object} */ -function getAvatarExtraFontSizeStyle(size) { +function getAvatarExtraFontSizeStyle(size: string): { fontSize: number } { const AVATAR_SIZES = { [CONST.AVATAR_SIZE.DEFAULT]: variables.fontSizeNormal, [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: variables.fontSizeExtraSmall, @@ -149,10 +137,8 @@ function getAvatarExtraFontSizeStyle(size) { /** * Get Bordersize of Avatar based on avatar size - * @param {String} size - * @returns {Object} */ -function getAvatarBorderWidth(size) { +function getAvatarBorderWidth(size: string): {borderWidth: number} { const AVATAR_SIZES = { [CONST.AVATAR_SIZE.DEFAULT]: 3, [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: 1, @@ -169,14 +155,12 @@ function getAvatarBorderWidth(size) { }; } +// satisfies Partial, number>>; +type Test = ValueOf /** * Return the border radius for an avatar - * - * @param {String} size - * @param {String} type - * @returns {Object} */ -function getAvatarBorderRadius(size, type) { +function getAvatarBorderRadius(size: ValueOf, type: string): {borderRadius: number} { if (type === CONST.ICON_TYPE_WORKSPACE) { return {borderRadius: avatarBorderSizes[size]}; } @@ -187,12 +171,8 @@ function getAvatarBorderRadius(size, type) { /** * Return the border style for an avatar - * - * @param {String} size - * @param {String} type - * @returns {Object} */ -function getAvatarBorderStyle(size, type) { +function getAvatarBorderStyle(size: string, type: string): {overflow: string, borderRadius: number} { return { overflow: 'hidden', ...getAvatarBorderRadius(size, type), @@ -201,11 +181,8 @@ function getAvatarBorderStyle(size, type) { /** * Helper method to return old dot default avatar associated with login - * - * @param {String} [workspaceName] - * @returns {Object} */ -function getDefaultWorkspaceAvatarColor(workspaceName) { +function getDefaultWorkspaceAvatarColor(workspaceName: string) { const colorHash = UserUtils.hashText(workspaceName.trim(), workspaceColorOptions.length); return workspaceColorOptions[colorHash]; @@ -213,12 +190,13 @@ function getDefaultWorkspaceAvatarColor(workspaceName) { /** * Takes safe area insets and returns padding to use for a View - * - * @param {Object} insets - * @param {Number} [insetsPercentage] - Percentage of the insets to use for sides and bottom padding - * @returns {Object} */ -function getSafeAreaPadding(insets, insetsPercentage = variables.safeInsertPercentage) { +function getSafeAreaPadding(insets: EdgeInsets, insetsPercentage: number = variables.safeInsertPercentage): { + paddingTop: number, + paddingBottom: number, + paddingLeft: number, + paddingRight: number, +} { return { paddingTop: insets.top, paddingBottom: insets.bottom * insetsPercentage, @@ -229,20 +207,15 @@ function getSafeAreaPadding(insets, insetsPercentage = variables.safeInsertPerce /** * Takes safe area insets and returns margin to use for a View - * - * @param {Object} insets - * @returns {Object} */ -function getSafeAreaMargins(insets) { +function getSafeAreaMargins(insets: EdgeInsets) { return {marginBottom: insets.bottom * variables.safeInsertPercentage}; } /** - * @param {Boolean} isZoomed - * @param {Boolean} isDragging - * @return {Object} + * */ -function getZoomCursorStyle(isZoomed, isDragging) { +function getZoomCursorStyle(isZoomed: boolean, isDragging: boolean) { if (!isZoomed) { return styles.cursorZoomIn; } @@ -251,16 +224,9 @@ function getZoomCursorStyle(isZoomed, isDragging) { } /** - * @param {Boolean} isZoomed - * @param {Number} imgWidth - * @param {Number} imgHeight - * @param {Number} zoomScale - * @param {Number} containerHeight - * @param {Number} containerWidth - * @param {Boolean} isLoading - * @returns {Object | undefined} + * */ -function getZoomSizingStyle(isZoomed, imgWidth, imgHeight, zoomScale, containerHeight, containerWidth, isLoading) { +function getZoomSizingStyle(isZoomed: boolean, imgWidth: number, imgHeight: number, zoomScale: number, containerHeight: number, containerWidth: number, isLoading: boolean) { // Hide image until finished loading to prevent showing preview with wrong dimensions if (isLoading || imgWidth === 0 || imgHeight === 0) { return undefined; @@ -311,11 +277,8 @@ function getZoomSizingStyle(isZoomed, imgWidth, imgHeight, zoomScale, containerH /** * Returns auto grow text input style - * - * @param {Number} width - * @return {Object} */ -function getWidthStyle(width) { +function getWidthStyle(width: number) { return { width, }; @@ -323,12 +286,8 @@ function getWidthStyle(width) { /** * Returns auto grow height text input style - * - * @param {Number} textInputHeight - * @param {Number} maxHeight - * @returns {Object} */ -function getAutoGrowHeightInputStyle(textInputHeight, maxHeight) { +function getAutoGrowHeightInputStyle(textInputHeight: number, maxHeight: number) { if (textInputHeight > maxHeight) { return { ...styles.pr0, @@ -347,11 +306,8 @@ function getAutoGrowHeightInputStyle(textInputHeight, maxHeight) { /** * Returns a style with backgroundColor and borderColor set to the same color - * - * @param {String} backgroundColor - * @returns {Object} */ -function getBackgroundAndBorderStyle(backgroundColor) { +function getBackgroundAndBorderStyle(backgroundColor: string) { return { backgroundColor, borderColor: backgroundColor, @@ -360,11 +316,8 @@ function getBackgroundAndBorderStyle(backgroundColor) { /** * Returns a style with the specified backgroundColor - * - * @param {String} backgroundColor - * @returns {Object} */ -function getBackgroundColorStyle(backgroundColor) { +function getBackgroundColorStyle(backgroundColor: string) { return { backgroundColor, }; @@ -372,11 +325,8 @@ function getBackgroundColorStyle(backgroundColor) { /** * Returns a style for text color - * - * @param {String} color - * @returns {Object} */ -function getTextColorStyle(color) { +function getTextColorStyle(color: string) { return { color, }; @@ -384,11 +334,8 @@ function getTextColorStyle(color) { /** * Returns a style with the specified borderColor - * - * @param {String} borderColor - * @returns {Object} */ -function getBorderColorStyle(borderColor) { +function getBorderColorStyle(borderColor: string) { return { borderColor, }; @@ -396,12 +343,8 @@ function getBorderColorStyle(borderColor) { /** * Returns the width style for the wordmark logo on the sign in page - * - * @param {String} environment - * @param {Boolean} isSmallScreenWidth - * @returns {Object} */ -function getSignInWordmarkWidthStyle(environment, isSmallScreenWidth) { +function getSignInWordmarkWidthStyle(environment: string, isSmallScreenWidth: boolean) { if (environment === CONST.ENVIRONMENT.DEV) { return isSmallScreenWidth ? {width: variables.signInLogoWidthPill} : {width: variables.signInLogoWidthLargeScreenPill}; } @@ -416,11 +359,8 @@ function getSignInWordmarkWidthStyle(environment, isSmallScreenWidth) { /** * Converts a color in hexadecimal notation into RGB notation. - * - * @param {String} hexadecimal A color in hexadecimal notation. - * @returns {Array} `undefined` if the input color is not in hexadecimal notation. Otherwise, the RGB components of the input color. */ -function hexadecimalToRGBArray(hexadecimal) { +function hexadecimalToRGBArray(hexadecimal: string) { const components = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexadecimal); if (components === null) { @@ -432,12 +372,8 @@ function hexadecimalToRGBArray(hexadecimal) { /** * Returns a background color with opacity style - * - * @param {String} backgroundColor - * @param {number} opacity - * @returns {Object} */ -function getBackgroundColorWithOpacityStyle(backgroundColor, opacity) { +function getBackgroundColorWithOpacityStyle(backgroundColor: string, opacity: number) { const result = hexadecimalToRGBArray(backgroundColor); if (result !== undefined) { return { @@ -449,14 +385,8 @@ function getBackgroundColorWithOpacityStyle(backgroundColor, opacity) { /** * Generate a style for the background color of the Badge - * - * @param {Boolean} success - * @param {Boolean} error - * @param {boolean} [isPressed=false] - * @param {boolean} [isAdHoc=false] - * @return {Object} */ -function getBadgeColorStyle(success, error, isPressed = false, isAdHoc = false) { +function getBadgeColorStyle(success: boolean, error: boolean, isPressed: boolean = false, isAdHoc: boolean = false) { if (success) { if (isAdHoc) { return isPressed ? styles.badgeAdHocSuccessPressed : styles.badgeAdHocSuccess; @@ -471,12 +401,8 @@ function getBadgeColorStyle(success, error, isPressed = false, isAdHoc = false) /** * Generate a style for the background color of the button, based on its current state. - * - * @param {String} [buttonState] - One of {'default', 'hovered', 'pressed'} - * @param {Boolean} isMenuItem - whether this button is apart of a list - * @returns {Object} */ -function getButtonBackgroundColorStyle(buttonState = CONST.BUTTON_STATES.DEFAULT, isMenuItem = false) { +function getButtonBackgroundColorStyle(buttonState: string = CONST.BUTTON_STATES.DEFAULT, isMenuItem: boolean = false) { switch (buttonState) { case CONST.BUTTON_STATES.PRESSED: return {backgroundColor: themeColors.buttonPressedBG}; @@ -491,12 +417,8 @@ function getButtonBackgroundColorStyle(buttonState = CONST.BUTTON_STATES.DEFAULT /** * Generate fill color of an icon based on its state. - * - * @param {String} [buttonState] - One of {'default', 'hovered', 'pressed'} - * @param {Boolean} isMenuIcon - whether this icon is apart of a list - * @returns {Object} */ -function getIconFillColor(buttonState = CONST.BUTTON_STATES.DEFAULT, isMenuIcon = false) { +function getIconFillColor(buttonState: string = CONST.BUTTON_STATES.DEFAULT, isMenuIcon: boolean = false) { switch (buttonState) { case CONST.BUTTON_STATES.ACTIVE: case CONST.BUTTON_STATES.PRESSED: @@ -514,11 +436,9 @@ function getIconFillColor(buttonState = CONST.BUTTON_STATES.DEFAULT, isMenuIcon } /** - * @param {Animated.Value} rotate - * @param {Animated.Value} backgroundColor - * @returns {Object} + * */ -function getAnimatedFABStyle(rotate, backgroundColor) { +function getAnimatedFABStyle(rotate: Animated.Value, backgroundColor: Animated.Value) { return { transform: [{rotate}], backgroundColor, @@ -526,11 +446,9 @@ function getAnimatedFABStyle(rotate, backgroundColor) { } /** - * @param {Number} width - * @param {Number | null} height - * @returns {Object} + * */ -function getWidthAndHeightStyle(width, height = null) { +function getWidthAndHeightStyle(width: number, height: number | null = null) { return { width, height: height != null ? height : width, @@ -538,8 +456,7 @@ function getWidthAndHeightStyle(width, height = null) { } /** - * @param {Object} params - * @returns {Object} + * */ function getModalPaddingStyles({ shouldAddBottomSafeAreaMargin, @@ -555,6 +472,20 @@ function getModalPaddingStyles({ modalContainerStylePaddingTop, modalContainerStylePaddingBottom, insets, +}: { + shouldAddBottomSafeAreaMargin: boolean, + shouldAddTopSafeAreaMargin: boolean, + shouldAddBottomSafeAreaPadding: boolean, + shouldAddTopSafeAreaPadding: boolean, + safeAreaPaddingTop: number, + safeAreaPaddingBottom: number, + safeAreaPaddingLeft: number, + safeAreaPaddingRight: number, + modalContainerStyleMarginTop: number, + modalContainerStyleMarginBottom: number, + modalContainerStylePaddingTop: number, + modalContainerStylePaddingBottom: number, + insets: EdgeInsets, }) { // use fallback value for safeAreaPaddingBottom to keep padding bottom consistent with padding top. // More info: issue #17376 @@ -571,11 +502,8 @@ function getModalPaddingStyles({ /** * Takes fontStyle and fontWeight and returns the correct fontFamily - * - * @param {Object} params - * @returns {String} */ -function getFontFamilyMonospace({fontStyle, fontWeight}) { +function getFontFamilyMonospace({fontStyle, fontWeight}: {fontStyle: string, fontWeight: string}): string { const italic = fontStyle === 'italic' && fontFamily.MONOSPACE_ITALIC; const bold = fontWeight === 'bold' && fontFamily.MONOSPACE_BOLD; const italicBold = italic && bold && fontFamily.MONOSPACE_BOLD_ITALIC; @@ -585,11 +513,8 @@ function getFontFamilyMonospace({fontStyle, fontWeight}) { /** * Gives the width for Emoji picker Widget - * - * @param {Boolean} isSmallScreenWidth - * @returns {String} */ -function getEmojiPickerStyle(isSmallScreenWidth) { +function getEmojiPickerStyle(isSmallScreenWidth: boolean) { if (isSmallScreenWidth) { return { width: CONST.SMALL_EMOJI_PICKER_SIZE.WIDTH, @@ -603,8 +528,6 @@ function getEmojiPickerStyle(isSmallScreenWidth) { /** * Get the random promo color and image for Login page - * - * @return {Object} */ function getLoginPagePromoStyle() { const promos = [ @@ -655,11 +578,8 @@ function getReportActionItemStyle(isHovered = false, isLoading = false) { /** * Generate the wrapper styles for the mini ReportActionContextMenu. - * - * @param {Boolean} isReportActionItemGrouped - * @returns {Object} */ -function getMiniReportActionContextMenuWrapperStyle(isReportActionItemGrouped) { +function getMiniReportActionContextMenuWrapperStyle(isReportActionItemGrouped: boolean) { return { ...(isReportActionItemGrouped ? positioning.tn8 : positioning.tn4), ...positioning.r4, @@ -670,10 +590,9 @@ function getMiniReportActionContextMenuWrapperStyle(isReportActionItemGrouped) { } /** - * @param {Boolean} isSmallScreenWidth - * @returns {Object} + * */ -function getPaymentMethodMenuWidth(isSmallScreenWidth) { +function getPaymentMethodMenuWidth(isSmallScreenWidth: boolean) { const margin = 20; return {width: !isSmallScreenWidth ? variables.sideBarWidth - margin * 2 : undefined}; } @@ -686,7 +605,7 @@ function getPaymentMethodMenuWidth(isSmallScreenWidth) { * @param {number} opacity The desired opacity of the foreground color. * @returns {Array} The RGB components of the RGBA color converted to RGB. */ -function convertRGBAToRGB(foregroundRGB, backgroundRGB, opacity) { +function convertRGBAToRGB(foregroundRGB: any[], backgroundRGB: any[], opacity: number) { const [foregroundRed, foregroundGreen, foregroundBlue] = foregroundRGB; const [backgroundRed, backgroundGreen, backgroundBlue] = backgroundRGB; @@ -695,36 +614,24 @@ function convertRGBAToRGB(foregroundRGB, backgroundRGB, opacity) { /** * Converts three unit values to the three components of a color in RGB notation. - * - * @param {number} red A unit value representing the first component of a color in RGB notation. - * @param {number} green A unit value representing the second component of a color in RGB notation. - * @param {number} blue A unit value representing the third component of a color in RGB notation. - * @returns {Array} An array with the three components of a color in RGB notation. */ -function convertUnitValuesToRGB(red, green, blue) { +function convertUnitValuesToRGB(red: number, green: number, blue: number): number[] { return [Math.floor(red * 255), Math.floor(green * 255), Math.floor(blue * 255)]; } /** * Converts the three components of a color in RGB notation to three unit values. - * - * @param {number} red The first component of a color in RGB notation. - * @param {number} green The second component of a color in RGB notation. - * @param {number} blue The third component of a color in RGB notation. - * @returns {Array} An array with three unit values representing the components of a color in RGB notation. */ -function convertRGBToUnitValues(red, green, blue) { +function convertRGBToUnitValues(red: number, green: number, blue: number): number[] { return [red / 255, green / 255, blue / 255]; } /** * Matches an RGBA or RGB color value and extracts the color components. - * - * @param {string} color - The RGBA or RGB color value to match and extract components from. - * @returns {Array} An array containing the extracted color components [red, green, blue, alpha]. + * * Returns null if the input string does not match the pattern. */ -function extractValuesFromRGB(color) { +function extractValuesFromRGB(color: string): number[] | null { const rgbaPattern = /rgba?\((?[.\d]+)[, ]+(?[.\d]+)[, ]+(?[.\d]+)(?:\s?[,/]\s?(?[.\d]+%?))?\)$/i; const matchRGBA = color.match(rgbaPattern); if (matchRGBA) { @@ -738,11 +645,8 @@ function extractValuesFromRGB(color) { /** * Determines the theme color for a modal based on the app's background color, * the modal's backdrop, and the backdrop's opacity. - * - * @param {String} bgColor - theme background color - * @returns {String} The theme color as an RGB value. */ -function getThemeBackgroundColor(bgColor = themeColors.appBG) { +function getThemeBackgroundColor(bgColor: string = themeColors.appBG): string { const backdropOpacity = variables.modalFullscreenBackdropOpacity; const [backgroundRed, backgroundGreen, backgroundBlue] = extractValuesFromRGB(bgColor) || hexadecimalToRGBArray(bgColor); @@ -760,7 +664,7 @@ function getThemeBackgroundColor(bgColor = themeColors.appBG) { * @param {Object|Object[]} styleParam * @returns {Object[]} */ -function parseStyleAsArray(styleParam) { +function parseStyleAsArray(styleParam: ViewStyle | TextStyle | CSSProperties | Array) { return _.isArray(styleParam) ? styleParam : [styleParam]; } From d7c3568e0dd856b9f27a35b356f6befdcc31c02e Mon Sep 17 00:00:00 2001 From: kadiealexander <59587260+kadiealexander@users.noreply.github.com> Date: Tue, 29 Aug 2023 12:25:41 +1200 Subject: [PATCH 016/275] Add instructions for Distance and Scan expenses --- docs/articles/request-money/Request-and-Split-Bills.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/articles/request-money/Request-and-Split-Bills.md b/docs/articles/request-money/Request-and-Split-Bills.md index a2c63cf6f8f7..550b749f486c 100644 --- a/docs/articles/request-money/Request-and-Split-Bills.md +++ b/docs/articles/request-money/Request-and-Split-Bills.md @@ -16,7 +16,10 @@ These two features ensure you can live in the moment and settle up afterward. # How to Request Money - Select the Green **+** button and choose **Request Money** -- Enter the amount **$** they owe and click **Next** +- Select the relevant option: + - **Manual:** Input the amount and description manually + - **Scan:** Take a photo of the receipt to have the merchant/amount autofilled, and input description manually + - **Distance:** Input the address of your start/end points for your trip to calculate mileage - Search for the user or enter their email! - Enter a reason for the request (optional) - Click **Request!** From 1b09b2555faa691773189272c86c2fff6ba8b919 Mon Sep 17 00:00:00 2001 From: Bartosz Grajdek Date: Tue, 29 Aug 2023 10:40:00 +0200 Subject: [PATCH 017/275] [TS migration] Migrate 'NumberFormatUtils.js' lib to TypeScript --- src/libs/NumberFormatUtils.js | 9 --------- src/libs/NumberFormatUtils.ts | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) delete mode 100644 src/libs/NumberFormatUtils.js create mode 100644 src/libs/NumberFormatUtils.ts diff --git a/src/libs/NumberFormatUtils.js b/src/libs/NumberFormatUtils.js deleted file mode 100644 index 48e4d3dadbb6..000000000000 --- a/src/libs/NumberFormatUtils.js +++ /dev/null @@ -1,9 +0,0 @@ -function format(locale, number, options) { - return new Intl.NumberFormat(locale, options).format(number); -} - -function formatToParts(locale, number, options) { - return new Intl.NumberFormat(locale, options).formatToParts(number); -} - -export {format, formatToParts}; diff --git a/src/libs/NumberFormatUtils.ts b/src/libs/NumberFormatUtils.ts new file mode 100644 index 000000000000..8d6b1e587af5 --- /dev/null +++ b/src/libs/NumberFormatUtils.ts @@ -0,0 +1,9 @@ +function format(locale: string, number: number, options?: Intl.NumberFormatOptions) { + return new Intl.NumberFormat(locale, options).format(number); +} + +function formatToParts(locale: string, number: number, options?: Intl.NumberFormatOptions) { + return new Intl.NumberFormat(locale, options).formatToParts(number); +} + +export {format, formatToParts}; From b8a58aeba139487b1ae6c4891b77eaf1daa6f569 Mon Sep 17 00:00:00 2001 From: tienifr Date: Tue, 29 Aug 2023 16:11:28 +0700 Subject: [PATCH 018/275] fix: update use single execution logic --- src/hooks/useSingleExecution.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/useSingleExecution.js b/src/hooks/useSingleExecution.js index 5f5acebe744f..6c28087e933c 100644 --- a/src/hooks/useSingleExecution.js +++ b/src/hooks/useSingleExecution.js @@ -20,6 +20,7 @@ export default function useSingleExecution() { } setIsExecuting(true); + isExecutingRef.current = true; const execution = action(params); InteractionManager.runAfterInteractions(() => { From 21514c2068871d74a9f8025307a05e8adb13bbf2 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Tue, 29 Aug 2023 11:35:25 +0200 Subject: [PATCH 019/275] eliminate errors, create random integer method --- src/libs/NumberUtils.js | 16 +- src/styles/StyleUtils.ts | 446 ++++++++++++++++----------------------- 2 files changed, 197 insertions(+), 265 deletions(-) diff --git a/src/libs/NumberUtils.js b/src/libs/NumberUtils.js index f8d110bd0b00..376fc90c3df6 100644 --- a/src/libs/NumberUtils.js +++ b/src/libs/NumberUtils.js @@ -47,4 +47,18 @@ function generateHexadecimalValue(num) { .toUpperCase(); } -export {rand64, generateHexadecimalValue}; +/** + * Generates a random integer between a and b + * It's and equivalent of _.random(a, b) + * + * @param {number} a + * @param {number} b + * @returns {number} random integer between a and b + */ +function generateRandomInt(a, b) { + const lower = Math.ceil(Math.min(a, b)); + const upper = Math.floor(Math.max(a, b)); + return Math.floor(lower + Math.random() * (upper - lower + 1)); +} + +export {rand64, generateHexadecimalValue, generateRandomInt}; diff --git a/src/styles/StyleUtils.ts b/src/styles/StyleUtils.ts index 1628befe283e..2bed4e380c20 100644 --- a/src/styles/StyleUtils.ts +++ b/src/styles/StyleUtils.ts @@ -1,4 +1,7 @@ -import _ from 'underscore'; +import {EdgeInsets} from 'react-native-safe-area-context'; +import {Animated, PressableStateCallbackType, TextStyle, ViewStyle} from 'react-native'; +import {CSSProperties} from 'react'; +import {ValueOf} from 'type-fest'; import CONST from '../CONST'; import fontFamily from './fontFamily'; import themeColors from './themes/default'; @@ -10,12 +13,9 @@ import spacing from './utilities/spacing'; import * as UserUtils from '../libs/UserUtils'; import * as Browser from '../libs/Browser'; import cursor from './utilities/cursor'; -import {EdgeInsets} from 'react-native-safe-area-context' -import { Animated, TextStyle, ViewStyle } from 'react-native'; -import { CSSProperties } from 'react'; -import { ValueOf } from 'type-fest'; +import * as NumberUtils from '../libs/NumberUtils'; -const workspaceColorOptions = [ +const workspaceColorOptions: Array<{backgroundColor: ValueOf; fill: ValueOf}> = [ {backgroundColor: colors.blue200, fill: colors.blue700}, {backgroundColor: colors.blue400, fill: colors.blue800}, {backgroundColor: colors.blue700, fill: colors.blue200}, @@ -34,9 +34,9 @@ const workspaceColorOptions = [ {backgroundColor: colors.ice200, fill: colors.ice700}, {backgroundColor: colors.ice400, fill: colors.ice800}, {backgroundColor: colors.ice700, fill: colors.ice200}, -] satisfies Array<{ backgroundColor: ValueOf, fill: ValueOf }> +]; -const avatarBorderSizes = { +const avatarBorderSizes: Partial, number>> = { [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: variables.componentBorderRadiusSmall, [CONST.AVATAR_SIZE.MID_SUBSCRIPT]: variables.componentBorderRadiusSmall, [CONST.AVATAR_SIZE.SUBSCRIPT]: variables.componentBorderRadiusMedium, @@ -48,9 +48,9 @@ const avatarBorderSizes = { [CONST.AVATAR_SIZE.LARGE]: variables.componentBorderRadiusLarge, [CONST.AVATAR_SIZE.LARGE_BORDERED]: variables.componentBorderRadiusRounded, [CONST.AVATAR_SIZE.SMALL_NORMAL]: variables.componentBorderRadiusMedium, -} satisfies Partial, number>>; +}; -const avatarSizes = { +const avatarSizes: Record, number> = { [CONST.AVATAR_SIZE.DEFAULT]: variables.avatarSizeNormal, [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: variables.avatarSizeSmallSubscript, [CONST.AVATAR_SIZE.MID_SUBSCRIPT]: variables.avatarSizeMidSubscript, @@ -63,13 +63,37 @@ const avatarSizes = { [CONST.AVATAR_SIZE.HEADER]: variables.avatarSizeHeader, [CONST.AVATAR_SIZE.MENTION_ICON]: variables.avatarSizeMentionIcon, [CONST.AVATAR_SIZE.SMALL_NORMAL]: variables.avatarSizeSmallNormal, -} satisfies Partial, number>>; +}; -const emptyAvatarStyles = { +const emptyAvatarStyles: Partial, ViewStyle | CSSProperties>> = { [CONST.AVATAR_SIZE.SMALL]: styles.emptyAvatarSmall, [CONST.AVATAR_SIZE.MEDIUM]: styles.emptyAvatarMedium, [CONST.AVATAR_SIZE.LARGE]: styles.emptyAvatarLarge, -} satisfies Partial, ViewStyle | CSSProperties>>; +}; + +const avatarFontSizes: Partial, number>> = { + [CONST.AVATAR_SIZE.DEFAULT]: variables.fontSizeNormal, + [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: variables.fontSizeExtraSmall, + [CONST.AVATAR_SIZE.MID_SUBSCRIPT]: variables.fontSizeExtraSmall, + [CONST.AVATAR_SIZE.SUBSCRIPT]: variables.fontSizeExtraSmall, + [CONST.AVATAR_SIZE.SMALL]: variables.fontSizeSmall, + [CONST.AVATAR_SIZE.SMALLER]: variables.fontSizeExtraSmall, + [CONST.AVATAR_SIZE.LARGE]: variables.fontSizeXLarge, + [CONST.AVATAR_SIZE.MEDIUM]: variables.fontSizeMedium, + [CONST.AVATAR_SIZE.LARGE_BORDERED]: variables.fontSizeXLarge, +}; + +const avatarBorderWidths: Partial, number>> = { + [CONST.AVATAR_SIZE.DEFAULT]: 3, + [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: 1, + [CONST.AVATAR_SIZE.MID_SUBSCRIPT]: 2, + [CONST.AVATAR_SIZE.SUBSCRIPT]: 2, + [CONST.AVATAR_SIZE.SMALL]: 2, + [CONST.AVATAR_SIZE.SMALLER]: 2, + [CONST.AVATAR_SIZE.LARGE]: 4, + [CONST.AVATAR_SIZE.MEDIUM]: 3, + [CONST.AVATAR_SIZE.LARGE_BORDERED]: 4, +}; /** * Return the style size from an avatar size constant @@ -81,21 +105,21 @@ function getAvatarSize(size: ValueOf): number { /** * Return the height of magic code input container */ -function getHeightOfMagicCodeInput(): { height: number } { +function getHeightOfMagicCodeInput(): ViewStyle | CSSProperties { return {height: styles.magicCodeInputContainer.minHeight - styles.textInputContainer.borderBottomWidth}; } /** * Return the style from an empty avatar size constant */ -function getEmptyAvatarStyle(size: string) { +function getEmptyAvatarStyle(size: ValueOf): ViewStyle | CSSProperties | undefined { return emptyAvatarStyles[size]; } /** * Return the width style from an avatar size constant */ -function getAvatarWidthStyle(size: string): {width: number} { +function getAvatarWidthStyle(size: ValueOf): ViewStyle | CSSProperties { const avatarSize = getAvatarSize(size); return { width: avatarSize, @@ -105,7 +129,7 @@ function getAvatarWidthStyle(size: string): {width: number} { /** * Return the style from an avatar size constant */ -function getAvatarStyle(size: string): {height: number, width: number, borderRadius: number, backgroundColor: string} { +function getAvatarStyle(size: ValueOf): ViewStyle | CSSProperties { const avatarSize = getAvatarSize(size); return { height: avatarSize, @@ -118,49 +142,25 @@ function getAvatarStyle(size: string): {height: number, width: number, borderRad /** * Get Font size of '+1' text on avatar overlay */ -function getAvatarExtraFontSizeStyle(size: string): { fontSize: number } { - const AVATAR_SIZES = { - [CONST.AVATAR_SIZE.DEFAULT]: variables.fontSizeNormal, - [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: variables.fontSizeExtraSmall, - [CONST.AVATAR_SIZE.MID_SUBSCRIPT]: variables.fontSizeExtraSmall, - [CONST.AVATAR_SIZE.SUBSCRIPT]: variables.fontSizeExtraSmall, - [CONST.AVATAR_SIZE.SMALL]: variables.fontSizeSmall, - [CONST.AVATAR_SIZE.SMALLER]: variables.fontSizeExtraSmall, - [CONST.AVATAR_SIZE.LARGE]: variables.fontSizeXLarge, - [CONST.AVATAR_SIZE.MEDIUM]: variables.fontSizeMedium, - [CONST.AVATAR_SIZE.LARGE_BORDERED]: variables.fontSizeXLarge, - }; +function getAvatarExtraFontSizeStyle(size: ValueOf): TextStyle | CSSProperties { return { - fontSize: AVATAR_SIZES[size], + fontSize: avatarFontSizes[size], }; } /** * Get Bordersize of Avatar based on avatar size */ -function getAvatarBorderWidth(size: string): {borderWidth: number} { - const AVATAR_SIZES = { - [CONST.AVATAR_SIZE.DEFAULT]: 3, - [CONST.AVATAR_SIZE.SMALL_SUBSCRIPT]: 1, - [CONST.AVATAR_SIZE.MID_SUBSCRIPT]: 2, - [CONST.AVATAR_SIZE.SUBSCRIPT]: 2, - [CONST.AVATAR_SIZE.SMALL]: 2, - [CONST.AVATAR_SIZE.SMALLER]: 2, - [CONST.AVATAR_SIZE.LARGE]: 4, - [CONST.AVATAR_SIZE.MEDIUM]: 3, - [CONST.AVATAR_SIZE.LARGE_BORDERED]: 4, - }; +function getAvatarBorderWidth(size: ValueOf): ViewStyle | CSSProperties { return { - borderWidth: AVATAR_SIZES[size], + borderWidth: avatarBorderWidths[size], }; } -// satisfies Partial, number>>; -type Test = ValueOf /** * Return the border radius for an avatar */ -function getAvatarBorderRadius(size: ValueOf, type: string): {borderRadius: number} { +function getAvatarBorderRadius(size: ValueOf, type: string): ViewStyle | CSSProperties { if (type === CONST.ICON_TYPE_WORKSPACE) { return {borderRadius: avatarBorderSizes[size]}; } @@ -172,7 +172,7 @@ function getAvatarBorderRadius(size: ValueOf, type: st /** * Return the border style for an avatar */ -function getAvatarBorderStyle(size: string, type: string): {overflow: string, borderRadius: number} { +function getAvatarBorderStyle(size: ValueOf, type: string): ViewStyle | CSSProperties { return { overflow: 'hidden', ...getAvatarBorderRadius(size, type), @@ -182,7 +182,7 @@ function getAvatarBorderStyle(size: string, type: string): {overflow: string, bo /** * Helper method to return old dot default avatar associated with login */ -function getDefaultWorkspaceAvatarColor(workspaceName: string) { +function getDefaultWorkspaceAvatarColor(workspaceName: string): ViewStyle | CSSProperties { const colorHash = UserUtils.hashText(workspaceName.trim(), workspaceColorOptions.length); return workspaceColorOptions[colorHash]; @@ -191,12 +191,7 @@ function getDefaultWorkspaceAvatarColor(workspaceName: string) { /** * Takes safe area insets and returns padding to use for a View */ -function getSafeAreaPadding(insets: EdgeInsets, insetsPercentage: number = variables.safeInsertPercentage): { - paddingTop: number, - paddingBottom: number, - paddingLeft: number, - paddingRight: number, -} { +function getSafeAreaPadding(insets: EdgeInsets, insetsPercentage: number = variables.safeInsertPercentage): ViewStyle | CSSProperties { return { paddingTop: insets.top, paddingBottom: insets.bottom * insetsPercentage, @@ -208,14 +203,14 @@ function getSafeAreaPadding(insets: EdgeInsets, insetsPercentage: number = varia /** * Takes safe area insets and returns margin to use for a View */ -function getSafeAreaMargins(insets: EdgeInsets) { +function getSafeAreaMargins(insets: EdgeInsets): ViewStyle | CSSProperties { return {marginBottom: insets.bottom * variables.safeInsertPercentage}; } /** - * + * */ -function getZoomCursorStyle(isZoomed: boolean, isDragging: boolean) { +function getZoomCursorStyle(isZoomed: boolean, isDragging: boolean): ViewStyle | CSSProperties { if (!isZoomed) { return styles.cursorZoomIn; } @@ -224,9 +219,17 @@ function getZoomCursorStyle(isZoomed: boolean, isDragging: boolean) { } /** - * + * */ -function getZoomSizingStyle(isZoomed: boolean, imgWidth: number, imgHeight: number, zoomScale: number, containerHeight: number, containerWidth: number, isLoading: boolean) { +function getZoomSizingStyle( + isZoomed: boolean, + imgWidth: number, + imgHeight: number, + zoomScale: number, + containerHeight: number, + containerWidth: number, + isLoading: boolean, +): ViewStyle | CSSProperties | undefined { // Hide image until finished loading to prevent showing preview with wrong dimensions if (isLoading || imgWidth === 0 || imgHeight === 0) { return undefined; @@ -278,7 +281,7 @@ function getZoomSizingStyle(isZoomed: boolean, imgWidth: number, imgHeight: numb /** * Returns auto grow text input style */ -function getWidthStyle(width: number) { +function getWidthStyle(width: number): ViewStyle | CSSProperties { return { width, }; @@ -287,7 +290,7 @@ function getWidthStyle(width: number) { /** * Returns auto grow height text input style */ -function getAutoGrowHeightInputStyle(textInputHeight: number, maxHeight: number) { +function getAutoGrowHeightInputStyle(textInputHeight: number, maxHeight: number): ViewStyle | CSSProperties { if (textInputHeight > maxHeight) { return { ...styles.pr0, @@ -307,7 +310,7 @@ function getAutoGrowHeightInputStyle(textInputHeight: number, maxHeight: number) /** * Returns a style with backgroundColor and borderColor set to the same color */ -function getBackgroundAndBorderStyle(backgroundColor: string) { +function getBackgroundAndBorderStyle(backgroundColor: string): ViewStyle | CSSProperties { return { backgroundColor, borderColor: backgroundColor, @@ -317,7 +320,7 @@ function getBackgroundAndBorderStyle(backgroundColor: string) { /** * Returns a style with the specified backgroundColor */ -function getBackgroundColorStyle(backgroundColor: string) { +function getBackgroundColorStyle(backgroundColor: string): ViewStyle | CSSProperties { return { backgroundColor, }; @@ -326,7 +329,7 @@ function getBackgroundColorStyle(backgroundColor: string) { /** * Returns a style for text color */ -function getTextColorStyle(color: string) { +function getTextColorStyle(color: string): TextStyle { return { color, }; @@ -335,7 +338,7 @@ function getTextColorStyle(color: string) { /** * Returns a style with the specified borderColor */ -function getBorderColorStyle(borderColor: string) { +function getBorderColorStyle(borderColor: string): ViewStyle | CSSProperties { return { borderColor, }; @@ -344,7 +347,7 @@ function getBorderColorStyle(borderColor: string) { /** * Returns the width style for the wordmark logo on the sign in page */ -function getSignInWordmarkWidthStyle(environment: string, isSmallScreenWidth: boolean) { +function getSignInWordmarkWidthStyle(environment: string, isSmallScreenWidth: boolean): ViewStyle | CSSProperties { if (environment === CONST.ENVIRONMENT.DEV) { return isSmallScreenWidth ? {width: variables.signInLogoWidthPill} : {width: variables.signInLogoWidthLargeScreenPill}; } @@ -360,20 +363,20 @@ function getSignInWordmarkWidthStyle(environment: string, isSmallScreenWidth: bo /** * Converts a color in hexadecimal notation into RGB notation. */ -function hexadecimalToRGBArray(hexadecimal: string) { +function hexadecimalToRGBArray(hexadecimal: string): number[] | undefined { const components = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexadecimal); if (components === null) { return undefined; } - return _.map(components.slice(1), (component) => parseInt(component, 16)); + return components.slice(1).map((component) => parseInt(component, 16)); } /** * Returns a background color with opacity style */ -function getBackgroundColorWithOpacityStyle(backgroundColor: string, opacity: number) { +function getBackgroundColorWithOpacityStyle(backgroundColor: string, opacity: number): ViewStyle | CSSProperties { const result = hexadecimalToRGBArray(backgroundColor); if (result !== undefined) { return { @@ -386,7 +389,7 @@ function getBackgroundColorWithOpacityStyle(backgroundColor: string, opacity: nu /** * Generate a style for the background color of the Badge */ -function getBadgeColorStyle(success: boolean, error: boolean, isPressed: boolean = false, isAdHoc: boolean = false) { +function getBadgeColorStyle(success: boolean, error: boolean, isPressed = false, isAdHoc = false): ViewStyle | CSSProperties { if (success) { if (isAdHoc) { return isPressed ? styles.badgeAdHocSuccessPressed : styles.badgeAdHocSuccess; @@ -402,7 +405,7 @@ function getBadgeColorStyle(success: boolean, error: boolean, isPressed: boolean /** * Generate a style for the background color of the button, based on its current state. */ -function getButtonBackgroundColorStyle(buttonState: string = CONST.BUTTON_STATES.DEFAULT, isMenuItem: boolean = false) { +function getButtonBackgroundColorStyle(buttonState: string = CONST.BUTTON_STATES.DEFAULT, isMenuItem = false): ViewStyle | CSSProperties { switch (buttonState) { case CONST.BUTTON_STATES.PRESSED: return {backgroundColor: themeColors.buttonPressedBG}; @@ -418,7 +421,7 @@ function getButtonBackgroundColorStyle(buttonState: string = CONST.BUTTON_STATES /** * Generate fill color of an icon based on its state. */ -function getIconFillColor(buttonState: string = CONST.BUTTON_STATES.DEFAULT, isMenuIcon: boolean = false) { +function getIconFillColor(buttonState: string = CONST.BUTTON_STATES.DEFAULT, isMenuIcon = false): string { switch (buttonState) { case CONST.BUTTON_STATES.ACTIVE: case CONST.BUTTON_STATES.PRESSED: @@ -436,9 +439,9 @@ function getIconFillColor(buttonState: string = CONST.BUTTON_STATES.DEFAULT, isM } /** - * + * */ -function getAnimatedFABStyle(rotate: Animated.Value, backgroundColor: Animated.Value) { +function getAnimatedFABStyle(rotate: Animated.Value, backgroundColor: Animated.Value): Animated.WithAnimatedValue { return { transform: [{rotate}], backgroundColor, @@ -446,17 +449,17 @@ function getAnimatedFABStyle(rotate: Animated.Value, backgroundColor: Animated.V } /** - * + * */ -function getWidthAndHeightStyle(width: number, height: number | null = null) { +function getWidthAndHeightStyle(width: number, height: number | null = null): ViewStyle | CSSProperties { return { width, - height: height != null ? height : width, + height: height ?? width, }; } /** - * + * */ function getModalPaddingStyles({ shouldAddBottomSafeAreaMargin, @@ -473,20 +476,20 @@ function getModalPaddingStyles({ modalContainerStylePaddingBottom, insets, }: { - shouldAddBottomSafeAreaMargin: boolean, - shouldAddTopSafeAreaMargin: boolean, - shouldAddBottomSafeAreaPadding: boolean, - shouldAddTopSafeAreaPadding: boolean, - safeAreaPaddingTop: number, - safeAreaPaddingBottom: number, - safeAreaPaddingLeft: number, - safeAreaPaddingRight: number, - modalContainerStyleMarginTop: number, - modalContainerStyleMarginBottom: number, - modalContainerStylePaddingTop: number, - modalContainerStylePaddingBottom: number, - insets: EdgeInsets, -}) { + shouldAddBottomSafeAreaMargin: boolean; + shouldAddTopSafeAreaMargin: boolean; + shouldAddBottomSafeAreaPadding: boolean; + shouldAddTopSafeAreaPadding: boolean; + safeAreaPaddingTop: number; + safeAreaPaddingBottom: number; + safeAreaPaddingLeft: number; + safeAreaPaddingRight: number; + modalContainerStyleMarginTop: number; + modalContainerStyleMarginBottom: number; + modalContainerStylePaddingTop: number; + modalContainerStylePaddingBottom: number; + insets: EdgeInsets; +}): ViewStyle | CSSProperties { // use fallback value for safeAreaPaddingBottom to keep padding bottom consistent with padding top. // More info: issue #17376 const safeAreaPaddingBottomWithFallback = insets.bottom === 0 ? modalContainerStylePaddingTop || 0 : safeAreaPaddingBottom; @@ -503,7 +506,7 @@ function getModalPaddingStyles({ /** * Takes fontStyle and fontWeight and returns the correct fontFamily */ -function getFontFamilyMonospace({fontStyle, fontWeight}: {fontStyle: string, fontWeight: string}): string { +function getFontFamilyMonospace({fontStyle, fontWeight}: TextStyle): string { const italic = fontStyle === 'italic' && fontFamily.MONOSPACE_ITALIC; const bold = fontWeight === 'bold' && fontFamily.MONOSPACE_BOLD; const italicBold = italic && bold && fontFamily.MONOSPACE_BOLD_ITALIC; @@ -514,7 +517,7 @@ function getFontFamilyMonospace({fontStyle, fontWeight}: {fontStyle: string, fon /** * Gives the width for Emoji picker Widget */ -function getEmojiPickerStyle(isSmallScreenWidth: boolean) { +function getEmojiPickerStyle(isSmallScreenWidth: boolean): ViewStyle | CSSProperties { if (isSmallScreenWidth) { return { width: CONST.SMALL_EMOJI_PICKER_SIZE.WIDTH, @@ -529,7 +532,7 @@ function getEmojiPickerStyle(isSmallScreenWidth: boolean) { /** * Get the random promo color and image for Login page */ -function getLoginPagePromoStyle() { +function getLoginPagePromoStyle(): ViewStyle | CSSProperties { const promos = [ { backgroundColor: colors.green, @@ -553,17 +556,13 @@ function getLoginPagePromoStyle() { redirectUri: `${CONST.USE_EXPENSIFY_URL}/accountants`, }, ]; - return promos[_.random(0, 4)]; + return promos[NumberUtils.generateRandomInt(0, 4)]; } /** * Generate the styles for the ReportActionItem wrapper view. - * - * @param {Boolean} [isHovered] - * @param {Boolean} [isLoading] - * @returns {Object} */ -function getReportActionItemStyle(isHovered = false, isLoading = false) { +function getReportActionItemStyle(isHovered = false, isLoading = false): ViewStyle | CSSProperties { return { display: 'flex', justifyContent: 'space-between', @@ -579,7 +578,7 @@ function getReportActionItemStyle(isHovered = false, isLoading = false) { /** * Generate the wrapper styles for the mini ReportActionContextMenu. */ -function getMiniReportActionContextMenuWrapperStyle(isReportActionItemGrouped: boolean) { +function getMiniReportActionContextMenuWrapperStyle(isReportActionItemGrouped: boolean): ViewStyle | CSSProperties { return { ...(isReportActionItemGrouped ? positioning.tn8 : positioning.tn4), ...positioning.r4, @@ -590,22 +589,17 @@ function getMiniReportActionContextMenuWrapperStyle(isReportActionItemGrouped: b } /** - * + * */ -function getPaymentMethodMenuWidth(isSmallScreenWidth: boolean) { +function getPaymentMethodMenuWidth(isSmallScreenWidth: boolean): ViewStyle | CSSProperties { const margin = 20; return {width: !isSmallScreenWidth ? variables.sideBarWidth - margin * 2 : undefined}; } /** * Converts a color in RGBA notation to an equivalent color in RGB notation. - * - * @param {Array} foregroundRGB The three components of the foreground color in RGB notation. - * @param {Array} backgroundRGB The three components of the background color in RGB notation. - * @param {number} opacity The desired opacity of the foreground color. - * @returns {Array} The RGB components of the RGBA color converted to RGB. */ -function convertRGBAToRGB(foregroundRGB: any[], backgroundRGB: any[], opacity: number) { +function convertRGBAToRGB(foregroundRGB: number[], backgroundRGB: number[], opacity: number): number[] { const [foregroundRed, foregroundGreen, foregroundBlue] = foregroundRGB; const [backgroundRed, backgroundGreen, backgroundBlue] = backgroundRGB; @@ -628,7 +622,7 @@ function convertRGBToUnitValues(red: number, green: number, blue: number): numbe /** * Matches an RGBA or RGB color value and extracts the color components. - * + * * Returns null if the input string does not match the pattern. */ function extractValuesFromRGB(color: string): number[] | null { @@ -649,44 +643,47 @@ function extractValuesFromRGB(color: string): number[] | null { function getThemeBackgroundColor(bgColor: string = themeColors.appBG): string { const backdropOpacity = variables.modalFullscreenBackdropOpacity; - const [backgroundRed, backgroundGreen, backgroundBlue] = extractValuesFromRGB(bgColor) || hexadecimalToRGBArray(bgColor); - const [backdropRed, backdropGreen, backdropBlue] = hexadecimalToRGBArray(themeColors.modalBackdrop); + const [backgroundRed, backgroundGreen, backgroundBlue] = extractValuesFromRGB(bgColor) ?? hexadecimalToRGBArray(bgColor) ?? []; + const [backdropRed, backdropGreen, backdropBlue] = hexadecimalToRGBArray(themeColors.modalBackdrop) ?? []; const normalizedBackdropRGB = convertRGBToUnitValues(backdropRed, backdropGreen, backdropBlue); const normalizedBackgroundRGB = convertRGBToUnitValues(backgroundRed, backgroundGreen, backgroundBlue); - const themeRGBNormalized = convertRGBAToRGB(normalizedBackdropRGB, normalizedBackgroundRGB, backdropOpacity); - const themeRGB = convertUnitValuesToRGB(...themeRGBNormalized); + // const themeRGBNormalized = convertRGBAToRGB(normalizedBackdropRGB, normalizedBackgroundRGB, backdropOpacity); + // const themeRGB = convertUnitValuesToRGB(...themeRGBNormalized); + const [red, green, blue] = convertRGBAToRGB(normalizedBackdropRGB, normalizedBackgroundRGB, backdropOpacity); + const themeRGB = convertUnitValuesToRGB(red, green, blue); return `rgb(${themeRGB.join(', ')})`; } /** * Parse styleParam and return Styles array - * @param {Object|Object[]} styleParam - * @returns {Object[]} + * @param styleParam + * @returns */ -function parseStyleAsArray(styleParam: ViewStyle | TextStyle | CSSProperties | Array) { - return _.isArray(styleParam) ? styleParam : [styleParam]; +function parseStyleAsArray(styleParam: ViewStyle | CSSProperties | Array): Array { + return Array.isArray(styleParam) ? styleParam : [styleParam]; } /** * Parse style function and return Styles object - * @param {Object|Object[]|Function} style - * @param {Object} state - * @returns {Object[]} - */ -function parseStyleFromFunction(style, state) { - const functionAppliedStyle = _.isFunction(style) ? style(state) : style; + * @param style + * @param state + * @returns + */ +function parseStyleFromFunction( + style: ViewStyle | CSSProperties | ((state: PressableStateCallbackType) => ViewStyle | CSSProperties), + state: PressableStateCallbackType, +): Array { + const functionAppliedStyle = typeof style === 'function' ? style(state) : style; return parseStyleAsArray(functionAppliedStyle); } /** * Receives any number of object or array style objects and returns them all as an array - * @param {Object|Object[]} allStyles - * @return {Object[]} */ -function combineStyles(...allStyles) { - let finalStyles = []; - _.each(allStyles, (style) => { +function combineStyles(...allStyles: Array>) { + let finalStyles: Array> = []; + allStyles.forEach((style) => { finalStyles = finalStyles.concat(parseStyleAsArray(style)); }); return finalStyles; @@ -694,10 +691,8 @@ function combineStyles(...allStyles) { /** * Get variable padding-left as style - * @param {Number} paddingLeft - * @returns {Object} */ -function getPaddingLeft(paddingLeft) { +function getPaddingLeft(paddingLeft: number): {paddingLeft: number} { return { paddingLeft, }; @@ -705,22 +700,16 @@ function getPaddingLeft(paddingLeft) { /** * Checks to see if the iOS device has safe areas or not - * - * @param {Number} windowWidth - * @param {Number} windowHeight - * @returns {Boolean} */ -function hasSafeAreas(windowWidth, windowHeight) { +function hasSafeAreas(windowWidth: number, windowHeight: number): boolean { const heightsIphonesWithNotches = [812, 896, 844, 926]; - return _.contains(heightsIphonesWithNotches, windowHeight) || _.contains(heightsIphonesWithNotches, windowWidth); + return heightsIphonesWithNotches.includes(windowHeight) || heightsIphonesWithNotches.includes(windowWidth); } /** * Get height as style - * @param {Number} height - * @returns {Object} */ -function getHeight(height) { +function getHeight(height: number): ViewStyle | CSSProperties { return { height, }; @@ -728,10 +717,8 @@ function getHeight(height) { /** * Get minimum height as style - * @param {Number} minHeight - * @returns {Object} */ -function getMinimumHeight(minHeight) { +function getMinimumHeight(minHeight: number): ViewStyle | CSSProperties { return { minHeight, }; @@ -739,10 +726,8 @@ function getMinimumHeight(minHeight) { /** * Get maximum width as style - * @param {Number} maxWidth - * @returns {Object} */ -function getMaximumWidth(maxWidth) { +function getMaximumWidth(maxWidth: number): ViewStyle | CSSProperties { return { maxWidth, }; @@ -750,11 +735,8 @@ function getMaximumWidth(maxWidth) { /** * Return style for opacity animation. - * - * @param {Animated.Value} fadeAnimation - * @returns {Object} */ -function fade(fadeAnimation) { +function fade(fadeAnimation: Animated.Value): Animated.WithAnimatedValue { return { opacity: fadeAnimation, }; @@ -762,11 +744,8 @@ function fade(fadeAnimation) { /** * Return width for keyboard shortcuts modal. - * - * @param {Boolean} isSmallScreenWidth - * @returns {Object} */ -function getKeyboardShortcutsModalWidth(isSmallScreenWidth) { +function getKeyboardShortcutsModalWidth(isSmallScreenWidth: boolean): ViewStyle | CSSProperties { if (isSmallScreenWidth) { return {maxWidth: '100%'}; } @@ -774,14 +753,24 @@ function getKeyboardShortcutsModalWidth(isSmallScreenWidth) { } /** - * @param {Object} params - * @param {Boolean} params.isHovered - * @param {Boolean} params.isPressed - * @param {Boolean} params.isInReportAction - * @param {Boolean} params.shouldUseCardBackground - * @returns {Object} + * @param params + * @param params.isHovered + * @param params.isPressed + * @param params.isInReportAction + * @param params.shouldUseCardBackground + * @returns */ -function getHorizontalStackedAvatarBorderStyle({isHovered, isPressed, isInReportAction = false, shouldUseCardBackground = false}) { +function getHorizontalStackedAvatarBorderStyle({ + isHovered, + isPressed, + isInReportAction = false, + shouldUseCardBackground = false, +}: { + isHovered: boolean; + isPressed: boolean; + isInReportAction: boolean; + shouldUseCardBackground: boolean; +}): ViewStyle | CSSProperties { let borderColor = shouldUseCardBackground ? themeColors.cardBG : themeColors.appBG; if (isHovered) { @@ -797,13 +786,8 @@ function getHorizontalStackedAvatarBorderStyle({isHovered, isPressed, isInReport /** * Get computed avatar styles based on position and border size - * @param {Number} index - * @param {Number} overlapSize - * @param {Number} borderWidth - * @param {Number} borderRadius - * @returns {Object} */ -function getHorizontalStackedAvatarStyle(index, overlapSize) { +function getHorizontalStackedAvatarStyle(index: number, overlapSize: number): ViewStyle | CSSProperties { return { marginLeft: index > 0 ? -overlapSize : 0, zIndex: index + 2, @@ -812,11 +796,8 @@ function getHorizontalStackedAvatarStyle(index, overlapSize) { /** * Get computed avatar styles of '+1' overlay based on size - * @param {Object} oneAvatarSize - * @param {Numer} oneAvatarBorderWidth - * @returns {Object} */ -function getHorizontalStackedOverlayAvatarStyle(oneAvatarSize, oneAvatarBorderWidth) { +function getHorizontalStackedOverlayAvatarStyle(oneAvatarSize: {width: number}, oneAvatarBorderWidth: number): ViewStyle | CSSProperties { return { borderWidth: oneAvatarBorderWidth, borderRadius: oneAvatarSize.width, @@ -827,10 +808,9 @@ function getHorizontalStackedOverlayAvatarStyle(oneAvatarSize, oneAvatarBorderWi } /** - * @param {Number} safeAreaPaddingBottom - * @returns {Object} + * */ -function getErrorPageContainerStyle(safeAreaPaddingBottom = 0) { +function getErrorPageContainerStyle(safeAreaPaddingBottom = 0): ViewStyle | CSSProperties { return { backgroundColor: themeColors.componentBG, paddingBottom: 40 + safeAreaPaddingBottom, @@ -839,11 +819,8 @@ function getErrorPageContainerStyle(safeAreaPaddingBottom = 0) { /** * Gets the correct size for the empty state background image based on screen dimensions - * - * @param {Boolean} isSmallScreenWidth - * @returns {Object} */ -function getReportWelcomeBackgroundImageStyle(isSmallScreenWidth) { +function getReportWelcomeBackgroundImageStyle(isSmallScreenWidth: boolean): ViewStyle | CSSProperties { if (isSmallScreenWidth) { return { height: CONST.EMPTY_STATE_BACKGROUND.SMALL_SCREEN.IMAGE_HEIGHT, @@ -861,11 +838,8 @@ function getReportWelcomeBackgroundImageStyle(isSmallScreenWidth) { /** * Gets the correct top margin size for the chat welcome message based on screen dimensions - * - * @param {Boolean} isSmallScreenWidth - * @returns {Object} */ -function getReportWelcomeTopMarginStyle(isSmallScreenWidth) { +function getReportWelcomeTopMarginStyle(isSmallScreenWidth: boolean): ViewStyle | CSSProperties { if (isSmallScreenWidth) { return { marginTop: CONST.EMPTY_STATE_BACKGROUND.SMALL_SCREEN.VIEW_HEIGHT, @@ -879,11 +853,8 @@ function getReportWelcomeTopMarginStyle(isSmallScreenWidth) { /** * Returns fontSize style - * - * @param {Number} fontSize - * @returns {Object} */ -function getFontSizeStyle(fontSize) { +function getFontSizeStyle(fontSize: number): TextStyle | CSSProperties { return { fontSize, }; @@ -891,11 +862,8 @@ function getFontSizeStyle(fontSize) { /** * Returns lineHeight style - * - * @param {Number} lineHeight - * @returns {Object} */ -function getLineHeightStyle(lineHeight) { +function getLineHeightStyle(lineHeight: number): TextStyle | CSSProperties { return { lineHeight, }; @@ -903,11 +871,8 @@ function getLineHeightStyle(lineHeight) { /** * Gets the correct size for the empty state container based on screen dimensions - * - * @param {Boolean} isSmallScreenWidth - * @returns {Object} */ -function getReportWelcomeContainerStyle(isSmallScreenWidth) { +function getReportWelcomeContainerStyle(isSmallScreenWidth: boolean): ViewStyle | CSSProperties { if (isSmallScreenWidth) { return { minHeight: CONST.EMPTY_STATE_BACKGROUND.SMALL_SCREEN.CONTAINER_MINHEIGHT, @@ -925,14 +890,8 @@ function getReportWelcomeContainerStyle(isSmallScreenWidth) { /** * Gets styles for AutoCompleteSuggestion row - * - * @param {Number} highlightedEmojiIndex - * @param {Number} rowHeight - * @param {Boolean} hovered - * @param {Number} currentEmojiIndex - * @returns {Object} */ -function getAutoCompleteSuggestionItemStyle(highlightedEmojiIndex, rowHeight, hovered, currentEmojiIndex) { +function getAutoCompleteSuggestionItemStyle(highlightedEmojiIndex: number, rowHeight: number, hovered: boolean, currentEmojiIndex: number): Array { let backgroundColor; if (currentEmojiIndex === highlightedEmojiIndex) { @@ -956,23 +915,15 @@ function getAutoCompleteSuggestionItemStyle(highlightedEmojiIndex, rowHeight, ho /** * Gets the correct position for the base auto complete suggestion container - * - * @param {Object} parentContainerLayout - * @returns {Object} */ - -function getBaseAutoCompleteSuggestionContainerStyle({left, bottom, width}) { +function getBaseAutoCompleteSuggestionContainerStyle({left, bottom, width}: {left: number; bottom: number; width: number}): ViewStyle | CSSProperties { return {position: 'fixed', bottom, left, width}; } /** * Gets the correct position for auto complete suggestion container - * - * @param {Number} itemsHeight - * @param {Boolean} shouldIncludeReportRecipientLocalTimeHeight - * @returns {Object} */ -function getAutoCompleteSuggestionContainerStyle(itemsHeight, shouldIncludeReportRecipientLocalTimeHeight) { +function getAutoCompleteSuggestionContainerStyle(itemsHeight: number, shouldIncludeReportRecipientLocalTimeHeight: boolean): ViewStyle | CSSProperties { 'worklet'; const optionalPadding = shouldIncludeReportRecipientLocalTimeHeight ? CONST.RECIPIENT_LOCAL_TIME_HEIGHT : 0; @@ -991,12 +942,10 @@ function getAutoCompleteSuggestionContainerStyle(itemsHeight, shouldIncludeRepor /** * Select the correct color for text. - * @param {Boolean} isColored - * @returns {String | null} */ -const getColoredBackgroundStyle = (isColored) => ({backgroundColor: isColored ? colors.blueLink : null}); +const getColoredBackgroundStyle = (isColored: boolean): ViewStyle | CSSProperties => ({backgroundColor: isColored ? colors.blueLink : undefined}); -function getEmojiReactionBubbleStyle(isHovered, hasUserReacted, isContextMenu = false) { +function getEmojiReactionBubbleStyle(isHovered: boolean, hasUserReacted: boolean, isContextMenu = false): ViewStyle | CSSProperties { let backgroundColor = themeColors.border; if (isHovered) { @@ -1022,7 +971,7 @@ function getEmojiReactionBubbleStyle(isHovered, hasUserReacted, isContextMenu = }; } -function getEmojiReactionBubbleTextStyle(isContextMenu = false) { +function getEmojiReactionBubbleTextStyle(isContextMenu = false): TextStyle | CSSProperties { if (isContextMenu) { return { fontSize: 17, @@ -1036,7 +985,7 @@ function getEmojiReactionBubbleTextStyle(isContextMenu = false) { }; } -function getEmojiReactionCounterTextStyle(hasUserReacted) { +function getEmojiReactionCounterTextStyle(hasUserReacted: boolean): TextStyle | CSSProperties { if (hasUserReacted) { return {color: themeColors.reactionActiveText}; } @@ -1046,11 +995,8 @@ function getEmojiReactionCounterTextStyle(hasUserReacted) { /** * Returns a style object with a rotation transformation applied based on the provided direction prop. - * - * @param {string} direction - The direction of the rotation (CONST.DIRECTION.LEFT or CONST.DIRECTION.RIGHT). - * @returns {Object} */ -function getDirectionStyle(direction) { +function getDirectionStyle(direction: string): ViewStyle | CSSProperties { if (direction === CONST.DIRECTION.LEFT) { return {transform: [{rotate: '180deg'}]}; } @@ -1060,17 +1006,13 @@ function getDirectionStyle(direction) { /** * Returns a style object with display flex or none basing on the condition value. - * - * @param {boolean} condition - * @returns {Object} */ -const displayIfTrue = (condition) => ({display: condition ? 'flex' : 'none'}); +const displayIfTrue = (condition: boolean): ViewStyle | CSSProperties => ({display: condition ? 'flex' : 'none'}); /** - * @param {Boolean} shouldDisplayBorder - * @returns {Object} + * */ -function getGoogleListViewStyle(shouldDisplayBorder) { +function getGoogleListViewStyle(shouldDisplayBorder: boolean): ViewStyle | CSSProperties { if (shouldDisplayBorder) { return { ...styles.borderTopRounded, @@ -1087,12 +1029,8 @@ function getGoogleListViewStyle(shouldDisplayBorder) { /** * Gets the correct height for emoji picker list based on screen dimensions - * - * @param {Boolean} hasAdditionalSpace - * @param {Number} windowHeight - * @returns {Object} */ -function getEmojiPickerListHeight(hasAdditionalSpace, windowHeight) { +function getEmojiPickerListHeight(hasAdditionalSpace: boolean, windowHeight: number): ViewStyle | CSSProperties { const style = { ...spacing.ph4, height: hasAdditionalSpace ? CONST.NON_NATIVE_EMOJI_PICKER_LIST_HEIGHT + CONST.CATEGORY_SHORTCUT_BAR_HEIGHT : CONST.NON_NATIVE_EMOJI_PICKER_LIST_HEIGHT, @@ -1111,10 +1049,8 @@ function getEmojiPickerListHeight(hasAdditionalSpace, windowHeight) { /** * Returns style object for the user mention component based on whether the mention is ours or not. - * @param {Boolean} isOurMention - * @returns {Object} */ -function getMentionStyle(isOurMention) { +function getMentionStyle(isOurMention: boolean): ViewStyle | CSSProperties { const backgroundColor = isOurMention ? themeColors.ourMentionBG : themeColors.mentionBG; return { backgroundColor, @@ -1125,19 +1061,15 @@ function getMentionStyle(isOurMention) { /** * Returns text color for the user mention text based on whether the mention is ours or not. - * @param {Boolean} isOurMention - * @returns {Object} */ -function getMentionTextColor(isOurMention) { +function getMentionTextColor(isOurMention: boolean): string { return isOurMention ? themeColors.ourMentionText : themeColors.mentionText; } /** * Returns padding vertical based on number of lines - * @param {Number} numberOfLines - * @returns {Object} */ -function getComposeTextAreaPadding(numberOfLines) { +function getComposeTextAreaPadding(numberOfLines: number): ViewStyle | CSSProperties { let paddingValue = 5; if (numberOfLines === 1) paddingValue = 9; // In case numberOfLines = 3, there will be a Expand Icon appearing at the top left, so it has to be recalculated so that the textArea can be full height @@ -1150,20 +1082,15 @@ function getComposeTextAreaPadding(numberOfLines) { /** * Returns style object for the mobile on WEB - * @param {Number} windowHeight - * @param {Number} viewportOffsetTop - * @returns {Object} */ -function getOuterModalStyle(windowHeight, viewportOffsetTop) { +function getOuterModalStyle(windowHeight: number, viewportOffsetTop: number): ViewStyle | CSSProperties { return Browser.isMobile() ? {maxHeight: windowHeight, marginTop: viewportOffsetTop} : {}; } /** * Returns style object for flexWrap depending on the screen size - * @param {Boolean} isExtraSmallScreenWidth - * @return {Object} */ -function getWrappingStyle(isExtraSmallScreenWidth) { +function getWrappingStyle(isExtraSmallScreenWidth: boolean): ViewStyle | CSSProperties { return { flexWrap: isExtraSmallScreenWidth ? 'wrap' : 'nowrap', }; @@ -1171,10 +1098,8 @@ function getWrappingStyle(isExtraSmallScreenWidth) { /** * Returns the text container styles for menu items depending on if the menu item container a small avatar - * @param {Boolean} isSmallAvatarSubscriptMenu - * @returns {Number} */ -function getMenuItemTextContainerStyle(isSmallAvatarSubscriptMenu) { +function getMenuItemTextContainerStyle(isSmallAvatarSubscriptMenu: boolean): ViewStyle | CSSProperties { return { minHeight: isSmallAvatarSubscriptMenu ? variables.avatarSizeSubscript : variables.componentSizeNormal, }; @@ -1182,10 +1107,8 @@ function getMenuItemTextContainerStyle(isSmallAvatarSubscriptMenu) { /** * Returns link styles based on whether the link is disabled or not - * @param {Boolean} isDisabled - * @returns {Object} */ -function getDisabledLinkStyles(isDisabled = false) { +function getDisabledLinkStyles(isDisabled = false): ViewStyle | CSSProperties { const disabledLinkStyles = { color: themeColors.textSupporting, ...cursor.cursorDisabled, @@ -1199,11 +1122,8 @@ function getDisabledLinkStyles(isDisabled = false) { /** * Returns the checkbox container style - * @param {Number} size - * @param {Number} borderRadius - * @returns {Object} */ -function getCheckboxContainerStyle(size, borderRadius) { +function getCheckboxContainerStyle(size: number, borderRadius: number): ViewStyle | CSSProperties { return { backgroundColor: themeColors.componentBG, height: size, @@ -1219,10 +1139,8 @@ function getCheckboxContainerStyle(size, borderRadius) { /** * Returns style object for the dropbutton height - * @param {String} buttonSize - * @returns {Object} */ -function getDropDownButtonHeight(buttonSize) { +function getDropDownButtonHeight(buttonSize: ValueOf): ViewStyle | CSSProperties { if (buttonSize === CONST.DROPDOWN_BUTTON_SIZE.LARGE) { return { height: variables.componentSizeLarge, From b3626bcffb4de4e1444d91491ab3af059c946b46 Mon Sep 17 00:00:00 2001 From: Julian Kobrynski Date: Tue, 29 Aug 2023 12:56:36 +0200 Subject: [PATCH 020/275] apply finishing touches --- src/libs/NumberUtils.js | 6 ++--- src/styles/StyleUtils.ts | 49 +++++++--------------------------------- 2 files changed, 11 insertions(+), 44 deletions(-) diff --git a/src/libs/NumberUtils.js b/src/libs/NumberUtils.js index 376fc90c3df6..ee0b8a8fa397 100644 --- a/src/libs/NumberUtils.js +++ b/src/libs/NumberUtils.js @@ -51,9 +51,9 @@ function generateHexadecimalValue(num) { * Generates a random integer between a and b * It's and equivalent of _.random(a, b) * - * @param {number} a - * @param {number} b - * @returns {number} random integer between a and b + * @param {Number} a + * @param {Number} b + * @returns {Number} random integer between a and b */ function generateRandomInt(a, b) { const lower = Math.ceil(Math.min(a, b)); diff --git a/src/styles/StyleUtils.ts b/src/styles/StyleUtils.ts index 2bed4e380c20..b4aee3dc77d6 100644 --- a/src/styles/StyleUtils.ts +++ b/src/styles/StyleUtils.ts @@ -207,9 +207,6 @@ function getSafeAreaMargins(insets: EdgeInsets): ViewStyle | CSSProperties { return {marginBottom: insets.bottom * variables.safeInsertPercentage}; } -/** - * - */ function getZoomCursorStyle(isZoomed: boolean, isDragging: boolean): ViewStyle | CSSProperties { if (!isZoomed) { return styles.cursorZoomIn; @@ -218,9 +215,6 @@ function getZoomCursorStyle(isZoomed: boolean, isDragging: boolean): ViewStyle | return isDragging ? styles.cursorGrabbing : styles.cursorZoomOut; } -/** - * - */ function getZoomSizingStyle( isZoomed: boolean, imgWidth: number, @@ -329,7 +323,7 @@ function getBackgroundColorStyle(backgroundColor: string): ViewStyle | CSSProper /** * Returns a style for text color */ -function getTextColorStyle(color: string): TextStyle { +function getTextColorStyle(color: string): TextStyle | CSSProperties { return { color, }; @@ -438,9 +432,6 @@ function getIconFillColor(buttonState: string = CONST.BUTTON_STATES.DEFAULT, isM } } -/** - * - */ function getAnimatedFABStyle(rotate: Animated.Value, backgroundColor: Animated.Value): Animated.WithAnimatedValue { return { transform: [{rotate}], @@ -448,9 +439,6 @@ function getAnimatedFABStyle(rotate: Animated.Value, backgroundColor: Animated.V }; } -/** - * - */ function getWidthAndHeightStyle(width: number, height: number | null = null): ViewStyle | CSSProperties { return { width, @@ -458,9 +446,6 @@ function getWidthAndHeightStyle(width: number, height: number | null = null): Vi }; } -/** - * - */ function getModalPaddingStyles({ shouldAddBottomSafeAreaMargin, shouldAddTopSafeAreaMargin, @@ -588,9 +573,6 @@ function getMiniReportActionContextMenuWrapperStyle(isReportActionItemGrouped: b }; } -/** - * - */ function getPaymentMethodMenuWidth(isSmallScreenWidth: boolean): ViewStyle | CSSProperties { const margin = 20; return {width: !isSmallScreenWidth ? variables.sideBarWidth - margin * 2 : undefined}; @@ -657,8 +639,6 @@ function getThemeBackgroundColor(bgColor: string = themeColors.appBG): string { /** * Parse styleParam and return Styles array - * @param styleParam - * @returns */ function parseStyleAsArray(styleParam: ViewStyle | CSSProperties | Array): Array { return Array.isArray(styleParam) ? styleParam : [styleParam]; @@ -666,9 +646,6 @@ function parseStyleAsArray(styleParam: ViewStyle | CSSProperties | Array ViewStyle | CSSProperties), @@ -692,7 +669,7 @@ function combineStyles(...allStyles: Array ({backgroundColor: isColored ? colors.blueLink : undefined}); +function getColoredBackgroundStyle(isColored: boolean): ViewStyle | CSSProperties { + return {backgroundColor: isColored ? colors.blueLink : undefined}; +} function getEmojiReactionBubbleStyle(isHovered: boolean, hasUserReacted: boolean, isContextMenu = false): ViewStyle | CSSProperties { let backgroundColor = themeColors.border; @@ -1007,11 +975,10 @@ function getDirectionStyle(direction: string): ViewStyle | CSSProperties { /** * Returns a style object with display flex or none basing on the condition value. */ -const displayIfTrue = (condition: boolean): ViewStyle | CSSProperties => ({display: condition ? 'flex' : 'none'}); +function displayIfTrue(condition: boolean): ViewStyle | CSSProperties { + return {display: condition ? 'flex' : 'none'}; +} -/** - * - */ function getGoogleListViewStyle(shouldDisplayBorder: boolean): ViewStyle | CSSProperties { if (shouldDisplayBorder) { return { From e47d7b1361d4d3ebed90dd400c6494a2e5310618 Mon Sep 17 00:00:00 2001 From: rory Date: Tue, 29 Aug 2023 17:12:28 +0200 Subject: [PATCH 021/275] Rotate provisioning profiles with updated cert --- ios/chat_expensify_adhoc.mobileprovision.gpg | Bin 11017 -> 11068 bytes ...hat_expensify_appstore.mobileprovision.gpg | Bin 8169 -> 8169 bytes ios/expensify_chat_adhoc.mobileprovision.gpg | Bin 11065 -> 11094 bytes ios/expensify_chat_dev.mobileprovision.gpg | Bin 11106 -> 11098 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ios/chat_expensify_adhoc.mobileprovision.gpg b/ios/chat_expensify_adhoc.mobileprovision.gpg index 97179c8a65acffb5eedaf6bf51831f73b7211fc1..c159548581e36324b86db35238b7837ccefbf837 100644 GIT binary patch literal 11068 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 C-+k-= literal 11017 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 Dq(oQi diff --git a/ios/chat_expensify_appstore.mobileprovision.gpg b/ios/chat_expensify_appstore.mobileprovision.gpg index 39137ea24a07fa4b3e8dcbcaea23a9414320eede..cfdca5e9601feb10d16bbc35190632c800ae3d94 100644 GIT binary patch literal 8169 zcmV9B5CHIVF-3e-t z_>2uE-lpj%u3)i^eC#}A6n3N!&B|Ufd2DWJ(zUp&R_w|y&yCk$MQ6O)Br?i1 zT!VOTz6v-%<+bk|Pn@3eSxU#@XH z8EsvZKj+&p^H4b^>yP?L;z znLS|Y`V#AOA8^mv;ogmI?wJapMuzN!A311qmnMr~&G6-g5Q!TW$*{5f2wMfl$B%%9 zP~fmi(hg5VMwayWJL0#WqOck%#$ zjQICDBdiN)aQ2~N7%u(yZWbE}r8b!#j`Yh`LxEbcGM};Zu6FFnb{!8H=G4?}J%cvP zxgIDyBQC|vE% z=f7g7V9`XCOwjcRO>75Szl%y|#(?kusRf=Nzl%rEf*N80n=)FMa@6m9s$os#k3VKm zTsDa3VaPQ?2$+=)@!xYJvmFi^}b%F%*ODaWxpH&Ba(RC?nIN-|LhKCUw3XD0_^2o=eWVhaC%(Ij!3 zyPH!C6i<97p`ENc4yvUtqQ1$rq}A@jC#9jOs*WRJB2z|sJ+EpI(3U4zy@a2Qv9PVyg zp4~~(It;t5J3{jQ%J=e#F+-jR&(R-B^3LJS3F zghrds4=}d>Nyd$#u-Ik zg>^|3bGGaEIKCNK?x8i}GCDL)dCS2H2P{l@Z!;1p#Bz$VbnhjjZ-naCUk{n{E!vEQ zc0yDIZ+J$TWXIZFUEs|Tp(lgSzs(c10pa%i9g;U-1*y@#Cx@E{$|i%4a8S~xZKDq; zdrK)BPmKvfledB;kGuQZgJC)e8~x6DtarUmo5IrGw`z4k!P7N-gLH#2{ncg?%#!;2 zhY2Hu&t}4W<)qXd0A_~ySerBAOK4r^dr?TT;$)YV^r^sDsyDdH_z5>J)!;bp#7*x#U;<_B6_R(ADSVozJ3ud3E?i zg>P8FY6t)DsL)`rv6)m-(0-K;sQUQ1%BC$3rGLF`s560hv4WZ41?c&p**@!;NKpO% z$SRr_t#!pkGV&Fjf(^w)PU+BOXc5Vaw4M=gWnw1~6Ntc&j8ZClqI$5bhL|^LuCZQV zKeov0F{VIWmR2>h>rxYQZfHyv*alUeU>4Ea1jZhS_qkkHhMITPPk@Ao2bhKF(-i;a zmDS+9JOVpbQCt#?t1|W@Bj~vcWYSGY<)-OgDnw0>UEN^k681(_N*-9azfe2x`I`=0 zAAnkLJCshOsELGZpCU=F32y)L3z&I{Th7vQjmy5*sP{i7?YPPeib3`Lg^!9Ip1i(8uQthZgkDZwE<#BWOrxK2B7ud?x}dvkHbv`nacN`g zAd$Re>1B@a{{L-iG{|{;e5vW?96b(!nggMf2&az<`|kZWkZ+kkJ_SdZhLWRau$^D+ zZytccbYRRxV58rkSPer!bm+)3HiwO2AjK7bFjFj}0DSKQdrm40ev)BU_@K-~| z;R=Fn5z)oXI@l1C1pxnyf)sHG7~L04tGqH6cujFT-E#kE$CZk82k}Qau$oF5l$X?# zT7m53dAgmZzq3H>qLRaryY{?vm9E-M?}bcOqyE2FxI76}nu89C_MB_^CdV(I! zd(T{&39)jY`(N4mpz2RU+MBpb-nxhV-D*P5ujiG(`kKRh0k?| zvrojomY`e$mwHi1aoa#Oz`e+?o~$+?euDZd*_~R%RTU3_cHUFqJ6N0Gu9iw7F2*%FE6Z<~E z>e46oyy7~!X%mJYXl4KqUeZZE0Dj(}F#Kq0!7QFVaBHWBC<6P-5Xy2Xxo z`fFK5ZO0<)P8KK)`OS#D4T5Zbo*Pf}zD#C+T6qTT-b=qgY&VAJRmbansuc8Oc@Vxi zIYW5iTazR=61J}2+cqM%=X}?)&K~0WregJl(6iakzgRzbih9DJOf|^TGG|Vp-%|dI z+J`VHy8Es9KU}CV?9Vr0faZlMPR9^Ta|PzrbDh=2s1+MY*amDL$8E<3giZ2Vn22A$A!*+J{#+v4Uw(=ix&N z|IlUkv(n);;fwb~88SbbAqlOje|cUQAk8v}l%J6vCQ}b7UzC>;2lJ!I_=w8aWOM0w zNd3KJEaK3X4Vwl-5N-(!-wqY(-Z_%g2;auTG*(vE5e0asxWFBRRP!dfQq(ti*a90bgj{q+`5ZxDp%A`{Z8yJTK21cFeJ($f5)t-ydm2pN`dCRR?XCNO_mp z-JMB@E)|v#bODk41ZIl*I#$Si=(cU$9*tCz4nmbUf=bbg9@GLNm+AA>9eokxxv5+& zJE**=B<#A<5y~8jY<(4!KKLF=8&)53(G*XBf*Ub<&8;*o#TA1{2D#u&1y_lMZiGrKIXc{3G&5TgPg?` z#f#|gVN)#|H~CqQ&SxXbTbxy+N?k8|KTIPIuuuiS!EvDm?rUl;tk~}`{2tgNy{*Ac z%-*q}0da%1-Q$DZi`Zk+4}2Q~L1Hx74ADMZEUCe@(%1y(;lk}Y)UH&YfZ ztn38dy^;9+^ON#@AUSQBw?=HX>O{`<|2*X%5n-G*Gd(gDKPQOSgX5hIE?O1SGgdA7 zk;FuA_`d$@8Wos=_6I%x=;|;pnq04hee1j*#%}~%?txCUxw_Hr*A-Fk&DTgu!Noe$ zQ7JouJ?cO|x_JWkNty=JJJ&PcgRn_4Y`o5l*!fnA8z-V02O^t2Qsgmx&5BPmAN>Uw z`U7ATy;6g*BN%{8>(kfzy)aF>7XBP?R8Log^1E zC>SOV!&_!l{&bD^MXqz)<}@sUC0g$D4hVjWMYtNu!499^(CR!IsU|t5!MUF|t5Yl- zfH6(m2jJq7A5~7Mz&!#~G*F?C)}0^r3uqoI?f^$hw$Z78vrPyzWH1VA$JS<0NjXoc zAPtOu;N87IWhyI5i7X4?O^3wgYw1#FT;;OuY(X+Ifh_h}tp9S~uB0E?Hx;pWyw0eV zUP~*rwm^j|H8W53s!%>TYtYq+TXlI^e{s}>P~wbxHgfJ$r-pIaJCtcz&MIPkM0f6` zA-Gb$w{vle^!nlMohkt<>^p#d(S`a~p~ZOI-h-Fw4f1c(itml$Nj^9JLh7YMp8yH}l4#2hd3SQopO9FKtc*54v%)h$jbbfH%WePaL7{5nOdWNs^a2lk5wdF0+4; znfmIb7m6fkC$NlB3q5rTW*H{dU9-R|4P9-6tk7ZvAmwY$KhGMU1Z$+Cv!_%e>WeHI6-b6HpMVPZ`;4+>JpWWt zWhA+eLbl)WI`-EDsnOv*6ZD$qrugda1cU#IICp^EQz*R=&^Y3zZa?LZl~J=s$u`fi zv;Is?1frSf7?QnY10@LV^-WfylI(%PDqx@co4$)|9C0O@@^6B@3`SooG z)tz=k@OhnHtX*^Qly+=%3ttZLITqF3TM+}yQ5NK|F=VjS-c40+^+{$$f*ljG6*6mO z*qVmy4kaa}Rr|;KBqyp^;6f7ZKf0bQ8m)+af?oOBjNdT*j>4bK8kgS^h0M-BQt8^t znub8n^gl!`W~y?>Fbg7)qI<_iAWnwXy2mx|Z0j`>l8Ie-@TnMQ)Fw5$d<(9*&w#ddqW5 zc;7TOtX}(}l9U?BUk?zR+3Fx&YHlSW{7$EMwAJdIwnjpBt*xw-24#jE%kGjmgYH2% zejN#LBId*8hIUDTZm__~(z88`g@kYOdY|_zCG0LSvA={IQ(m<yIK3 z_pKrSRnJWnQF4}%5!4v?PKz8&NN5@PRU_j;J#uW7et8ZV7H0)kTHjQ`xnG# z$c|XUBfa3$>DSs_6y(_g5Vfp)exOJts}r##$G?X%ClsAm^p+fla)OgB7fNx4|z{JQ~?OiAB_!TRv;3Ng;-HK0vslzP)+8!m+-kJMw z1G|9UOIwqS8mXTDoyfVR^Z=q3YV)yPUUT9OrxQ&C0gq&_5;jPK%p^ zeuE{xsJ_gbg%j=wo5W*YMN$t`l+N-T6XaR>~I5Kj6%Qy4!Uq1wEU5Am)61X zyhd|yyny*oWp7JXr7z?BU+HMZmgsi(*jU3D$&qHN478U2&2xiL{0B+2zI9%m5eM&F zpW>*~xpsd%f|d_foTLJVtdn$N(UR9KfBU{iwTLK$b=`|F))lqwWVOSzy-vy|t=-b2 zIrVhQ<6l+FnQSjY(9>q%Na=|hyZ7Qxl7#}IAhnGKP}ze9tL8SJ@jd(-;sYOAR`b=K zzaf_3L^ix{IP`5|ZHpa=vMiDPd<=h!67hF2L7Y;fpS`S?%v<6iCwhCf3qxMGVuf&$ z=O)fs88`{oBi$dgQ+2A3e{2|8-_l;RM-=l~KPQ4UueWIIz~jo=kj2JeY>Ph&%nXOA zH=vAHFC?vo4K_lrVU*u!UutCA1q6MD-Hz*syy<)kEyfe*@u=eT{CuZFV_GJ=xICs< z?>?Mp3KJdwuvY+?QY8)sTP^|1Yh(oL?egA6h$#L_>Z=39h5KcoIt4Thze>b-Nm!|g zk0)~n*&p$7{_NDY%Y(O5@*Joj=SqCzemfW1|MykfH{oH_WB?LV>J_wQ7!eSep5zDn_{(;V zvM-U>>>Dix{5(4^lyCie0VPPLSoTYMfKIlAPZshj>T<_Rm+xFabO(<_NY|C*>(-4l z(>-ZdlGbHhoLpgc6(|59l1Zqv5Q!z4Q3SaweE}p+nP!+G6#}K@!f}+9i_)GFWMmPdD6(5zOlVQH@|LG#{|KVXPsvnX5-qZI--0T`OF@u9JXgB=0kZb5~eN zl@jGYgPC3g{Dvo)K#AKc@B>0!2a7L~)kvM~%vP2of1zJ?fH|Lkr(zYs%UhbmseDHJ z292IW5EYMSXfOrHgS6~af~-Y=)hi~aA_m1;>Q!1Os^%Xc*Z1PH7E()`+bWa&@t}}X zhzn{sL^Tj|@?7|0{d1{b^ipv=#=65L^)8rSF0P-It=`e|RMk))JFHLIQQgnE*`rl^ z!OxD&DS^Q6@xm`<4W8a^F4==J7ghRQf*1ogjk|({1dA%`bNffNFR!2O1VBjU|DmGw z7}+{U*oT5y_GMP#`x&|W7L9fA&GO2}zrMNlt4@qh4nIEaBuz(g3Vj{S>Q}rRJ zcd;Y8&y9GszAerPpT%vjx!!~*2dT4D zvIq>4gb%y+@H3v47DyB;m}*a4(}%9-R-+tfU7{*DiK(g(zJzjgp|O`@Y`$=D_#C#1 z;K>oDb{ilE6sr0H31IJ=NyJnvS^)CZPe~$|IUhZ(b|mM2(UMHR5PsdEly6>zs9i=g z`ncZ!%qqgUikM(I1x_|k?7li+I&a5MXTt40ZB%bp?bWe**hsH|j)=3c%Gdd%)?}&4 zmA_!oo6WS^LkK><0{82bi|Wt>7R-eE>u}41;Fa~f5Rih7+^)#>|44(Ed|eK~fxWO< zZoN7|a@g?eS%mFhw4drRu)^ss8Yfmq-svnFguX=`gEpZR=5 zl7YS7d+J%jf{boTELGO>+_em-XclJ2eEfBLTTz$e&0rcrISw62W2l*fE^Rztj#qU! zEP*X3zeqH+imn};+*bveDxMmJqjS;qV9dkY(=?m z6z(RYe*BFLRayWRg5NN)_!Qi#I6~%Pry7EPbS9SQX62y_pLJZ;6LbnI_R0eb)XSz> z)Wn>irZFFw$s_}q-SbTkhhOh{!LWj5tPl%Uc4omdYdr=`mv_G#?^mh-Z9M3Mon*A0 zx7@D5jwgVh>`)~x+VBNUpjec48-Y){n*t)L2+(z)M7Pn)Bt8mLSvb9SjH|N^qre-8 z7s>faJB-BOnPlHklnXYMQspW1fL>79V__VxUEX5@dhIzZ%g znn#Oh|AOtv$<*vo=wjmR#yF@ut)&GdpuC_VPfx?FU{7cw6$|QU%5T%hK(CVdEoS&x zykHDCN=gE$@)=`1Pd+ zFL}>(EBzv8Q+%k80t z+Y9$`JP`rVxQBuV+Bx9ct%vzzn!x03IIAx&1w0h40nOj7b3>m##*UY1r-_cJ1{Dk# z+!@~2UMKm@BWEBdWI5}Ntc~5im6yLtSyE{c5v>JdA{xOfihMDWi)!4_wKoEOyPch^%#`^yCse(HpTLCuk(rnDbv;D$Uo)k5y-?xV>eU87T_kB%F P)T!GmyYI>iSEXuLR`LD5 literal 8169 zcmVDm{JaAobGh0Sxa}GIi6*8ZG|`v}u_QFSL-I8ev(*Ps$pM zR7Yv9lmJ-jO`t8w;&M5ZcEI)7KM+TCkKm-oj3NN)M`d4YgRYI0kY3YPGtmX}BDmz_5tzl&gGL6B<+5RY zpVNtrE{G{HYYOKiPe(jDxDyp`Fv4u$%TNvwI};IUnm2#7=}-Oz80B)-j?n$C*gr&z z`>T-`f({#&*eDf=*m{D*qHJtXqgRgo`#$QK!Er4bi^UJ8Zg?p-tl+L|jY(_GGMC4y zG!z=l$nY#Y+gk@S4V$UgB42dMy5&<+(fA{(4$%&$FIIMBC1>0AcI;BH9Aj_>UX^1Z zeAvh*JO2?sX{StvCA?>sJRY!8gZNLCtw=C`0uF2TZ$9Jr{-F*5#u_L^%jccqnMvA? zAP|RjE!pwggre=0!y!1GUayZgKL=hAo|X^a^mc`-BC#Rr4Rc5l+$E;emy$OP?tsEt z<^639LC(kv6^Mw^Cto<~vFSO&uN5o8F^&OJA-4Hr$5|A#fSZS)tt-U>&m-cqrQnNyVdv6op zYj?M9G}&>Tl5wj6M}8sU{W7ZZbWd^C8N?^FA-+;Q@<0Hk^GyTpHqx1L;kZtIm8j(r zJs732DTh&(`pYprmGh{Tagh$Yi2TTJ8AWQ1hI~5DT~dd%A*^ACdHx@R*Bu$pbsD;OkKX$&n+xkvYTeFu3dzoTkI+#7{-YsDX9)= z<}wOHi@O=fq3HAgYy?)Erjqf9vwt@YZbx-snUG$>ljF3WhoW*%Tt`0k3`w8et_b+# zV3ETqJgu$}HN?xk?- ze%iz&y8%g!LHA1UHz<~>gp+4tVUyuv7=pB~d0VWU`<3XzVPzQ+NjQRofQ+tp!cE=Z z>vSM;hV9=r9EUaHnk{e}GAK`ul!>0}UV<*eOy2N52W;z9gc}kkvm%-l#}hT1TKlND zJYZ9erjboR_d$BS_)%+K9^Ho_)n(&j0?avJ^u{R?KMUck;TLlZG@>*ou>P+!s7_H^ zPY~W)XostexN~~I&0s{0`ksW9?g2Ewe9uDh)cM!TQp^sVd2}3D|gVF&Ymbo6DzPhf>YHXQ}`?`hdS3J~NpIV#bKRB9y= z4@0!9o487an#7P=AK#P0bZ{Ji$K)3lGfVg?8(6@EX0F6K%%XHF=OacoT3Dq2$Ic_8 zzmWaIuq{FT$N0u?P}#AodYLpw!wG5~b!W|88u9f3a<#0tDTz_j4PqWc%jV11UF@R6 zHK>Jm$AX2|`l%M0<+?!Mq$Wq&!(koRx5+7Q+hoq}TN+$AK%|& zq>OBM>1NN_&B5r{(Auk-iGs=~L0or~04~?JU#ADs!O@kyG7shm0 zx_+tcmZYxtX6U<@jV$|ydV-wR>RP!w{hRtq+5M+piFLK|(M)dUnL%E^;Lb3mlK2(! zsoiWM_w2Nx^@z<`J^d!VED7XCRkB7$?gO93%S2g+OEDd$hrTKo;SA zCfkW9ZFmS_C~ywSyv4HvbwiON-s36wA>Q%mCDBvG1~?!fm+YfHSwC`!e+O#oMqSVa z1D$+VT1nu{cAfiKC8?CXlM833(&DH!iPI+?f3Do|2m*df`EXv&*bMYVJt`-|6aL#w zPSW3Idx9<>H|pHZcvT#Hn!=?{xag5qf_KQ90E_AHo&YoSiNUi_Fr$0`BhpXIf4-uP zIA;;_=5#Z(20E~d2%8ZL0m%et5HtKFo+z`Nx+rYznbWaJhX&XP;ejgbI>A~}9fx*m(>)gPqBpv`z_Rn4veh~ZMHOEOvsR^a zr5*s3BWrU^J8Nqe-dLBP4AM0^=A>@lx38y;{#l&^+9R-Xdp(XY%+0oOWlo;2tNiBN zFqbf(WkzWfBka^k{7Z~7W~{pywSa;$g?C05TFuG%Oj?&g}P0tXS}nJ%n4? z6gVfB?g#73b5qzYRru){l-b3E6DG4Y=s{8hNNuDbTTG{^C^Fx=vkqgi-?-YdUM0Y> z6G@@}nk!~p|64XJX9a;1Lf8!1&GiegE3YNpNz!^O#t%zu#S;RYwY*|_CmOb_l7Rr2 zhuI2P_;7rTWHvjsw8#a%mQp468g<365n<`c5-F%PjS`Ja#)&hJx7miuSHDymS=x=Y zRfO*|nRadgEDHi~nmwQ*;>0Z+yOLy>X%m?e1J{KBoO>EO5esd%T6v99F}I1LCPLK7 zExEnZZl*0_j3b}OYGKJd8g*FLd1^&WFHu;kur>OPS(fZt>z4{1A9V(2aPwYGEP_c& z@WT#)gjHD_P3+S7D>4!E={7~}IME|eG*MXhUBl2rPVI;m107&;yfXi}A}!*@vr?fXF(lgY*M!!gx;dDVW zu+d4^;ysR<(6^@*J5QTKV)WBH*s_A6MAHidk>Q~Qo7H?Jegsxib8DH4<(wkzbt`n8 zXcLSBuDZY(8rasEP#E6k6|8*644kE0&}T-%6jn5^6}KpG3>ia!gR{oi8P3Ubn{0>a zTi`k7>Sf8kVDP{0rqZ?a8-@ijW>b^lDFARtgQhSRRbaHVGdusFTCIa6rbxa40|x}%a3z-VHUUi8Ic(eNJ!H==pq=me@* z+KFv-Uyk@LMnnKy@nhsA5<;^}9nVxFTs;Eo;rt5CND`}=>d6HrvD5MGV8%$S=RVZ3 z?b0zLh}D%(y_9!edquyn9XCpWw~yv%bMV2T_zPGizGMZg*TIPPm{R!Zz{x zh8%~BzSOva@LX6Dp<6o`Tj89#EfRnj@XFe`ea5DVOgoz4e@B?X)*IVdHVI>JkPDuYHH# z0LM0O&I=E7p3)o1O0Mr*anWYEw8bj98}oI7pR7%nMznU#3+M`L#Eyzj=14PWsRbM( zziA#{Ok+JjS+H17cA4bJDM22T)4xR*l(dZixEj-O{GB7R4 z4#y1a(aq*dLt|kz*;K^jP>HQNRDMj>>CLFqCl-rK>Gb9tgdA7MHJ4)qv`|hX??;gy zy%XRsHd`i(AJQX4FZFPMIdm*LD-PfC@maLQlFLiP5}fiS3r1r-LCh-X>;Q6tA#1rp zb*VzjfF}Q?AfC#;VgPXTPY2#cKLt2>Ca-x9GIrf-AB?A_r0-7Du#|O{y2;_P*FCe> zfNCa%&UqDHsO!A=@19{^Ml`0nMYSHqk~y;crH_GZqg?|QtN9w&=I1Iugp1Z|L-^g% z;_ri`k?)T+`6i}=-AqbC>tTT0q-Ug)2Dg21UKRDYb42mJ7}l-8X%vaHbu+R==&7b1 z+2c5cXlX=F9La4;rRgm(?i$of(pNIu76D19K}q-lzEwRH*+jYgATUl%vj@=$@WndJ zQpA}5R&|46k&PD?DhmAx=}0|>%S_xK%s*QF8N1;)&31m)KRW*Nb1E%-^zQv;$X3r) zxZkQMy@TMEC<_bq!^ylB71}?)#46Xg;odxChsyZ|pvoF*`dSsD3idg~$Wo-3#jp7H zHb|i4f-0*T^SpE#1m?z#Iz^nY7yOQX?>gey9GeG)U%ZZ5JbRYT1Q2KfgA|sy!5-MN z#z3=}2D%|K0%9iD*;$z-uhhOLVA^@VYW_`?Exd1X-bW=5)4=gigH&rzAj*t)m@3<( z_JYuiN6Ie7b89{Q%iC*a$*v{bKgp^qG#h94 zwM4l@e#|(`Ksv2av0|MTMD(u}`^D=xDNwlcudmfjXEkm^=l-P!(Y&3>6%AIQ4oGHU zfAmW5e{F8bnsoewCZB>K4SEv}qit*YPtZtcF#n)VJRIH3Eh2jLkdb-NPOhg~peOG? zRnPv5@t2~aq|?usPF{Qj2RmbXDMl9Ac~2tLd(wx!75q}`%Zv`(Vi(>3Abe=A<1cnG zl>NlUDv@q5+P{a9JKAw<;P2{ERdb3LvH_ahKC&$4hR!;mDaZUwZuRrXh1%C*L%`_L z_}<$zj&b&1&zuhXSQ)}H;5jYf$*5nq&sfqxFrFM2iJ$ACEZCg9FwFdWMfKGCGxHkY zo3mdr9c@DpCwmEC7?goX%rEAu-XI1!+rmtHv@!BtQXbirRt`~>;qO`otGL`k0_j{M zRdQ9+ev~A7@p2D3@`HYS1ITG`(!FYd+IY3gk93K3b0=Y-qc6uJ@hK?2mf{6$#2FP_ z9H*jD?K)8I<9=$>b;Ti`oXkvH6UNAD(O=mdiqC);B!A9*iqvFdoDVZkY%Q_l2Lv|4`D%bcWIr{pH>D@d-j~B+DL>2$(|8-1 z=%G(6VWmRF#iKpB%|@^$4v#Aqzm$<>?Oyn;~>4=p_xsb z`PPhCK5{6#(fRQ{!Oh7GE6FTq9M=`oX=2l>n8}7RJrjwQ0Wy|u*jsaX_x!jmVGs&k zSCHky3`#HnFIrw7+Zhq|tQFW0ud%8sH&dn9i>kjFBIMz)xmu1zn)agwk80gq&1rRb zAh+fnL|X7y!{mC!Mf95Nxrc?ifx5Rouy7)|?BGG-I>}R&CkbC&U z@XFubGQC+i4rS3~?tH-xtp=ge*touy2f)oNOb$5l3f8-9!-1gg8w(~lWdO43V}0} z4Q&yaIyCNPZpa-@_FTlG`a83-((EG#t*%NvVg5GT@)YAP65 zaQ%;G2eTmx_bYcbBK1woxv|P{)BR|9MIl}HJdGQ7kpLKTE zDujNVKpg?fq)*4+$`+Kt)WU&o>eH&sH>0V!oX4s~yv#a@*)bt;y!#NcO#%tt;0=gM zXgY8iucqtPgh-P~R6pMZX`Vnj4H1W+q5Xd%*KVV-;uWNR^N0dpB=~+N3>Rd!N|bI@Y22WzhIZK{zt9hyQ}nu%;(Nt<0BlirZXjPU<_Tw^vN#rDco zU#PYNZ4s=s>MG%brAd&m5I?v*wQtPix^cDk;^tdlpK=khIA*{%h+wblm>!1vC@n{5 zz5vZk513m900COky)2H+xgaa>$apf~^?AdWPrpI%Q)PhB1`#mRS}gbi+J1_QOJt8+ zODjiz0`)tn34aNJ9Sef=nglLk+7Iv{a(OvEJ(KUw6$IvVk?-e*jv> z&+-^$vK_<0n4iXy!K@dhdt-&h$PHb2rSlxP31E#9fH#Q~~M@WvnY zYLxSXd0$-wa0JiRjfp5WuS(#Voljar)9u*1%HAie6iFs!EhqTQoP_7`Syw65J2x_` z14~~d`BIB}f9}L89rjn1bwX(11D5KZOxR^gVtV-A7>X~;&JBRTB0iU` ze$;H+Z-#s4f=O)aW})n(!GB=J4Y>oWRhllFE_W~O>2^MPpMJ$Wxg836@>a-Z^wUm` zO{XC7Lp%-Rg?x`5RQq@!8>Ka$6sSMyLF!Vz-pW&llo^7G89ypV^|Il7NkRoBrA)K& zLXFGYyEgaK@g&@D7y1FzYZpQ(=4zIs4Q9KL`(Fv(fSVkw(@gm`QgMZ`s{q0f&$j!h zBCYK2pkNlxkOC!xTtm zDsAOoJ*G?B+IUGeUH}jus>%RR(nve|w6Kf{ZJ!GZGZYE;SsYF1>KKYz8@Z|_9(@G1ts0loO@KZ$AE_R|jJVbQKM(76K}(1^Q!k|x1VE_- zw1bwR05Lb_M;uVVQV=I2pE3^oI)OSQ=lzwNJ2&Q zEj~`)6E%w9U-jg6wG#WxnMDib($Sh=xBIy8xT;!*-g6T_wT#|0XKoeKT>f>)xOD@LoooN{qu!q#uS2Zxu$y(LTh zLGu8q*66X4rfkss-M6VxWeeTgQ^vx!l_WI|y--44dcmqcPc1iZm|c5$ji*L+F*4ms zqi2HYr2>RLL2I8;WweIh>$Jz#04UY}jTTSzLG?RWm=vvXyIllY(b~ms(@R591wX0d zmqbUF>VL(w8Q~m}JECCREZ0}M-ID_i38l=vn~Qn!%*n+u31=Iku7;19E-Rl#>cCHq^kyMx>~^F$0Rpe5qV5dNDX$?CJC4Ve z`uXpJx%uGTu@5*9=D57C>);Iv7!`(XsiV#k=Y}S5;cX?Fe^y+#M}h|`yWBl2BF1! z?lvhbC;<%qVr^P=oP8O>q}pfav+kx!Q`;0hk#v&`u_IkGWHk$ej)uc^vOxlun z-CwQA&h?`k)mLc;=spfN%sWHU6dpea)s1L*D+2RUMs=;riu_6FHvK^+9#!!f@+K7S z1%c?b7YvgdnsQO!WV6&XU9JT*>`IrJFwCLK0fMZUR{p8cvqkgAmNwMdS0%Hv*3bRT z=H~=!{g!OSrXQ&{rf>C7fcu+?2M~5P)mcNG6!rb7wDGdwP*L(Gr_G67tRq zRVxLTTnuE6I{$({gOWnh8ri&*7CbE{`LkFf$M$L?To(O%l@@=W$-025|9u7XC1@tw z#kG%TEAB5Ux#T%VOx98{o68jFkY>8#>4;}S4S;NTTG|AC*=5_+w-9!oQV(^=apXVF zVHpf9pf0fk;$FY*vH!%Y;AtWsgOAQv+l^yqzV;l(jxL%kyin~zv@3hd@`#&!*Bm!S zd)BUa7|9B`swcTm6*44u(0aP=mF(Fc~084po zf5)zA2nVn%nTL7|#=w1-yQ!3Ez-3AI-NnO7+pQm8i^oQh8WZ!SM&5?#N>LN6gGg%I zgrR}e)h$-3@sWp&ta;4cp3>>a?w@iTI30+tOLPfm=FgWv5{GrW6X?hDhW_)O=)AMO z7IS1lmL}_MV<~cYZc#FKn9-SR}o8G~q4_7{V4}l2fV%+bEHpvLL z6Rle{pf!96%JhUlA(?BR(OE}VbV5(Wh;It<3 z^LyvmaX1YRUm`siu6jf?Z-?I8)qXdzDU85c2G}&jMYz1g9BCqh!7^Ds%HOY2pCv{4 zB9C;5Xni^do*yI9V+`eHi;y$21>T{^f2t~X*ww)NJ6AFsh5ny3M{9MtEnGJF^#ZTJ#6;+2h*oOq0A0F~1N3=DJ77cQzBk4Hdj7rn90aPcSBgre&5Y^U1xT z>y9RR%E?1aXVshiTs@(g^q1eQ0pwHH5tg&a=~y_Xj;G#xbV!y%`Y|1KDq}!DdXXAo zAQFAI4DVA1GXcm^AFNN#h3eSo3)w1 z{cMV8xCxmYQjm}xP``!L+XCq`Hd4DW;Tnu;^kN*^-*iZjq%-3xy zCeRDUVe#E2!6V|MD|4tu{97Y~yjq=kvGq@?7QjXqRZL&%fxCNW%C>Iel_k%r zclg8$p$?O-#7!lo49i1u47B~m#!;dd8GF^Gg@^L9gWg7Rs_i zXtl%0DevME5?bqvMH-hNWDuMUXQG6J%@GPHD8h8ud&t~@q7i}EZ}+x|TpM&RC1#k* zLvQ_-Qfd4*G2Y5H4G z_6NIpR!lR3lHfO6Pni!VB!kii3pl4)fl37k{6^xq$=;8)uvE+hH548cOqa+`#lvvi`S zPnD>1w!Gls_9wZeKi_3K{(LQ@X+~z=+k6i5A>pM4P3!(jF$c8eAz8iD@xtAJJE3Z^ zPgv~cm;f@*P`(+VrG$r6VceOx{1BL5DHMFr5(@XKb^p6TLp+n4ak{U5JH-FWBdEZ= z6;~?4-%W4EP*vE==CkO9#@ar50JGMGiY_tBaczX?YLaJVeC6C0uqrf{?b)JP6Gm4M zpAQkgyC;a+p4d=fAp4i=UlGM5&CJ8H%uRSSA*v}MxRKF(B=V}&-)6EQYQs{7T5ewD z4#Y?Tw7#(C6wu^H_GKQzgy^-u7j9XMsj|tqklV_>qD;!7S;*;stuNc%OwJ)|Du8N@ zv(sg|_@-W_NJmzy615S+m7LF#SpjVl!tzi?J1X@olS!8V5jvGsNQixKY|SB=(=|X4 zGJh&02zF3%ogWyG^rd)aM<_HS0U63!%eO>qfYZ4|kP3V*d*$(;$`lzk&u@Ih2G!pd z2&C4+;libj)%v3PyAhC>Z?9~w}@(nxSz9oEndWVgAT^(vX9>^We`Wt0k{ zotdmPfEUZ3wtDPDAf-68>*mr1+~e3P&=+PDYQb+X4wH?5(k)N62l@CCPITh{Xi8`e z1W6pZA}_KViSX3}h2?0*u-hC6zRyhRWFW+-}+TH z6zBOS!M`jjD9!=%tvYK;ZlK~!>D@GTgSpTxF>JYQ_=wOm8SenWF)@I9fTmPV z3e2eUsaWp+x#oLR#&J(lJEE%bBy_r~ii}Nuk56pL9oE^KR4OGAYtuoV_{Vx0V5b#I z*Rg!JyBjZ7NBrT3!^J56bioq;m^rd`O+3eJod@0y1(2Bje=*V9>wGR&MzaUGnFl#{ z{fsjE{)BebWW|Q_(^xK{yQ>^Eva|c{Yo*k2*XzhYGW2FrhjC;&`DEJ|)e4l^Y#&<7 zNz0V%;~}_v6BLensj&e$?FuXv8W4fl0KC{&UWL70b_7NID3uq6vImt3?3)v^!3hm+?11eQJ`$|NB5= zl!RLDCqOLs?|dj#CykO3C0IwFXH=2LxIfa}>e7PFtDT4e`gAdlvZ%w8nQ;1Eu(z4) z;9)uXosuYeJEluA6`8d$Yj!4u2*(C=s%j^BhBk*cJMk)>TjI5P@YX`icWe!&}_UuRz7RM zy$?L*g)2bSHMvKhRrtobj!upByfW=XeHY;{~? zJd@PdUY_r*a@unP{T*{Ds%ii}fpT9nB#DP_E@nD`h|$(Rm_a9?!rSmmNC7of1Rbyf z->g8w>>`i5*V$uM5%m1-cTH&gDFaXk;z7I<&lrJ_>lWm|HS+pWw*8!n3>`MqgH=bj zEG9vO&qC}J``R|ECT#!>5?9{{W)E`G%*Wg2c`T)P<5Z212Idt%I(y|jQK;-IZH*DS z9R?}_0@yZ!*{HRzw!0RE(4A`nT+!ku6)^Skisf7C>&03IQESsCEtap4*u+;$cOkCR zeE_AuiZm`-0%kpCmMqssi%Vc z?_+k&Hld_^!QR0ur)-0FQh&iyn&t$m4aZW)%M!Sj8LjmhK`DJ+Do*o}-i1R5-%x3W zC#wu}$Zh@*%EqWxAg?$k6*|A+s{wWi>MjzZ=SX6~fgUtiF81VG-8~3&m1o`31uU0AE*SX?f>@o8CyEXiku z&Ur&4<`EpW^-=Z5$X!8wRX4O+4CM4RP$e*K3r8;OaP`5G#h)^T^%ggYn#=doOZAUj z3hUjD91rBSe(1ZIfHzX!Wp9}9r&an~2*Uqe8U%YOkYZsbW_yenHfzw_7Io^Y&8dKUkUt z4@FbL=OBWvBwS9$~WU2+4y%na2f)2Ra{Z(IGg}#Ptitp7#Ba1-ccK76Pxw zBwK-=(9Hs(VC|DpikrX?3eEF<9tGH61oG$9$$e(oP20-CztE_=d&L3=BqX?|vAf5N zO*El$KT@)fKZxP6Rkdo*R5$aXLD|P$OC6rGPmD_1P}U!o>G!=ZL z;&`mW`Gl31eDH{xm@~=VVTp3Ttvf|{9FbeJD!Cv6iq364(!25+h};nnN{IlLU!SE! z}L=6 z65gYu=}*KR_EWp4=+QPq?aXc8G2V%oHz7s*j8xu#B^6oQ124w=eKb}xSe$BpEkEoh z>ht|@W3b$T2P{KZ$?>zyPTL0fBf{>pW5|#^^Sck%dL`|>5%z?|(KY|pxi3?S423pg zLv4zr8jO}EMW%p`J6b#jupnk4rqFxVJ;WhZJvdqK)Ga=Y>Jdvtf6H!}!-Bxe%t5(A zrkzy1klpP^wY+RQzDwVCZ`78#d0P=1O7xP>yt&h)0;l2(!62Fk4kk8=P1k$QiFVB1ZA~grl&)<)0>xdA})j7Sw+#K zOoY}}jrISbRi}xw0?`IJRo_W5D10P;s0D+&CO*St+sk9J>A#5?8*qw`Zas>8Y(}<) z-sp+0Y$wbC_v-;uYg~gzh6^W&5FTujJ6izm)CII9D0u}xI#M1lSP zJw!%U5iAWm&hkLO@P5PUGJ47oUpEj}nzMV^hf3r63Jso`NBRt|)@QLlRqeb_d}#ER z{1Xf`It7>6%=4NVZ}>(uQN7a3XQ;G?=g!)}eu}FaC-x}Pk z@A86Zb)pve-Qy|{fY^1Y-XiTx|YVvvsK83veQY>ucnnF$Xe0Kcj}+d9tc*)^;J4Zv@|%n>#}qM9IM8 zo{MvZz~|$4vw*veXQ&Xn_|~rwj}HSPmz}fmUzgsPOL$#PnIBCPzJScy?V3E)h8_wV zK*@XUjT3icU9U6vI=*WuuuZ;EXom+1Q>ksP1Xv9Q5@vN)m2l=>wZ=^P9Tz=$1b;O( z@`qGew0?P?!pXwq!8WyH9|kE8Zajslc@I~wyzJR2CtRp->`$;BD67%9j5l|-n34cw zxy+(t-1mQD+zw+n+vkz?`W^8Ndt;W@#-D+%dmyO=SZ&>EhjK35j_XB(UTm}kO_~mB z^}tH@A!^IcG;0)Uq8WR`yx5e9ly0z4L%2E=Pt3vwQX6a?B(8%5SC>~!G}WDQ&ji`t z$A_8K)WM?YaWV;)0d#=PkE|DAjj?kzLbIp5tI%5$N}Se-dk7PkJQpwEXZNRKs40q8 z{*pazNKuy?SEd|yKj!h<_)U(|I?!^}C6K~aSxbI9f=qE8+tzt2bjb%G?vSXjud+EIbn4+QOg~FBzV@HZ_u=2gq#jZ1IK4T2;;NDY;H-0GI z6~F+?#*V{4FeDxm87k-QGxK-hOB;@r5to|)vMWnD*;!gJ`JWZVKk3^B{wD%RHAy;R zT5+V7GFlNb>?qbnA<*DY5ahQ|8I1M0yiSHuP6)J+s34<8kI)aupuWoHVoNnkf2whW zoK1Yt7}(a0-1~_mg9j%bkSD}ryw_0G=+UX@j%1K8(F(+Vod4(3Da95-%ZKtfOI{nr zSKOhMFWdY8i2n*3!kMq86Rc=?F%^0DOJyx}dXeQnJ(00yu!cgxNJP+0p$Orcfx79` zDj<+V@8i-v+J0p5oyj}KpK!o&_j^=G;1cld`O|~XVT{?yY`c>ruL{ofZ-#DZ<7{`* zi|mg=BsQ#9=h6V7#XLL8%PokC|Ie&;T4!30o*cz!KIf}}=tgdHkMu_g7()k)hOSRJ z$#c+Us1Q()x%9M%RgN#QM9ZCd8);Np%882ADZh%TzIeFCtFJo8Pdppi57t(Wy*7st zlnU}OPI0#MPK2;Hq!~vNQTonUB+z>c8pwsRi(_0B<{A?gJ$?#ll~^2n)hjrXONs2h zh6IA0_gPBQcQo#)i@Tnr#>lYkw~EDGol1ALWQXVtI;E{ru5gS{HCy}5W1(L090OI! zDsD5gc9ldo*JYa7-lcz$XrJ+IpX3C%TgYbYhjJTNJGN5S!(&i(H%Vit^q!^wJo!9% z^$oGebBHvrQ&{KiQ}w8BHhvjAn^#MintU*+&t3s(1v84C64AyH!w1I@O8je`si6{x zJ~6;tYz-ocX^Ls!kz@dqO2C(-pEu-HLq&BZS~NrLuXMkWb}x4d^av?cuPU-T3U-WN z?ABoIkH-cPtB=u{G@q6xN zWVRTMCRrUSUBJcxjRGVvy{_E}3Gcn>!tdOa?YWx7P=rkglP$(VYTqyqr6<;AhLe+a*AjfzZb`0Kt4A9!Rz}b)wy(a z4#Nsuh;j_FZ_oKi6&ZCIoNsd4mi5%GZXz-T)$>qlE1VJQO2O;u5)e$-md{ z-_~(F8_Ds`K`D`{l4*#Vq!3wj7_ojRT8-rnUc86dTUQ@YROE-g^VQL61J96 z**e{45u}=;>M(cUzmCPp z)usGSW*VB{vQW*JEfl)W)nmXWL0Rf4+^wQy*hr!Yi1Z2>$~yV>;R$VF5`5qZWbI6L zE9V&w^UEXew!N_(e;zI~*<*zb2|0%E>2L2mVxce1+gO)qkaY(h$zET9H3Wp*0^S7%1D4db`otVt2EZS@@5 zb3tv^rgHr@|DXj%yV-PS;)lC+O!6sLXVdfki!})zq%e=s_cE#$F~=586cgM+txGRc zZkRFRpmLB~I9U8FE%JqmnBy~T?on?z%}9goNIMB-Q+?|ic*}giQfLk}L_nR>yCgrB zSIRXyF$yBy{ag274F@x&C)E}zM36;cD-E&PK16hzYzZK62lz%To8A^OBc?vr;Hou4 zcv@e?G%^W1Prc4ytryrYzgXRoY%S1}d{pg&!tsu4lqm8GhbE3v6uRE(A*!ByWox>I z+7xOA*Zdnsju)C~WA2^HS@I#gh`}P10<}G3%%@@h!I{-A9_gygdx><9@6_&Spxa^s zx&~wd-ccFWL?aaBm16q{PanA|tZgGY#o?a9y++k7s-yc!7*vDL%R*G3Y>Q~x-$d5n|Aw1D)3&q6P0Yb11JgkTm&G80K(_uJ#& zPw;DFi>=>Iygkx-uQIWx^Fa@ls1&j3A=3D>ig<}^x36Wq5<)2u9EvVW9X%M#{a`m| zm&ZpzviSfhw24D+|AV~TDbdGlusIv?JIS<_fk&l)!bgk^3HoiQfkQ)e zf>o}uEM(LtPB^Ci-3ea#ON6MFr_{RI^Fng~mW0}^G1o|*E5ksm2reX`^%gnAe;9vk z5+a5o=if<7sV%gfwxcKl!FQa=7`u{=ib19=i!3MQhn0WXBoE-gjidDTa?Q8hj;_?2 zEgz;H|BPRH1VzYT_#Xeh}UI!>{1YD1hko$KN{MI)DnEnz^{1jE8!8%{)H!asxaDRM_8gOM#0QqO#Y5O)m z_v42Bc}Ds5UpACd@<%IfvJ<}jwxcd|P1vnSCnQ3c)8@*6!Luh8nTmPgwLx^qOxKX~ z4)9Vd3c0bd-K8@xfEhOzn72ylu4>}emmm|MV z5J1}}!?4~M-x>m_fE&_~XxtEk+pz9IhO?RIgFqnyn-z}00F}9^SEj#BBbRoB;i)=c z4of9(CKK34cL1jXs#qx2#I7?h2MSzgkK+Z#BPKYlL)fQJk3UHs5W5hbq$b|yueXm) z0j-rvme=biCDaQjJTq2Nq#63$O~j+f2M9#ofr&i&ZkUmkb|#ukv8GV~mI?d)tXMX# z!ia(fJr+r2JQ*-2iZyZ|qn9~&yJGTtE7Xbj_t_$|f48XS9X;rvz#i_KF$jV)%{nS? zL5+ox22#jJAD6)pMRnSj&Fyk6yRylRP1Alq~a7!dSo#S@z;F{-&dLv#$_OTJ(A8ltox$f&EMW`F)F40Idf zAd+}+?#sx;nuk80dQ<}J@ms2hvWdy(zo*2@-iMFsg!>tY@?ISU(IJ|Q-(^E4(VPl^ z61@Tw14cowjgFhEn>qgv{>O$s`d_KfJ{GS13{MXU^Ic&d8ywCg@QN}jqh2o3Ath|W z1p%uQrZ+K3+Ng?`yMHHtzETo_`YKVhSin|1SI~^}!^y=MMmmo42z{3iBMI#F@I|6c z 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 literal 11065 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 diff --git a/ios/expensify_chat_dev.mobileprovision.gpg b/ios/expensify_chat_dev.mobileprovision.gpg index 3b8b96b2c142d10604147becc43c7dadc4f47ed9..a1b0dc19290d990c174f394b83452eda9ddd951d 100644 GIT binary patch literal 11098 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 From da87d1bf51a038951b273ef116a6633d58bf9446 Mon Sep 17 00:00:00 2001 From: tienifr Date: Tue, 29 Aug 2023 23:25:01 +0700 Subject: [PATCH 022/275] fix: fail to request camera permission in scan receipt screen --- src/CONST.ts | 2 +- .../CameraPermission/index.android.js | 11 ++++++++++ .../CameraPermission/index.ios.js | 11 ++++++++++ .../ReceiptSelector/CameraPermission/index.js | 5 +++++ src/pages/iou/ReceiptSelector/index.native.js | 20 ++++++++++--------- 5 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 src/pages/iou/ReceiptSelector/CameraPermission/index.android.js create mode 100644 src/pages/iou/ReceiptSelector/CameraPermission/index.ios.js create mode 100644 src/pages/iou/ReceiptSelector/CameraPermission/index.js diff --git a/src/CONST.ts b/src/CONST.ts index 4cb4509e96a3..2bf787dcd0f6 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -454,7 +454,7 @@ const CONST = { }, RECEIPT: { ICON_SIZE: 164, - PERMISSION_AUTHORIZED: 'authorized', + PERMISSION_GRANTED: 'granted', HAND_ICON_HEIGHT: 152, HAND_ICON_WIDTH: 200, SHUTTER_SIZE: 90, diff --git a/src/pages/iou/ReceiptSelector/CameraPermission/index.android.js b/src/pages/iou/ReceiptSelector/CameraPermission/index.android.js new file mode 100644 index 000000000000..fb1d270fd592 --- /dev/null +++ b/src/pages/iou/ReceiptSelector/CameraPermission/index.android.js @@ -0,0 +1,11 @@ +import {PermissionsAndroid} from 'react-native'; + +function requestCameraPermission() { + return PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.CAMERA); +} + +function getCameraPermissionStatus() { + return PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.CAMERA); +} + +export {requestCameraPermission, getCameraPermissionStatus}; diff --git a/src/pages/iou/ReceiptSelector/CameraPermission/index.ios.js b/src/pages/iou/ReceiptSelector/CameraPermission/index.ios.js new file mode 100644 index 000000000000..3c24bfa10d6f --- /dev/null +++ b/src/pages/iou/ReceiptSelector/CameraPermission/index.ios.js @@ -0,0 +1,11 @@ +import {check, PERMISSIONS, request} from 'react-native-permissions'; + +function requestCameraPermission() { + return request(PERMISSIONS.IOS.CAMERA); +} + +function getCameraPermissionStatus() { + return check(PERMISSIONS.IOS.CAMERA); +} + +export {requestCameraPermission, getCameraPermissionStatus}; diff --git a/src/pages/iou/ReceiptSelector/CameraPermission/index.js b/src/pages/iou/ReceiptSelector/CameraPermission/index.js new file mode 100644 index 000000000000..4357b592d7ef --- /dev/null +++ b/src/pages/iou/ReceiptSelector/CameraPermission/index.js @@ -0,0 +1,5 @@ +function requestCameraPermission() {} + +function getCameraPermissionStatus() {} + +export {requestCameraPermission, getCameraPermissionStatus}; diff --git a/src/pages/iou/ReceiptSelector/index.native.js b/src/pages/iou/ReceiptSelector/index.native.js index 727cbb05d395..619d7c8945de 100644 --- a/src/pages/iou/ReceiptSelector/index.native.js +++ b/src/pages/iou/ReceiptSelector/index.native.js @@ -1,4 +1,4 @@ -import {ActivityIndicator, Alert, AppState, Linking, Text, View} from 'react-native'; +import {ActivityIndicator, Alert, AppState, Linking, PermissionsAndroid, Text, View} from 'react-native'; import React, {useCallback, useEffect, useRef, useState} from 'react'; import {Camera, useCameraDevices} from 'react-native-vision-camera'; import lodashGet from 'lodash/get'; @@ -21,6 +21,8 @@ import useLocalize from '../../../hooks/useLocalize'; import ONYXKEYS from '../../../ONYXKEYS'; import Log from '../../../libs/Log'; import participantPropTypes from '../../../components/participantPropTypes'; +import * as CameraPermission from './CameraPermission'; +import {RESULTS} from 'react-native-permissions'; const propTypes = { /** React Navigation route */ @@ -113,7 +115,7 @@ function ReceiptSelector(props) { useEffect(() => { const subscription = AppState.addEventListener('change', (nextAppState) => { if (appState.current.match(/inactive|background/) && nextAppState === 'active') { - Camera.getCameraPermissionStatus().then((permissionStatus) => { + CameraPermission.getCameraPermissionStatus().then((permissionStatus) => { setPermissions(permissionStatus); }); } @@ -156,11 +158,11 @@ function ReceiptSelector(props) { }; const askForPermissions = () => { - if (permissions === 'not-determined') { - Camera.requestCameraPermission().then((permissionStatus) => { + if (permissions === 'denied') { + CameraPermission.requestCameraPermission().then((permissionStatus) => { setPermissions(permissionStatus); }); - } else { + } else if (['blocked', 'never_ask_again'].includes(permissions)) { Linking.openSettings(); } }; @@ -219,13 +221,13 @@ function ReceiptSelector(props) { }); }, [flash, iouType, props.iou, props.report, reportID, translate]); - Camera.getCameraPermissionStatus().then((permissionStatus) => { + CameraPermission.getCameraPermissionStatus().then((permissionStatus) => { setPermissions(permissionStatus); }); return ( - {permissions !== CONST.RECEIPT.PERMISSION_AUTHORIZED && ( + {permissions !== CONST.RECEIPT.PERMISSION_GRANTED && ( )} - {permissions === CONST.RECEIPT.PERMISSION_AUTHORIZED && device == null && ( + {permissions === CONST.RECEIPT.PERMISSION_GRANTED && device == null && ( )} - {permissions === CONST.RECEIPT.PERMISSION_AUTHORIZED && device != null && ( + {permissions === CONST.RECEIPT.PERMISSION_GRANTED && device != null && ( Date: Tue, 29 Aug 2023 13:22:57 -0400 Subject: [PATCH 023/275] update image --- docs/assets/images/insights-chart.png | Bin 201605 -> 132716 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/assets/images/insights-chart.png b/docs/assets/images/insights-chart.png index 7b10c8c92d8d84d9e5e5dc6aae3f2b8c2984e89f..4b21b8d70a09bb56259677381b42f05f9b174e6d 100644 GIT binary patch literal 132716 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

dOTy?T~rDeh#gh4p@X$b1vj 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