<%= t(".deletion_in_progress") %>
+<%= t(".deletion_in_progress") %>
+ <% end %> +<%= t(".provider_name") %>
+ <% if binance_item.syncing? %> ++ <% if binance_item.last_synced_at %> + <% if binance_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(binance_item.last_synced_at), summary: binance_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(binance_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
<% end %><%= t(".provider_name") %>
- <% if binance_item.syncing? %> -- <% if binance_item.last_synced_at %> - <% if binance_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(binance_item.last_synced_at), summary: binance_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(binance_item.last_synced_at)) %> - <% end %> - <% else %> - <%= t(".status_never") %> - <% end %> -
- <% end %>- <%= brex_item.institution_summary %> -
- <% end %> - <% if brex_item.syncing? %> -- <% if brex_item.last_synced_at %> - <% if brex_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(brex_item.last_synced_at), summary: brex_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(brex_item.last_synced_at)) %> - <% end %> - <% else %> - <%= t(".status_never") %> + +
+ <%= brex_item.institution_summary %> +
+ <% end %> + <% if brex_item.syncing? %> ++ <% if brex_item.last_synced_at %> + <% if brex_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(brex_item.last_synced_at), summary: brex_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(brex_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
+ <% end %> +<%= t(".deletion_in_progress") %>
+<%= t(".deletion_in_progress") %>
+ <% end %> +<%= t(".provider_name") %>
+ <% if coinbase_item.syncing? %> ++ <% if coinbase_item.last_synced_at %> + <% if coinbase_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(coinbase_item.last_synced_at), summary: coinbase_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(coinbase_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
<% end %><%= t(".provider_name") %>
- <% if coinbase_item.syncing? %> -- <% if coinbase_item.last_synced_at %> - <% if coinbase_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(coinbase_item.last_synced_at), summary: coinbase_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(coinbase_item.last_synced_at)) %> - <% end %> - <% else %> - <%= t(".status_never") %> - <% end %> -
- <% end %><%= t(".deletion_in_progress") %>
+<%= t(".deletion_in_progress") %>
+ <% end %> +<%= t(".provider_name") %>
+ <% if coinstats_item.syncing? %> ++ <% if coinstats_item.last_synced_at %> + <% if coinstats_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(coinstats_item.last_synced_at), summary: coinstats_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(coinstats_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
<% end %><%= t(".provider_name") %>
- <% if coinstats_item.syncing? %> -- <% if coinstats_item.last_synced_at %> - <% if coinstats_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(coinstats_item.last_synced_at), summary: coinstats_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(coinstats_item.last_synced_at)) %> - <% end %> - <% else %> - <%= t(".status_never") %> - <% end %> -
- <% end %><%= t(".deletion_in_progress") %>
+<%= t(".provider_name") %>
- <% if enable_banking_item.syncing? %> -- <% if enable_banking_item.last_synced_at %> - <%= t(".last_synced", time: time_ago_in_words(enable_banking_item.last_synced_at)) %> - <% if enable_banking_item.sync_status_summary %> - · <%= enable_banking_item.sync_status_summary %> - <% end %> - <% else %> - <%= t(".never_synced") %> + +
<%= t(".deletion_in_progress") %>
<% end %> - - <% end %> -<%= t(".provider_name") %>
+ <% if enable_banking_item.syncing? %> ++ <% if enable_banking_item.last_synced_at %> + <%= t(".last_synced", time: time_ago_in_words(enable_banking_item.last_synced_at)) %> + <% if enable_banking_item.sync_status_summary %> + · <%= enable_banking_item.sync_status_summary %> + <% end %> + <% else %> + <%= t(".never_synced") %> + <% end %> +
<% end %> - <% elsif Rails.env.development? %> - <%= icon( - "refresh-cw", - as_button: true, - href: sync_enable_banking_item_path(enable_banking_item) - ) %> - <% end %> - - <%= render DS::Menu.new do |menu| %> - <% menu.with_item( - variant: "button", - text: t(".delete"), - icon: "trash-2", - href: enable_banking_item_path(enable_banking_item), - method: :delete, - confirm: CustomConfirm.for_resource_deletion(enable_banking_item.institution_display_name, high_severity: true) - ) %> - <% end %> +<%= t(".deletion_in_progress") %>
+<%= t(".deletion_in_progress") %>
+ <% end %> +<%= t(".flex_web_service") %>
+ <% if ibkr_item.syncing? %> ++ <% if ibkr_item.last_synced_at %> + <%= t(".synced", time: time_ago_in_words(ibkr_item.last_synced_at), summary: ibkr_item.sync_status_summary) %> + <% else %> + <%= t(".never_synced") %> + <% end %> +
<% end %><%= t(".flex_web_service") %>
- <% if ibkr_item.syncing? %> -- <% if ibkr_item.last_synced_at %> - <%= t(".synced", time: time_ago_in_words(ibkr_item.last_synced_at), summary: ibkr_item.sync_status_summary) %> - <% else %> - <%= t(".never_synced") %> - <% end %> -
- <% end %><%= t(".deletion_in_progress") %>
+<%= t(".deletion_in_progress") %>
+ <% end %> +<%= t(".provider_name") %>
+ <% if indexa_capital_item.syncing? %> ++ <% if indexa_capital_item.last_synced_at %> + <%= t(".status", timestamp: time_ago_in_words(indexa_capital_item.last_synced_at), summary: indexa_capital_item.sync_status_summary) %> + <% else %> + <%= t(".status_never") %> + <% end %> +
<% end %><%= t(".provider_name") %>
- <% if indexa_capital_item.syncing? %> -- <% if indexa_capital_item.last_synced_at %> - <%= t(".status", timestamp: time_ago_in_words(indexa_capital_item.last_synced_at), summary: indexa_capital_item.sync_status_summary) %> - <% else %> - <%= t(".status_never") %> - <% end %> -
- <% end %><%= t(".deletion_in_progress") %>
+<%= t(".deletion_in_progress") %>
+ <% end %> +<%= t(".provider_name") %>
+ + <% if kraken_item.syncing? %> ++ <% if kraken_item.last_synced_at %> + <% if kraken_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(kraken_item.last_synced_at), summary: kraken_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(kraken_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
<% end %><%= t(".provider_name") %>
- - <% if kraken_item.syncing? %> -- <% if kraken_item.last_synced_at %> - <% if kraken_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(kraken_item.last_synced_at), summary: kraken_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(kraken_item.last_synced_at)) %> - <% end %> - <% else %> - <%= t(".status_never") %> - <% end %> -
- <% end %><%= t(".deletion_in_progress") %>
+- <%= lunchflow_item.institution_summary %> -
- <% end %> - <% if lunchflow_item.syncing? %> -- <% if lunchflow_item.last_synced_at %> - <% if lunchflow_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(lunchflow_item.last_synced_at), summary: lunchflow_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(lunchflow_item.last_synced_at)) %> - <% end %> - <% else %> - <%= t(".status_never") %> + +
<%= t(".deletion_in_progress") %>
<% end %> - - <% end %> ++ <%= lunchflow_item.institution_summary %> +
+ <% end %> + <% if lunchflow_item.syncing? %> ++ <% if lunchflow_item.last_synced_at %> + <% if lunchflow_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(lunchflow_item.last_synced_at), summary: lunchflow_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(lunchflow_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
+ <% end %> +<%= t(".deletion_in_progress") %>
+- <%= mercury_item.institution_summary %> -
- <% end %> - <% if mercury_item.syncing? %> -- <% if mercury_item.last_synced_at %> - <% if mercury_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(mercury_item.last_synced_at), summary: mercury_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(mercury_item.last_synced_at)) %> - <% end %> - <% else %> - <%= t(".status_never") %> + +
<%= t(".deletion_in_progress") %>
<% end %> - - <% end %> ++ <%= mercury_item.institution_summary %> +
+ <% end %> + <% if mercury_item.syncing? %> ++ <% if mercury_item.last_synced_at %> + <% if mercury_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(mercury_item.last_synced_at), summary: mercury_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(mercury_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
+ <% end %> +(deletion in progress...)
+(deletion in progress...)
+ <% end %>- <%= plaid_item.last_synced_at ? t(".status", timestamp: time_ago_in_words(plaid_item.last_synced_at)) : t(".status_never") %> -
- <% end %> + <% if plaid_item.syncing? %> ++ <%= plaid_item.last_synced_at ? t(".status", timestamp: time_ago_in_words(plaid_item.last_synced_at)) : t(".status_never") %> +
+ <% end %> +<%= t(".no_matching_currencies") %> diff --git a/app/views/settings/providers/_brex_panel.html.erb b/app/views/settings/providers/_brex_panel.html.erb index 5b87ad38e..545e01802 100644 --- a/app/views/settings/providers/_brex_panel.html.erb +++ b/app/views/settings/providers/_brex_panel.html.erb @@ -38,18 +38,20 @@ <% if active_items.any? %>
<%= item.name.to_s.first.to_s.upcase %>
-<%= item.name %>
-<%= item.sync_status_summary %>
+ <%= render DS::Disclosure.new(variant: :card) do |disclosure| %> + <% disclosure.with_summary_content do %> +<%= item.name.to_s.first.to_s.upcase %>
+<%= item.name %>
+<%= item.sync_status_summary %>
+<%= item.name %>
-- <% if item.syncing? %> - <%= t("settings.providers.kraken_panel.syncing") %> - <% else %> - <%= item.sync_status_summary %> - <% end %> -
+ <%= render DS::Disclosure.new(variant: :card) do |disclosure| %> + <% disclosure.with_summary_content do %> +<%= item.name %>
++ <% if item.syncing? %> + <%= t("settings.providers.kraken_panel.syncing") %> + <% else %> + <%= item.sync_status_summary %> + <% end %> +
+<%= item.name.to_s.first.to_s.upcase %>
-<%= item.name %>
-<%= item.sync_status_summary %>
+ <%= render DS::Disclosure.new(variant: :card) do |disclosure| %> + <% disclosure.with_summary_content do %> +<%= item.name.to_s.first.to_s.upcase %>
+<%= item.name %>
+<%= item.sync_status_summary %>
+<%= t(".deletion_in_progress") %>
+- <%= simplefin_item.institution_summary %> -
- <%# Extra inline badges from latest sync stats - only show warnings %> - <% stats = (@simplefin_sync_stats_map || {})[simplefin_item.id] || {} %> - <% has_warnings = stats["accounts_skipped"].to_i > 0 || - stats["rate_limited"].present? || - stats["rate_limited_at"].present? || - stats["total_errors"].to_i > 0 || - (stats["errors"].is_a?(Array) && stats["errors"].any?) %> - <% if has_warnings %> -<%= t(".deletion_in_progress") %>
+ <% end %> ++ <%= simplefin_item.institution_summary %> +
+ <%# Extra inline badges from latest sync stats - only show warnings %> + <% stats = (@simplefin_sync_stats_map || {})[simplefin_item.id] || {} %> + <% has_warnings = stats["accounts_skipped"].to_i > 0 || + stats["rate_limited"].present? || + stats["rate_limited_at"].present? || + stats["total_errors"].to_i > 0 || + (stats["errors"].is_a?(Array) && stats["errors"].any?) %> + <% if has_warnings %> +- <% if simplefin_item.last_synced_at %> - <% if simplefin_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(simplefin_item.last_synced_at), summary: simplefin_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(simplefin_item.last_synced_at)) %> + <% end %> + <%# Determine if all reported errors are benign duplicate-skips (suppress scary banner). Computed in controller for testability. %> + <% duplicate_only_errors = (@simplefin_duplicate_only_map || {})[simplefin_item.id] || false %> + <% if simplefin_item.syncing? %> +
+ <% if simplefin_item.last_synced_at %> + <% if simplefin_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(simplefin_item.last_synced_at), summary: simplefin_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(simplefin_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
+ <% end %> +<%= t(".deletion_in_progress") %>
+- <%= snaptrade_item.brokerage_summary %> -
- <% end %> - <% if snaptrade_item.syncing? %> -- <% if snaptrade_item.last_synced_at %> - <%= t(".status", timestamp: time_ago_in_words(snaptrade_item.last_synced_at), summary: snaptrade_item.sync_status_summary) %> - <% else %> - <%= t(".status_never") %> + +
<%= t(".deletion_in_progress") %>
<% end %> - - <% end %> ++ <%= snaptrade_item.brokerage_summary %> +
+ <% end %> + <% if snaptrade_item.syncing? %> ++ <% if snaptrade_item.last_synced_at %> + <%= t(".status", timestamp: time_ago_in_words(snaptrade_item.last_synced_at), summary: snaptrade_item.sync_status_summary) %> + <% else %> + <%= t(".status_never") %> + <% end %> +
+ <% end %> +<%= t(".deletion_in_progress") %>
+- <%= sophtron_item.institution_summary %> -
- <% end %> - <% if sophtron_item.syncing? %> -- <% if sophtron_item.last_synced_at %> - <% if sophtron_item.sync_status_summary %> - <%= t(".status_with_summary", timestamp: time_ago_in_words(sophtron_item.last_synced_at), summary: sophtron_item.sync_status_summary) %> - <% else %> - <%= t(".status", timestamp: time_ago_in_words(sophtron_item.last_synced_at)) %> - <% end %> - <% else %> - <%= t(".status_never") %> + +
<%= t(".deletion_in_progress") %>
+ <% end %> ++ <%= sophtron_item.institution_summary %> +
+ <% end %> + <% if sophtron_item.syncing? %> ++ <% if sophtron_item.last_synced_at %> + <% if sophtron_item.sync_status_summary %> + <%= t(".status_with_summary", timestamp: time_ago_in_words(sophtron_item.last_synced_at), summary: sophtron_item.sync_status_summary) %> + <% else %> + <%= t(".status", timestamp: time_ago_in_words(sophtron_item.last_synced_at)) %> + <% end %> + <% else %> + <%= t(".status_never") %> + <% end %> +
+ <% end %> +