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, }; } 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;