All three services now fetch page data via (service ...) IO primitives in .sx defpages instead of Python middleman functions. - Account: newsletters-data → AccountPageService.newsletters_data - Federation: 8 page helpers → FederationPageService methods (timeline, compose, search, following, followers, notifications) - Cart: 4 page helpers → CartPageService methods (overview, page-cart, admin, payments) - Serializers moved to service modules, thin delegates kept for routes - ~520 lines of Python page helpers removed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
41 lines
1.3 KiB
Plaintext
41 lines
1.3 KiB
Plaintext
;; Account app — declarative page definitions
|
|
|
|
;; ---------------------------------------------------------------------------
|
|
;; Account dashboard
|
|
;; ---------------------------------------------------------------------------
|
|
|
|
(defpage account-dashboard
|
|
:path "/"
|
|
:auth :login
|
|
:layout :account
|
|
:content (~account-dashboard-content))
|
|
|
|
;; ---------------------------------------------------------------------------
|
|
;; Newsletters
|
|
;; ---------------------------------------------------------------------------
|
|
|
|
(defpage newsletters
|
|
:path "/newsletters/"
|
|
:auth :login
|
|
:layout :account
|
|
:data (service "account-page" "newsletters-data")
|
|
:content (~account-newsletters-content
|
|
:newsletter-list newsletter-list
|
|
:account-url account-url))
|
|
|
|
;; ---------------------------------------------------------------------------
|
|
;; Fragment pages (tickets, bookings, etc. from events service)
|
|
;; ---------------------------------------------------------------------------
|
|
|
|
(defpage fragment-page
|
|
:path "/<slug>/"
|
|
:auth :login
|
|
:layout :account
|
|
:content (let* ((user (current-user))
|
|
(result (frag "events" "account-page"
|
|
:slug slug
|
|
:user-id (str (get user "id")))))
|
|
(if (or (nil? result) (empty? result))
|
|
(abort 404)
|
|
result)))
|