Fix toggle-amount-mode: set up form cursor context for grid re-render

The toggle-amount-mode handler was failing because account-grid-body*
uses fc/cursor-map which requires the form cursor context to be set up.
Added manual cursor binding in toggle-amount-mode to create a cursor
pointing to the transaction/accounts vector and bind it to fc/*current*
before rendering the grid.
This commit is contained in:
2026-05-21 07:33:15 -07:00
parent 535ef4d113
commit 857a1536ef

View File

@@ -23,6 +23,7 @@
[auto-ap.ssr.grid-page-helper :as helper] [auto-ap.ssr.grid-page-helper :as helper]
[auto-ap.ssr.transaction.common :refer [grid-page]] [auto-ap.ssr.transaction.common :refer [grid-page]]
[auto-ap.ssr.components.multi-modal :as mm] [auto-ap.ssr.components.multi-modal :as mm]
[auto-ap.cursor :as cursor]
[auto-ap.ssr.form-cursor :as fc] [auto-ap.ssr.form-cursor :as fc]
[auto-ap.ssr.hx :as hx] [auto-ap.ssr.hx :as hx]
[auto-ap.ssr.svg :as svg] [auto-ap.ssr.svg :as svg]
@@ -358,13 +359,19 @@
(let [snapshot (-> request :multi-form-state :snapshot) (let [snapshot (-> request :multi-form-state :snapshot)
old-mode (or (:amount-mode snapshot) "$") old-mode (or (:amount-mode snapshot) "$")
new-mode (or (get-in request [:form-params :amount-mode]) "$") new-mode (or (get-in request [:form-params :amount-mode]) "$")
total (Math/abs (:transaction/amount snapshot)) total (Math/abs (or (:transaction/amount snapshot) 0.0))
accounts (convert-accounts-mode (:transaction/accounts snapshot) old-mode new-mode total)] accounts (convert-accounts-mode (:transaction/accounts snapshot) old-mode new-mode total)
updated-request (-> request
(assoc-in [:multi-form-state :snapshot :transaction/accounts] accounts)
(assoc-in [:multi-form-state :snapshot :amount-mode] new-mode))
mfs-cursor (cursor/cursor (:multi-form-state updated-request))
accounts-cursor (get (get (get mfs-cursor :snapshot) :step-params) :transaction/accounts)]
(binding [fc/*form-data* (:multi-form-state updated-request)
fc/*form-errors* {}
fc/*current* accounts-cursor]
(html-response (html-response
[:div#account-grid-body [:div#account-grid-body
(account-grid-body* (-> request (account-grid-body* updated-request)]))))
(assoc-in [:multi-form-state :snapshot :transaction/accounts] accounts)
(assoc-in [:multi-form-state :snapshot :amount-mode] new-mode)))])))
(defrecord BasicDetailsStep [linear-wizard] (defrecord BasicDetailsStep [linear-wizard]
mm/ModalWizardStep mm/ModalWizardStep