mirror of
https://github.com/we-promise/sure.git
synced 2026-09-09 08:34:26 +00:00
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>
83 lines
3.5 KiB
ERB
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>
|