src/views/blog-main.lisp
(defpackage murja.views.blog-main
(:use :cl :murja.views.components.root :murja.views.components.tab)
(:import-from :murja.models.user :user-nickname)
(:import-from :cl-hash-util :hash)
(:import-from :murja.routes.root-routes :@check-if-initial)
(:import-from :murja.middleware.auth :@ssr-authenticated :*user*)
(:import-from :murja.routes.settings-routes :get-settings)
(:import-from :murja.middleware.db :@transaction)
(:import-from :murja.newui :@newui :c :with-state)
(:import-from :easy-routes :defroute)
(:export :blog-root-view))
(in-package :murja.views.blog-main)
(defroute blog-root-view ("/blog/" :method :get
:decorators (@transaction
@newui
(@ssr-authenticated :require-authentication nil)
@check-if-initial)) ()
(let* ((settings (get-settings))
(page-size (gethash "recent-post-count" settings))
(page 1)
(page-posts (murja.models.post:get-page page page-size))
(tabs-spec (hash
("Home" (murja.views.components.page:page page-posts)))))
(when *user*
(setf (gethash "Secret logged in user tab" tabs-spec)
(c :div () (format nil "Welcome ~a" (user-nickname *user*)))))
(root-component
(tabs "Home"
tabs-spec))))