<%= turbo_frame_tag "modal" do %> <%= render DS::Dialog.new do |dialog| %> <% dialog.with_header(title: t(".link_enable_banking_title")) %> <% dialog.with_body do %> <% items = local_assigns[:enable_banking_items] || @enable_banking_items || Current.family.enable_banking_items.where.not(client_certificate: nil) %> <% if items&.any? %> <% # Find the first item with valid session to use for "Add Connection" button item_for_new_connection = items.find(&:session_valid?) # Check if any item needs initial connection (configured but no session yet) item_needing_connection = items.find { |i| !i.session_valid? && !i.session_expired? } %>
<% items.each do |item| %>
<% if item.session_valid? %>

<%= item.aspsp_name || t(".connected_bank") %>

<%= t(".session_expires") %>: <%= item.session_expires_at&.strftime("%b %d, %Y") || t(".unknown") %>

<% elsif item.session_expired? %>

<%= item.aspsp_name || t(".connection") %>

<%= t(".session_expired") %>

<% else %>

<%= t(".configured") %>

<%= t(".ready_to_connect") %>

<% end %>
<% if item.session_valid? %> <%= button_to sync_enable_banking_item_path(item), method: :post, class: "inline-flex items-center justify-center rounded-lg px-3 py-1.5 text-xs font-medium text-primary bg-container border border-primary hover:bg-surface-inset transition-colors", data: { turbo: false } do %> <%= t(".sync") %> <% end %> <% elsif item.session_expired? %> <%= button_to reauthorize_enable_banking_item_path(item), method: :post, class: "inline-flex items-center justify-center rounded-lg px-3 py-1.5 text-xs font-medium text-white bg-warning hover:opacity-90 transition-colors", data: { turbo: false } do %> <%= t(".reconnect") %> <% end %> <% else %> <%= render DS::Link.new( text: t(".connect_bank"), href: select_bank_enable_banking_item_path(item), variant: :primary, size: :sm, data: { turbo_frame: "modal" } ) %> <% end %> <%= button_to enable_banking_item_path(item), method: :delete, class: "inline-flex items-center justify-center rounded-lg px-3 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/10 transition-colors", data: { turbo_confirm: t(".remove_confirm") } do %> <%= t(".remove") %> <% end %>
<% end %> <%# Add Connection button below the list - only show if we have a valid session to copy credentials from %> <% if item_for_new_connection %>
<%= render DS::Button.new( text: t(".add_connection"), icon: "plus", href: new_connection_enable_banking_item_path(item_for_new_connection), variant: :primary, data: { turbo_method: :post, turbo_frame: "modal" } ) %>
<% end %>
<% else %>
<%= icon("alert-circle", class: "text-warning w-5 h-5 shrink-0 mt-0.5") %>

<%= t(".not_configured") %>

<%= t(".not_configured_description") %>

<%= t(".setup_steps_title") %>

  1. <%= t(".setup_step_1_html") %>
  2. <%= t(".setup_step_2_html") %>
  3. <%= t(".setup_step_3") %>
  4. <%= t(".setup_step_4") %>
<%= render DS::Link.new( text: t(".go_to_provider_settings"), href: settings_providers_path, variant: :primary, full_width: true, data: { turbo: false } ) %>
<% end %> <% end %> <% end %> <% end %>