Files
sure/app/views/sophtron_items/connection_status.html.erb
Juan José Mata c92b984cef [codex] Add Sophtron manual sync fixes (#1714)
* Add manual Sophtron sync flow (#1705)

Branch-to-branch merge.

* Copy edits

* Make Sophtron manual sync institution scoped

* Populate Sophtron manual sync stats

* Restore Sophtron bank credential copy

* Address Sophtron manual sync review feedback

* Scope manual sync processing failure handling

* Hide raw Sophtron processor errors from flash

* Clear Sophtron manual sync pointers on provider errors

* Keep manual Sophtron MFA on manual sync records

* Preserve manual sync processing error details
2026-05-09 21:55:20 +02:00

52 lines
2.3 KiB
Plaintext

<% polling_data = if @timed_out
{}
else
{
controller: "polling",
polling_frame_id_value: "modal",
polling_url_value: connection_status_sophtron_item_path(@sophtron_item, accountable_type: @accountable_type, account_id: @account_id, return_to: @return_to, poll_attempt: @next_poll_attempt, post_mfa: @post_mfa_polling, manual_sync: @manual_sync_flow, sync_id: @manual_sync_id, sophtron_account_id: @manual_sync_sophtron_account_id),
polling_interval_value: @poll_interval_ms
}
end %>
<% check_again_attempt = @timed_out ? 1 : (@next_poll_attempt || @poll_attempt.to_i + 1) %>
<%= turbo_frame_tag "modal" do %>
<%= tag.div(data: polling_data) do %>
<%= render DS::Dialog.new do |dialog| %>
<% dialog.with_header(title: t(".title")) %>
<% dialog.with_body do %>
<div class="space-y-4">
<div class="rounded-lg border border-primary bg-container-inset p-3">
<div class="flex items-start gap-3">
<% if @timed_out %>
<%= icon "alert-circle", size: "sm", class: "mt-0.5" %>
<% else %>
<%= icon "loader", size: "sm", class: "mt-0.5 animate-spin" %>
<% end %>
<div class="space-y-1 text-sm">
<p class="font-medium text-primary">
<%= @timed_out ? t(".timeout") : t(".waiting") %>
</p>
<p class="text-xs text-secondary">
<%= t(".attempt", attempt: (@poll_attempt || 1), max: @max_poll_attempts) %>
</p>
</div>
</div>
</div>
<div class="flex gap-2 justify-end">
<%= render DS::Link.new(
text: t(".check_again"),
href: connection_status_sophtron_item_path(@sophtron_item, accountable_type: @accountable_type, account_id: @account_id, return_to: @return_to, poll_attempt: check_again_attempt, post_mfa: @post_mfa_polling, manual_sync: @manual_sync_flow, sync_id: @manual_sync_id, sophtron_account_id: @manual_sync_sophtron_account_id),
variant: :primary,
data: { turbo_frame: "modal", turbo_prefetch: false }
) %>
</div>
</div>
<% end %>
<% end %>
<% end %>
<% end %>