Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
389274d
Add "Assign new cards" option in feed settings for direct feeds
fedirjh Mar 5, 2026
5cc297b
Add refresh card feed connection route and page for direct feeds
fedirjh Mar 5, 2026
adfff16
Add refresh connection success messages and update related components
fedirjh Mar 5, 2026
85e432c
Refactor navigation logic for broken feed connections in BankConnecti…
fedirjh Mar 5, 2026
f4d3bca
Merge branch 'main' into sync-card-feed-on-demand
fedirjh Mar 5, 2026
1a07661
Add new card assignment and connection refresh messages in multiple l…
fedirjh Mar 5, 2026
8dd5494
Refactor PlaidConnectionStep component for improved readability
fedirjh Mar 5, 2026
30fbb7a
Update WorkspaceCompanyCardsSettingsPage to include Sync icon in card…
fedirjh Mar 5, 2026
32e4214
Add RefreshCardFeedConnection test suite for comprehensive coverage
fedirjh Mar 5, 2026
72012ac
Merge branch 'Expensify:main' into sync-card-feed-on-demand
fedirjh Mar 5, 2026
1329a71
Refactor BankConnection component to update broken connection handling
fedirjh Mar 6, 2026
de1c971
Merge branch 'Expensify:main' into sync-card-feed-on-demand
fedirjh Mar 9, 2026
4d71858
Refactor Remove deprecated canBeMissing
fedirjh Mar 9, 2026
42ac003
Add useBankConnection hook and openBankConnection utility for managin…
fedirjh Mar 9, 2026
5f78cb3
Refactor BankConnection component to utilize useBankConnection hook f…
fedirjh Mar 9, 2026
055cf33
Enhance card connection pages by integrating useUpdateFeedBrokenConne…
fedirjh Mar 9, 2026
4317669
Refactor RefreshCardFeedConnection tests to rename callback from onRe…
fedirjh Mar 9, 2026
e670201
Merge branch 'Expensify:main' into sync-card-feed-on-demand
fedirjh Mar 9, 2026
c33f43f
Refactor useBankConnection hook to replace state with useRef for shou…
fedirjh Mar 9, 2026
479b93f
Refactor BankConnection and RefreshCardFeedConnectionPage components …
fedirjh Mar 9, 2026
8cc0d47
Merge branch 'Expensify:main' into sync-card-feed-on-demand
fedirjh Mar 9, 2026
3f3e143
Refactor BankConnection component to streamline state management and …
fedirjh Mar 10, 2026
9efbcd4
Move refresh success confirmation into BankConnection and derive comp…
fedirjh Mar 10, 2026
6b3abae
Simplify useBankConnection: derive refresh state, extract shared vari…
fedirjh Mar 10, 2026
7b415d8
Merge remote-tracking branch 'upstream' into sync-card-feed-on-demand
fedirjh Mar 10, 2026
e67ea5a
Refactor RefreshCardFeedConnectionPage and BankConnection components …
fedirjh Mar 10, 2026
dec2e7f
Add route generation test for RefreshCardFeedConnection
fedirjh Mar 10, 2026
8049b76
Merge branch 'Expensify:main' into sync-card-feed-on-demand
fedirjh Mar 10, 2026
1f052dc
Fix: Prettier import ordering in BankConnection/index.native.tsx
MelvinBot Mar 10, 2026
8f78669
Merge remote-tracking branch 'origin/main' into sync-card-feed-on-demand
MelvinBot Mar 11, 2026
3cf060b
feat: add previous feed expiration state tracking in useBankConnection
fedirjh Mar 12, 2026
7f0eadc
Merge branch 'Expensify:main' into sync-card-feed-on-demand
fedirjh Mar 12, 2026
0336129
Merge branch 'Expensify:main' into sync-card-feed-on-demand
fedirjh Mar 13, 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
4 changes: 4 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2455,6 +2455,10 @@ const ROUTES = {
route: 'workspaces/:policyID/company-cards/:feed/broken-card-feed-connection',
getRoute: (policyID: string, feed: CompanyCardFeedWithDomainID) => `workspaces/${policyID}/company-cards/${encodeURIComponent(feed)}/broken-card-feed-connection` as const,
},
WORKSPACE_COMPANY_CARDS_REFRESH_CARD_FEED_CONNECTION: {
route: 'workspaces/:policyID/company-cards/:feed/refresh-card-feed-connection',
getRoute: (policyID: string, feed: CompanyCardFeedWithDomainID) => `workspaces/${policyID}/company-cards/${encodeURIComponent(feed)}/refresh-card-feed-connection` as const,
},
WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE: {
route: 'workspaces/:policyID/company-cards/:feed/assign-card/:cardID/assignee',
getRoute: (params: WorkspaceCompanyCardsAssignCardParams, backTo?: string) =>
Expand Down
1 change: 1 addition & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@ const SCREENS = {
PROFILE: 'Workspace_Overview',
COMPANY_CARDS: 'Workspace_CompanyCards',
COMPANY_CARDS_BROKEN_CARD_FEED_CONNECTION: 'Workspace_CompanyCards_BrokenCardFeedConnection',
COMPANY_CARDS_REFRESH_CARD_FEED_CONNECTION: 'Workspace_CompanyCards_RefreshCardFeedConnection',
COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE: 'Workspace_CompanyCards_AssignCard_Assignee',
COMPANY_CARDS_ASSIGN_CARD_BANK_CONNECTION: 'Workspace_CompanyCards_AssignCard_Bank_Connection',
COMPANY_CARDS_ASSIGN_CARD_PLAID_CONNECTION: 'Workspace_CompanyCards_AssignCard_Plaid_Connection',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5412,6 +5412,10 @@ _Für ausführlichere Anweisungen [besuchen Sie unsere Hilfeseite](${CONST.NETSU
removeCardFeed: 'Kartenfeed entfernen',
removeCardFeedTitle: (feedName: string) => `${feedName}-Feed entfernen`,
removeCardFeedDescription: 'Möchtest du diesen Kartenfeed wirklich entfernen? Dadurch werden alle Karten zugewiesen.',
assignNewCards: 'Neue Karten zuweisen',
assignNewCardsDescription: 'Die neuesten Karten von deiner Bank zum Zuweisen abrufen',
refreshConnectionSuccess: 'Verbindung aktualisiert',
refreshConnectionSuccessDescription: 'Deine Bankverbindung wurde erfolgreich erneut authentifiziert. Du kannst jetzt neue Karten zuweisen.',
error: {
feedNameRequired: 'Name des Kartenfeeds ist erforderlich',
statementCloseDateRequired: 'Bitte wählen Sie ein Abrechnungsenddatum aus.',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5396,6 +5396,10 @@ const translations = {
removeCardFeed: 'Remove card feed',
removeCardFeedTitle: (feedName: string) => `Remove ${feedName} feed`,
removeCardFeedDescription: 'Are you sure you want to remove this card feed? This will unassign all cards.',
assignNewCards: 'Assign new cards',
assignNewCardsDescription: 'Get the latest cards to assign from your bank',
refreshConnectionSuccess: 'Connection refreshed',
refreshConnectionSuccessDescription: 'Your bank connection has been re-authenticated successfully. You can now assign new cards.',
error: {
feedNameRequired: 'Card feed name is required',
statementCloseDateRequired: 'Please select a statement close date.',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5250,6 +5250,10 @@ ${amount} para ${merchant} - ${date}`,
removeCardFeed: 'Quitar la alimentación de tarjetas',
removeCardFeedTitle: (feedName) => `Eliminar el feed de ${feedName}`,
removeCardFeedDescription: '¿Estás seguro de que deseas eliminar esta fuente de tarjetas? Esto anulará la asignación de todas las tarjetas.',
assignNewCards: 'Asignar nuevas tarjetas',
assignNewCardsDescription: 'Obtén las últimas tarjetas de tu banco para asignar',
refreshConnectionSuccess: 'Conexión actualizada',
refreshConnectionSuccessDescription: 'La conexión con tu banco ha sido reautenticada exitosamente. Ahora puedes asignar nuevas tarjetas.',
error: {
feedNameRequired: 'Se requiere el nombre de la fuente de la tarjeta',
statementCloseDateRequired: 'Por favor, selecciona una fecha de cierre del estado de cuenta.',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5431,6 +5431,10 @@ _Pour des instructions plus détaillées, [visitez notre site d’aide](${CONST.
removeCardFeed: 'Supprimer le flux de cartes',
removeCardFeedTitle: (feedName: string) => `Supprimer le flux ${feedName}`,
removeCardFeedDescription: "Voulez-vous vraiment supprimer ce flux de cartes ? Cela retirera l'assignation de toutes les cartes.",
assignNewCards: 'Attribuer de nouvelles cartes',
assignNewCardsDescription: 'Obtenez les dernières cartes à attribuer depuis votre banque',
refreshConnectionSuccess: 'Connexion actualisée',
refreshConnectionSuccessDescription: 'Votre connexion bancaire a été ré-authentifiée avec succès. Vous pouvez maintenant attribuer de nouvelles cartes.',
error: {
feedNameRequired: 'Le nom du flux de carte est obligatoire',
statementCloseDateRequired: 'Veuillez sélectionner une date de clôture de relevé.',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5401,6 +5401,10 @@ _Per istruzioni più dettagliate, [visita il nostro sito di assistenza](${CONST.
removeCardFeed: 'Rimuovi flusso carta',
removeCardFeedTitle: (feedName: string) => `Rimuovi feed ${feedName}`,
removeCardFeedDescription: 'Sei sicuro di voler rimuovere questo flusso di carte? Questo rimuoverà l’assegnazione di tutte le carte.',
assignNewCards: 'Assegna nuove carte',
assignNewCardsDescription: 'Ottieni le ultime carte da assegnare dalla tua banca',
refreshConnectionSuccess: 'Connessione aggiornata',
refreshConnectionSuccessDescription: 'La connessione bancaria è stata riautenticata con successo. Ora puoi assegnare nuove carte.',
error: {
feedNameRequired: 'Il nome del feed della carta è obbligatorio',
statementCloseDateRequired: 'Seleziona una data di chiusura dell’estratto conto.',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5343,6 +5343,10 @@ _詳しい手順については、[ヘルプサイトをご覧ください](${CO
removeCardFeed: 'カードフィードを削除',
removeCardFeedTitle: (feedName: string) => `${feedName}フィードを削除`,
removeCardFeedDescription: 'このカードフィードを削除してもよろしいですか?すべてのカードの割り当てが解除されます。',
assignNewCards: '新しいカードを割り当てる',
assignNewCardsDescription: '銀行から最新のカードを取得して割り当てます',
refreshConnectionSuccess: '接続が更新されました',
refreshConnectionSuccessDescription: '銀行接続の再認証が正常に完了しました。新しいカードを割り当てることができます。',
error: {
feedNameRequired: 'カードフィード名は必須です',
statementCloseDateRequired: '明細書の締め日を選択してください。',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5383,6 +5383,10 @@ _Voor meer gedetailleerde instructies, [bezoek onze help-site](${CONST.NETSUITE_
removeCardFeed: 'Kaartfeed verwijderen',
removeCardFeedTitle: (feedName: string) => `Feed ${feedName} verwijderen`,
removeCardFeedDescription: 'Weet je zeker dat je deze kaartfeed wilt verwijderen? Hierdoor worden alle kaarten losgekoppeld.',
assignNewCards: 'Nieuwe kaarten toewijzen',
assignNewCardsDescription: 'Haal de nieuwste kaarten op van je bank om toe te wijzen',
refreshConnectionSuccess: 'Verbinding vernieuwd',
refreshConnectionSuccessDescription: 'Je bankverbinding is succesvol opnieuw geverifieerd. Je kunt nu nieuwe kaarten toewijzen.',
error: {
feedNameRequired: 'Naam van kaartfeed is vereist',
statementCloseDateRequired: 'Selecteer een afsluitdatum voor het afschrift.',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5378,6 +5378,10 @@ _Aby uzyskać bardziej szczegółowe instrukcje, [odwiedź naszą stronę pomocy
removeCardFeed: 'Usuń źródło karty',
removeCardFeedTitle: (feedName: string) => `Usuń strumień ${feedName}`,
removeCardFeedDescription: 'Na pewno chcesz usunąć ten kanał kart? Spowoduje to odłączenie wszystkich kart.',
assignNewCards: 'Przypisz nowe karty',
assignNewCardsDescription: 'Pobierz najnowsze karty z banku do przypisania',
refreshConnectionSuccess: 'Połączenie odświeżone',
refreshConnectionSuccessDescription: 'Połączenie z bankiem zostało pomyślnie ponownie uwierzytelnione. Możesz teraz przypisać nowe karty.',
error: {
feedNameRequired: 'Nazwa źródła karty jest wymagana',
statementCloseDateRequired: 'Wybierz datę zamknięcia wyciągu.',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5383,6 +5383,10 @@ _Para instruções mais detalhadas, [visite nossa central de ajuda](${CONST.NETS
removeCardFeed: 'Remover feed do cartão',
removeCardFeedTitle: (feedName: string) => `Remover feed ${feedName}`,
removeCardFeedDescription: 'Tem certeza de que deseja remover este feed de cartão? Isso removerá a atribuição de todos os cartões.',
assignNewCards: 'Atribuir novos cartões',
assignNewCardsDescription: 'Obtenha os cartões mais recentes do seu banco para atribuir',
refreshConnectionSuccess: 'Conexão atualizada',
refreshConnectionSuccessDescription: 'Sua conexão bancária foi reautenticada com sucesso. Agora você pode atribuir novos cartões.',
error: {
feedNameRequired: 'O nome do feed do cartão é obrigatório',
statementCloseDateRequired: 'Selecione uma data de fechamento do extrato.',
Expand Down
4 changes: 4 additions & 0 deletions src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5260,6 +5260,10 @@ _如需更详细的说明,请[访问我们的帮助网站](${CONST.NETSUITE_IM
removeCardFeed: '移除卡片流水',
removeCardFeedTitle: (feedName: string) => `移除 ${feedName} 数据源`,
removeCardFeedDescription: '确定要移除此卡片数据源吗?这将取消分配所有卡片。',
assignNewCards: '分配新卡片',
assignNewCardsDescription: '从银行获取最新的卡片进行分配',
refreshConnectionSuccess: '连接已刷新',
refreshConnectionSuccessDescription: '您的银行连接已成功重新验证。您现在可以分配新卡片。',
error: {
feedNameRequired: '必须填写卡片流水名称',
statementCloseDateRequired: '请选择账单结算日期。',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -793,6 +793,7 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
[SCREENS.WORKSPACE.INVOICES_COMPANY_WEBSITE]: () => require<ReactComponentModule>('../../../../pages/workspace/invoices/WorkspaceInvoicingDetailsWebsite').default,
[SCREENS.WORKSPACE.INVOICES_VERIFY_ACCOUNT]: () => require<ReactComponentModule>('../../../../pages/workspace/invoices/WorkspaceInvoicesVerifyAccountPage').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_BROKEN_CARD_FEED_CONNECTION]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/BrokenCardFeedConnectionPage').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_REFRESH_CARD_FEED_CONNECTION]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/RefreshCardFeedConnectionPage').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/AssigneeStep').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_CARD_SELECTION]: () => require<ReactComponentModule>('../../../../pages/workspace/companyCards/assignCard/CardSelectionStep').default,
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_TRANSACTION_START_DATE]: () =>
Expand Down
3 changes: 3 additions & 0 deletions src/libs/Navigation/linkingConfig/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,9 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
[SCREENS.WORKSPACE.COMPANY_CARDS_BROKEN_CARD_FEED_CONNECTION]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_BROKEN_CARD_FEED_CONNECTION.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_REFRESH_CARD_FEED_CONNECTION]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_REFRESH_CARD_FEED_CONNECTION.route,
},
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE]: {
path: ROUTES.WORKSPACE_COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE.route,
},
Expand Down
4 changes: 4 additions & 0 deletions src/libs/Navigation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1302,6 +1302,10 @@ type SettingsNavigatorParamList = {
// eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
backTo?: Routes;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_REFRESH_CARD_FEED_CONNECTION]: {
policyID: string;
feed: CompanyCardFeedWithDomainID;
};
[SCREENS.WORKSPACE.COMPANY_CARDS_ASSIGN_CARD_ASSIGNEE]: {
policyID: string;
feed: CompanyCardFeedWithDomainID;
Expand Down
Loading
Loading