Files
sure/app/views/settings/providers/_questrade_panel.html.erb
T
William Wei MingandCursor b754065858 fix(i18n): drop redundant Questrade t() default: strings (#2976)
Hardcoded default: fallbacks masked missing keys and defeated the
dev missing-translation safety net. Add the panel/setup/select keys
the views actually use, then rely on locale entries alone.

Closes #2635

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 07:56:50 +02:00

83 lines
3.5 KiB
ERB

<div class="space-y-4">
<% items = local_assigns[:questrade_items] || @questrade_items || Current.family.questrade_items.where.not(refresh_token: nil) %>
<% connected = items.present? && items.any? %>
<% unless connected %>
<%= render "settings/providers/setup_steps",
eyebrow: t("questrade_items.panel.eyebrow"),
steps: [
t("questrade_items.panel.steps.s1_html").html_safe,
t("questrade_items.panel.steps.s2"),
t("questrade_items.panel.steps.s3_html").html_safe,
t("questrade_items.panel.steps.s4"),
t("questrade_items.panel.steps.s5"),
t("questrade_items.panel.steps.s6")
],
help: { url: "https://www.questrade.com/api/documentation/getting-started", text: t("questrade_items.panel.help_text") } %>
<% end %>
<% error_msg = local_assigns[:error_message] || @error_message %>
<% if error_msg.present? %>
<%= render DS::Alert.new(message: error_msg, variant: :error) %>
<% end %>
<% if connected %>
<div class="flex items-center gap-2">
<div class="w-2 h-2 bg-success rounded-full shrink-0"></div>
<p class="text-sm text-secondary"><%= t("questrade_items.panel.status_configured_html", accounts_path: accounts_path).html_safe %></p>
</div>
<div class="mt-4 space-y-3">
<p class="text-xs text-secondary"><%= t("questrade_items.panel.token_refresh_hint") %></p>
<%= styled_form_with model: items.first,
url: questrade_item_path(items.first),
scope: :questrade_item,
method: :patch,
data: { turbo: true },
class: "space-y-3" do |form| %>
<%= form.text_field :refresh_token,
label: t("questrade_items.panel.fields.refresh_token.label"),
placeholder: t("questrade_items.panel.fields.refresh_token.placeholder_update"),
type: :password,
value: nil %>
<div class="flex justify-end">
<%= render DS::Button.new(text: t("questrade_items.panel.update_button"), type: "submit") %>
</div>
<% end %>
</div>
<div class="flex items-center gap-2 mt-4">
<%= render DS::Button.new(
text: t("questrade_items.panel.disconnect"),
icon: "trash-2",
variant: :outline_destructive,
size: :sm,
href: questrade_item_path(items.first),
method: :delete,
data: { turbo_frame: "_top", turbo_confirm: t("questrade_items.panel.disconnect_confirm") }
) %>
</div>
<% else %>
<%
questrade_item = Current.family.questrade_items.first_or_initialize(name: "Questrade Connection")
%>
<%= styled_form_with model: questrade_item,
url: questrade_items_path,
scope: :questrade_item,
method: :post,
data: { turbo: true },
class: "space-y-3" do |form| %>
<%= form.text_field :refresh_token,
label: t("questrade_items.panel.fields.refresh_token.label"),
placeholder: t("questrade_items.panel.fields.refresh_token.placeholder_new"),
type: :password %>
<div class="flex justify-end">
<%= render DS::Button.new(text: t("questrade_items.panel.save_button"), type: "submit") %>
</div>
<% end %>
<% end %>
</div>