From c2135ebfca4b517770a4ba87be34fcb4ba602315 Mon Sep 17 00:00:00 2001 From: Jairo Calmon Date: Thu, 26 Mar 2026 12:27:47 -0300 Subject: [PATCH 1/2] Allow finishing adding existing personal cards --- .../PersonalCards/useGetNewPersonalCard.ts | 17 +++++++++-------- src/types/onyx/Card.ts | 3 +++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/pages/settings/Wallet/PersonalCards/useGetNewPersonalCard.ts b/src/pages/settings/Wallet/PersonalCards/useGetNewPersonalCard.ts index bc7dad042f6c..7280abba8bdb 100644 --- a/src/pages/settings/Wallet/PersonalCards/useGetNewPersonalCard.ts +++ b/src/pages/settings/Wallet/PersonalCards/useGetNewPersonalCard.ts @@ -17,14 +17,15 @@ export default function useGetNewPersonalCard() { prevCardListRef.current = cardList; return; } - const prevCardList = prevCardListRef.current; - const prevIds = new Set(Object.keys(prevCardList)); - const currentIds = Object.keys(cardList); - const newCardIds = currentIds.filter((id) => !prevIds.has(id)); - if (newCardIds.length > 0) { - for (const id of newCardIds) { - setNewCard(cardList[id]); - } + + // Find the first card that is either new or has a fresh import timestamp + const latestChange = Object.values(cardList).find(card => { + const prev = prevCardListRef.current?.[card.cardID]; + return !prev || card.lastImportAttempt !== prev.lastImportAttempt; + }); + + if (latestChange) { + setNewCard(latestChange); } prevCardListRef.current = cardList; diff --git a/src/types/onyx/Card.ts b/src/types/onyx/Card.ts index 57cec8f15510..ad421678c53f 100644 --- a/src/types/onyx/Card.ts +++ b/src/types/onyx/Card.ts @@ -105,6 +105,9 @@ type Card = OnyxCommon.OnyxValueWithOfflineFeedback<{ /** Last update result */ lastScrapeResult?: number; + /** Last import attempt */ + lastImportAttempt?: string; + /** Card related error messages */ errors?: OnyxCommon.Errors; From b572052fded24a452e3b19a41c8b63c5e2d46618 Mon Sep 17 00:00:00 2001 From: Jairo Calmon Date: Thu, 26 Mar 2026 13:26:12 -0300 Subject: [PATCH 2/2] Adjust search for plaid connected feeds --- src/libs/CardUtils.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libs/CardUtils.ts b/src/libs/CardUtils.ts index fe897595e1b9..ad5cba281f0c 100644 --- a/src/libs/CardUtils.ts +++ b/src/libs/CardUtils.ts @@ -971,8 +971,12 @@ function checkIfNewFeedConnected(prevFeedsData: CompanyFeeds, currentFeedsData: const prevFeeds = Object.keys(prevFeedsData); const currentFeeds = Object.keys(currentFeedsData); + const plaidBankFound = plaidBank && (currentFeeds.includes(`${CONST.BANK_ACCOUNT.SETUP_TYPE.PLAID}.${plaidBank}`) || currentFeeds.find(feed => { + return splitCardFeedWithDomainID(feed as CompanyCardFeedWithDomainID)?.feedName === `${CONST.BANK_ACCOUNT.SETUP_TYPE.PLAID}.${plaidBank}`; + })); + return { - isNewFeedConnected: currentFeeds.length > prevFeeds.length || (plaidBank && currentFeeds.includes(`${CONST.BANK_ACCOUNT.SETUP_TYPE.PLAID}.${plaidBank}`)), + isNewFeedConnected: currentFeeds.length > prevFeeds.length || plaidBankFound, newFeed: currentFeeds.find((feed) => !prevFeeds.includes(feed)) as CompanyCardFeedWithDomainID | undefined, }; }