Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
804302b
Feat: Locked account
MrMuzyk Aug 25, 2025
a88a70c
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Aug 26, 2025
a9ad749
small fixes
MrMuzyk Aug 26, 2025
646de8e
fix: narrow down to business accounts
MrMuzyk Aug 26, 2025
5334e39
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Aug 26, 2025
e433735
fix: ts
MrMuzyk Aug 26, 2025
b7b358b
fix: doubled key
MrMuzyk Aug 26, 2025
be895d1
fix: all betas
MrMuzyk Aug 26, 2025
20bf3e5
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Aug 29, 2025
a20186a
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Sep 29, 2025
51d6eff
fix: checks
MrMuzyk Sep 29, 2025
f9041a9
fix: submodule version
MrMuzyk Sep 29, 2025
cd64b0d
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Oct 16, 2025
76ee8d6
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Dec 12, 2025
cfc1086
feat: param updates
MrMuzyk Dec 15, 2025
58ef1d5
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Dec 15, 2025
ceda834
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Jan 21, 2026
71dc8ee
fix: after testing
MrMuzyk Jan 22, 2026
1a3cca1
fix: corrections
MrMuzyk Jan 22, 2026
886eb35
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Jan 22, 2026
14a9399
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Jan 22, 2026
1dce1ed
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Jan 29, 2026
197864f
fix: move the check
MrMuzyk Jan 29, 2026
2f627fa
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Jan 29, 2026
bff67b0
fix: ts
MrMuzyk Jan 29, 2026
4c86fb7
fix: deps
MrMuzyk Jan 29, 2026
3cae581
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 3, 2026
a222d23
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 11, 2026
cd0ea29
fix: prettier
MrMuzyk Feb 11, 2026
de5ce0e
fix: do not navigate if locked account
MrMuzyk Feb 11, 2026
80d274d
fix: ts
MrMuzyk Feb 16, 2026
8fb2d53
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 18, 2026
9f9fc06
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 18, 2026
be0cc31
fix: TS and RBR dots
MrMuzyk Feb 18, 2026
41b23e5
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 19, 2026
7dc618a
fix: ts
MrMuzyk Feb 19, 2026
47498be
fix: show locked account to other admins
MrMuzyk Feb 19, 2026
0c15685
fix: Optimistically update concierge chat before unlock API calls pas…
MrMuzyk Feb 20, 2026
f0fe86f
fix: show connected locked account in settlement button and split button
MrMuzyk Feb 20, 2026
1f1bed0
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 20, 2026
008c96a
fix: redundant set
MrMuzyk Feb 20, 2026
864da8b
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 24, 2026
de2a1ad
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 25, 2026
114b736
fix: prettier
MrMuzyk Feb 25, 2026
09aa922
fix: do not show bottom sheet menu
MrMuzyk Feb 25, 2026
63c50d7
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Feb 25, 2026
a5a9e92
fix: spanish translation
MrMuzyk Feb 25, 2026
6d8c433
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 2, 2026
a97b736
fix: import and prettier
MrMuzyk Mar 2, 2026
ed9d417
fix: cr fixes
MrMuzyk Mar 2, 2026
e363262
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 4, 2026
b15a80f
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 5, 2026
9740d75
fix: code review fixes
MrMuzyk Mar 5, 2026
d7f0a99
fix: do not allow to connect existing locked accounts
MrMuzyk Mar 5, 2026
d88f17e
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 5, 2026
6c9e140
fix: ts
MrMuzyk Mar 5, 2026
f291d43
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 5, 2026
fe021b9
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 6, 2026
bb5ab98
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 6, 2026
da7e11b
fix: render html link in the prompt
MrMuzyk Mar 6, 2026
5b468e9
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 11, 2026
8ddf9af
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 13, 2026
8f919a2
fix: rebased changes
MrMuzyk Mar 13, 2026
8f1393f
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 17, 2026
467b294
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 19, 2026
18c0db1
fix: params
MrMuzyk Mar 19, 2026
0de39f9
fix: optimistic unlock message
MrMuzyk Mar 19, 2026
1410703
fix: prettier
MrMuzyk Mar 19, 2026
3b1f63d
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 19, 2026
4e32870
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 19, 2026
1192ec0
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 20, 2026
de07045
fix: show connected locked account
MrMuzyk Mar 20, 2026
b39063a
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 23, 2026
43ece19
fix: modal on native
MrMuzyk Mar 23, 2026
037cfe9
Merge branch 'main' of https://github.com/Expensify/App into feat/660…
MrMuzyk Mar 23, 2026
1d1a33d
fix: prettier
MrMuzyk Mar 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1127,6 +1127,7 @@ const CONST = {
DOMAIN_VERIFICATION_HELP_URL: 'https://help.expensify.com/articles/new-expensify/workspaces/Claim-and-Verify-a-Domain',
SAML_HELP_URL: 'https://help.expensify.com/articles/expensify-classic/domains/Set-Up-SAML-SSO',
REGISTER_FOR_WEBINAR_URL: 'https://events.zoom.us/eo/Aif1I8qCi1GZ7KnLnd1vwGPmeukSRoPjFpyFAZ2udQWn0-B86e1Z~AggLXsr32QYFjq8BlYLZ5I06Dg',
UNLOCK_BANK_ACCOUNT_HELP_URL: 'https://help.expensify.com/articles/new-expensify/wallet-and-payments/Unlock-a-Business-Bank-Account',
TEST_RECEIPT_URL: `${CLOUDFRONT_URL}/images/fake-receipt__tacotodds.png`,
// Use Environment.getEnvironmentURL to get the complete URL with port number
DEV_NEW_EXPENSIFY_URL: 'https://dev.new.expensify.com:',
Expand Down Expand Up @@ -8245,6 +8246,7 @@ const CONST = {
HAS_EMPLOYEE_CARD_FEED_ERRORS: 'hasEmployeeCardFeedErrors',
HAS_POLICY_ADMIN_CARD_FEED_ERRORS: 'hasPolicyAdminCardFeedErrors',
HAS_DOMAIN_ERRORS: 'hasDomainErrors',
HAS_LOCKED_BANK_ACCOUNT: 'hasLockedBankAccount',
Copy link
Contributor

@dominictb dominictb Mar 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BUG

(Minor)

Let's add the message for this error in the debug tool here and here. Currently it shows nothing:

Image

},

DEBUG: {
Expand Down
4 changes: 4 additions & 0 deletions src/ONYXKEYS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -649,6 +649,9 @@ const ONYXKEYS = {
/** Is unreported transactions loading */
IS_LOADING_UNREPORTED_TRANSACTIONS: 'isLoadingUnreportedTransactions',

/** Stores information for InitiateBankAccountUnlock API call */
INITIATING_BANK_ACCOUNT_UNLOCK: 'initiatingBankAccountUnlock',

/** List of transaction IDs used when navigating to prev/next transaction when viewing it in RHP */
TRANSACTION_THREAD_NAVIGATION_TRANSACTION_IDS: 'transactionThreadNavigationTransactionIDs',

Expand Down Expand Up @@ -1456,6 +1459,7 @@ type OnyxValuesMapping = {
[ONYXKEYS.IS_COMING_FROM_GLOBAL_REIMBURSEMENTS_FLOW]: boolean | undefined;
[ONYXKEYS.HAS_MORE_UNREPORTED_TRANSACTIONS_RESULTS]: boolean | undefined;
[ONYXKEYS.IS_LOADING_UNREPORTED_TRANSACTIONS]: boolean | undefined;
[ONYXKEYS.INITIATING_BANK_ACCOUNT_UNLOCK]: OnyxTypes.InitiatingBankAccountUnlock;
[ONYXKEYS.NVP_LAST_ECASH_IOS_LOGIN]: string;
[ONYXKEYS.NVP_LAST_ECASH_ANDROID_LOGIN]: string;
[ONYXKEYS.NVP_LAST_IPHONE_LOGIN]: string;
Expand Down
5 changes: 5 additions & 0 deletions src/components/KYCWall/BaseKYCWall.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,11 @@ function KYCWall({
return;
}

// If user has a locked account we exit early
if (policy !== undefined && policy?.achAccount?.state === CONST.BANK_ACCOUNT.STATE.LOCKED) {
return;
}

if (policy?.id !== undefined && doesPolicyHavePartiallySetupBankAccount(bankAccountList, policy.id)) {
navigateToBankAccountRoute({policyID: policy.id});
return;
Expand Down
5 changes: 5 additions & 0 deletions src/components/MenuItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ type MenuItemBaseProps = ForwardedFSClassProps &
/** Whether the badge should use condensed (smaller) sizing */
isBadgeCondensed?: boolean;

/** Whether the badge should be shown as error */
isBadgeError?: boolean;

/** Callback to fire when the badge is pressed */
onBadgePress?: (event?: GestureResponderEvent | KeyboardEvent) => void;

Expand Down Expand Up @@ -461,6 +464,7 @@ function MenuItem({
isBadgeSuccess,
isBadgeStrong,
isBadgeCondensed,
isBadgeError,
onBadgePress,
shouldShowBadgeInSeparateRow = false,
shouldShowBadgeBelow = false,
Expand Down Expand Up @@ -1024,6 +1028,7 @@ function MenuItem({
success={isBadgeSuccess}
isStrong={isBadgeStrong}
isCondensed={isBadgeCondensed}
error={isBadgeError}
onPress={onBadgePress}
pressable={!!onBadgePress}
/>
Expand Down
4 changes: 4 additions & 0 deletions src/components/Navigation/DebugTabView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ function getSettingsMessage(status: IndicatorStatus | undefined): TranslationPat
return 'debug.indicatorStatus.theresAProblemWithYourWallet';
case CONST.INDICATOR_STATUS.HAS_WALLET_TERMS_ERRORS:
return 'debug.indicatorStatus.theresAProblemWithYourWalletTerms';
case CONST.INDICATOR_STATUS.HAS_LOCKED_BANK_ACCOUNT:
return 'debug.indicatorStatus.aBankAccountIsLocked';
default:
return undefined;
}
Expand Down Expand Up @@ -94,6 +96,8 @@ function getSettingsRoute(status: IndicatorStatus | undefined, reimbursementAcco
return ROUTES.SETTINGS_WALLET;
case CONST.INDICATOR_STATUS.HAS_WALLET_TERMS_ERRORS:
return ROUTES.SETTINGS_WALLET;
case CONST.INDICATOR_STATUS.HAS_LOCKED_BANK_ACCOUNT:
return ROUTES.SETTINGS_WALLET;
default:
return undefined;
}
Expand Down
60 changes: 57 additions & 3 deletions src/components/SettlementButton/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {hasSeenTourSelector} from '@selectors/Onboarding';
import truncate from 'lodash/truncate';
import React, {useCallback, useContext} from 'react';
import type {GestureResponderEvent} from 'react-native';
import {View} from 'react-native';
import type {TupleToUnion} from 'type-fest';
import ButtonWithDropdownMenu from '@components/ButtonWithDropdownMenu';
import type {DropdownOption} from '@components/ButtonWithDropdownMenu/types';
Expand All @@ -11,7 +12,10 @@ import KYCWall from '@components/KYCWall';
import {KYCWallContext} from '@components/KYCWall/KYCWallContext';
import type {ContinueActionParams, PaymentMethod} from '@components/KYCWall/types';
import {useLockedAccountActions, useLockedAccountState} from '@components/LockedAccountModalProvider';
import {ModalActions} from '@components/Modal/Global/ModalContext';
import RenderHTML from '@components/RenderHTML';
import useActiveAdminPolicies from '@hooks/useActiveAdminPolicies';
import useConfirmModal from '@hooks/useConfirmModal';
import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails';
import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
import useLocalize from '@hooks/useLocalize';
Expand Down Expand Up @@ -40,8 +44,9 @@ import {
import {handleUnvalidatedUserNavigation, useSettlementButtonPaymentMethods} from '@libs/SettlementButtonUtils';
import shouldPopoverUseScrollView from '@libs/shouldPopoverUseScrollView';
import {shouldRestrictUserBillableActions} from '@libs/SubscriptionUtils';
import {setPersonalBankAccountContinueKYCOnSuccess} from '@userActions/BankAccounts';
import {pressLockedBankAccount, setPersonalBankAccountContinueKYCOnSuccess} from '@userActions/BankAccounts';
import {approveMoneyRequest} from '@userActions/IOU';
import {navigateToConciergeChat} from '@userActions/Report';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
Expand Down Expand Up @@ -135,6 +140,7 @@ function SettlementButton({
const activeAdminPolicies = useActiveAdminPolicies();
const reportID = iouReport?.reportID;
const personalPolicy = usePolicy(personalPolicyID);
const {accountID: currentUserAccountID} = useCurrentUserPersonalDetails();

const hasPreferredPaymentMethod = !!lastPaymentMethod;
const lastPaymentPolicy = usePolicy(lastPaymentMethod);
Expand All @@ -146,7 +152,11 @@ function SettlementButton({
const hasSinglePolicy = !isExpenseReport && activeAdminPolicies.length === 1;
const hasMultiplePolicies = !isExpenseReport && activeAdminPolicies.length > 1;
const formattedPaymentMethods = formatPaymentMethods(bankAccountList ?? {}, fundList ?? {}, styles, translate);
const hasIntentToPay = ((formattedPaymentMethods.length === 1 && isIOUReport(iouReport)) || policy?.achAccount?.state === CONST.BANK_ACCOUNT.STATE.OPEN) && !lastPaymentMethod;
const hasIntentToPay =
((formattedPaymentMethods.length === 1 && isIOUReport(iouReport)) ||
policy?.achAccount?.state === CONST.BANK_ACCOUNT.STATE.OPEN ||
policy?.achAccount?.state === CONST.BANK_ACCOUNT.STATE.LOCKED) &&
!lastPaymentMethod;
const {isBetaEnabled} = usePermissions();
const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED);
const [isSelfTourViewed] = useOnyx(ONYXKEYS.NVP_ONBOARDING, {selector: hasSeenTourSelector});
Expand All @@ -164,8 +174,10 @@ function SettlementButton({
const {isDelegateAccessRestricted} = useDelegateNoAccessState();
const {showDelegateNoAccessModal} = useDelegateNoAccessActions();
const kycWallRef = useContext(KYCWallContext);
const {showConfirmModal} = useConfirmModal();
const shouldShowPayWithExpensifyOption = !shouldHidePaymentOptions;
const shouldShowPayElsewhereOption = !shouldHidePaymentOptions && !isInvoiceReport;
const isBankAccountLocked = policy?.achAccount?.state === CONST.BANK_ACCOUNT.STATE.LOCKED;

function getLatestPersonalBankAccount() {
return formattedPaymentMethods.filter((ba) => (ba.accountData as AccountData)?.type === CONST.BANK_ACCOUNT.TYPE.PERSONAL);
Expand All @@ -187,13 +199,55 @@ function SettlementButton({
return true;
}

if (isBankAccountLocked) {
showConfirmModal({
title: translate('bankAccount.lockedBankAccount'),
prompt: (
<View style={[styles.renderHTML, styles.flexRow]}>
<RenderHTML html={translate('bankAccount.youCantPayThis')} />
</View>
),
confirmText: translate('bankAccount.unlockBankAccount'),
cancelText: translate('common.cancel'),
}).then(({action}) => {
if (action !== ModalActions.CONFIRM) {
return;
}
if (policy?.achAccount?.bankAccountID === undefined) {
return;
}
pressLockedBankAccount(policy?.achAccount?.bankAccountID, translate, conciergeReportID);
navigateToConciergeChat(conciergeReportID, introSelected, currentUserAccountID);
});
return true;
}

if (policy && shouldRestrictUserBillableActions(policy.id, userBillingGraceEndPeriods, undefined, ownerBillingGraceEndPeriod)) {
Navigation.navigate(ROUTES.RESTRICTED_ACTION.getRoute(policy.id));
return true;
}

return false;
}, [isDelegateAccessRestricted, showDelegateNoAccessModal, isAccountLocked, showLockedAccountModal, isUserValidated, chatReportID, reportID, policy, userBillingGraceEndPeriods]);
}, [
isDelegateAccessRestricted,
isAccountLocked,
isUserValidated,
isBankAccountLocked,
policy,
userBillingGraceEndPeriods,
ownerBillingGraceEndPeriod,
showDelegateNoAccessModal,
showLockedAccountModal,
chatReportID,
reportID,
showConfirmModal,
translate,
conciergeReportID,
introSelected,
currentUserAccountID,
styles.renderHTML,
styles.flexRow,
]);

const shortFormPayElsewhereButton = {
text: translate('iou.pay'),
Expand Down
23 changes: 23 additions & 0 deletions src/hooks/useBankAccountUnlockEffect.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import {useEffect} from 'react';
import type {OnyxEntry} from 'react-native-onyx';
import {isConciergeChatReport} from '@libs/ReportUtils';
import {initiateBankAccountUnlock} from '@userActions/BankAccounts';
import ONYXKEYS from '@src/ONYXKEYS';
import type {Report} from '@src/types/onyx';
import useOnyx from './useOnyx';

function useBankAccountUnlockEffect(report: OnyxEntry<Report> | undefined) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder why we need this hook. Can't we just call the API wherever pressedOnLockedBankAccount is?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few reasons, we need to set optimistic message, navigate user to the chat and avoid race condition and duplicated calls.

const [initiatingBankAccountUnlock] = useOnyx(ONYXKEYS.INITIATING_BANK_ACCOUNT_UNLOCK);
const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID);

useEffect(() => {
if (!isConciergeChatReport(report) || !initiatingBankAccountUnlock?.bankAccountIDToUnlock) {
return;
}
initiateBankAccountUnlock(initiatingBankAccountUnlock.bankAccountIDToUnlock, conciergeReportID ?? undefined, initiatingBankAccountUnlock.optimisticReportActionID);
// We only want to re-fire when reportID changes, not on every report field update
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [initiatingBankAccountUnlock?.bankAccountIDToUnlock, report?.reportID]);
}

export default useBankAccountUnlockEffect;
1 change: 1 addition & 0 deletions src/hooks/useNavigationTabBarIndicatorChecks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ function useNavigationTabBarIndicatorChecks(): NavigationTabBarChecksResult {
[CONST.INDICATOR_STATUS.HAS_WALLET_TERMS_ERRORS]: Object.keys(walletTerms?.errors ?? {}).length > 0 && !walletTerms?.chatReportID,
[CONST.INDICATOR_STATUS.HAS_PHONE_NUMBER_ERROR]: !!privatePersonalDetails?.errorFields?.phoneNumber,
[CONST.INDICATOR_STATUS.HAS_EMPLOYEE_CARD_FEED_ERRORS]: !isPolicyAdmin ? hasCompanyCardFeedErrors : false,
[CONST.INDICATOR_STATUS.HAS_LOCKED_BANK_ACCOUNT]: Object.values(bankAccountList ?? {}).some((bankAccount) => bankAccount?.accountData?.state === CONST.BANK_ACCOUNT.STATE.LOCKED),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's update unit test for this new error in useIndicatorStatusTest.tsx and useAccountTabIndicatorStatusTest.ts

};

const infoChecks: Partial<Record<IndicatorStatus, boolean>> = {
Expand Down
4 changes: 2 additions & 2 deletions src/hooks/useSearchPageSetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,17 @@
return;
}
search({queryJSON, searchKey: currentSearchKey, offset: 0, shouldCalculateTotals, isLoading: false});
}, [hash, isOffline, shouldUseLiveData, queryJSON]);

Check warning on line 53 in src/hooks/useSearchPageSetup.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

React Hook useEffect has missing dependencies: 'currentSearchKey', 'currentSearchResults', and 'shouldCalculateTotals'. Either include them or remove the dependency array

Check warning on line 53 in src/hooks/useSearchPageSetup.ts

View workflow job for this annotation

GitHub Actions / ESLint check

React Hook useEffect has missing dependencies: 'currentSearchKey', 'currentSearchResults', and 'shouldCalculateTotals'. Either include them or remove the dependency array

useEffect(() => {
openSearch({includePartiallySetupBankAccounts: true});
openSearch();
}, []);

useEffect(() => {
if (!prevIsOffline || isOffline) {
return;
}
openSearch({includePartiallySetupBankAccounts: true});
openSearch();
}, [isOffline, prevIsOffline]);
}

Expand Down
8 changes: 8 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3275,6 +3275,13 @@ ${
`Ups! Es scheint, dass die Währung deines Arbeitsbereichs auf eine andere Währung als USD eingestellt ist. Um fortzufahren, gehe bitte zu <a href="${workspaceRoute}">deinen Arbeitsbereichseinstellungen</a>, stelle sie auf USD ein und versuche es erneut.`,
bbaAdded: 'Geschäftsbankkonto hinzugefügt!',
bbaAddedDescription: 'Es ist bereit, für Zahlungen verwendet zu werden.',
lockedBankAccount: 'Gesperrtes Bankkonto',
unlockBankAccount: 'Bankkonto entsperren',
youCantPayThis: `Du kannst diesen Bericht nicht bezahlen, weil du ein <a href="${CONST.UNLOCK_BANK_ACCOUNT_HELP_URL}">gesperrtes Bankkonto</a> hast. Tippe unten und der Concierge hilft dir bei den nächsten Schritten zur Entsperrung.`,
htmlUnlockMessage: (maskedAccountNumber: string) =>
`<h1>Expensify Business Bank Account ${maskedAccountNumber}</h1><p>Vielen Dank für Ihre Anfrage zur Entsperrung Ihres Bankkontos. Auszahlungsanfragen können aufgrund unzureichender Deckung oder weil das Bankkonto nicht für Lastschriften aktiviert wurde, abgelehnt werden. Wir werden Ihren Fall prüfen und uns bei Ihnen melden, falls wir weitere Informationen zur Lösung dieses Problems benötigen.</p>`,
textUnlockMessage: (maskedAccountNumber: string) =>
`Expensify Business Bank Account ${maskedAccountNumber}\nVielen Dank für Ihre Anfrage zur Entsperrung Ihres Bankkontos. Auszahlungsanfragen können aufgrund unzureichender Deckung oder weil das Bankkonto nicht für Lastschriften aktiviert wurde, abgelehnt werden. Wir werden Ihren Fall prüfen und uns bei Ihnen melden, falls wir weitere Informationen zur Lösung dieses Problems benötigen.`,
error: {
youNeedToSelectAnOption: 'Bitte wählen Sie eine Option, um fortzufahren',
noBankAccountAvailable: 'Leider ist kein Bankkonto verfügbar',
Expand Down Expand Up @@ -8452,6 +8459,7 @@ Fordern Sie Spesendetails wie Belege und Beschreibungen an, legen Sie Limits und
theresWasAProblemDuringAWorkspaceConnectionSync: 'Während der Synchronisierung der Workspace-Verbindung ist ein Problem aufgetreten',
theresAProblemWithYourWallet: 'Es gibt ein Problem mit deinem Wallet',
theresAProblemWithYourWalletTerms: 'Es gibt ein Problem mit deinen Wallet-Bedingungen',
aBankAccountIsLocked: 'Ein Bankkonto ist gesperrt',
},
},
emptySearchView: {
Expand Down
8 changes: 8 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3331,6 +3331,13 @@ const translations = {
`Oops! It appears that your workspace currency is set to a different currency than USD. To proceed, please go to <a href="${workspaceRoute}">your workspace settings</a> to set it to USD and try again.`,
bbaAdded: 'Business bank account added!',
bbaAddedDescription: "It's ready to be used for payments.",
lockedBankAccount: 'Locked bank account',
unlockBankAccount: 'Unlock bank account',
youCantPayThis: `You can't pay this report because you have a <a href="${CONST.UNLOCK_BANK_ACCOUNT_HELP_URL}">locked bank account</a>. Tap below and Concierge will help with the next steps to unlock it.`,
htmlUnlockMessage: (maskedAccountNumber: string) =>
`<h1>Expensify Business Bank Account ${maskedAccountNumber}</h1><p>Thank you for submitting a request to unlock your bank account. Withdrawal requests can be rejected due to insufficient funds, or if the bank account has not been enabled for direct debit. We will review your case and reach out to you if we need anything else to resolve this issue.</p>`,
textUnlockMessage: (maskedAccountNumber: string) =>
`Expensify Business Bank Account ${maskedAccountNumber}\nThank you for submitting a request to unlock your bank account. Withdrawal requests can be rejected due to insufficient funds, or if the bank account has not been enabled for direct debit. We will review your case and reach out to you if we need anything else to resolve this issue.`,
error: {
youNeedToSelectAnOption: 'Please select an option to proceed',
noBankAccountAvailable: "Sorry, there's no bank account available",
Expand Down Expand Up @@ -8433,6 +8440,7 @@ const translations = {
theresWasAProblemDuringAWorkspaceConnectionSync: 'There was a problem during a workspace connection sync',
theresAProblemWithYourWallet: "There's a problem with your wallet",
theresAProblemWithYourWalletTerms: "There's a problem with your wallet terms",
aBankAccountIsLocked: 'A bank account is locked',
},
},
emptySearchView: {
Expand Down
Loading
Loading