From ce9cde4a0da4100ae114bcbd4cb00deda36352a5 Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Sat, 15 Feb 2020 09:02:00 -0700 Subject: [PATCH] Refactor category picker --- src/frontend/categorypicker.nim | 11 +++++++++-- src/frontend/newthread.nim | 10 +--------- src/frontend/postlist.nim | 5 +---- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/frontend/categorypicker.nim b/src/frontend/categorypicker.nim index 7834538..0ea771f 100644 --- a/src/frontend/categorypicker.nim +++ b/src/frontend/categorypicker.nim @@ -5,7 +5,7 @@ when defined(js): include karax/prelude import karax / [kajax, kdom, vstyles, vdom] - import error, replybox, threadlist, post, category + import error, replybox, threadlist, post, category, user import category, karaxutils type @@ -157,7 +157,14 @@ when defined(js): state.onAddCategoryClick()): text "Add" - proc render*(state: CategoryPicker): VNode = + proc render*(state: CategoryPicker, currentUser: Option[User]): VNode = + let loggedIn = currentUser.isSome() + let currentAdmin = + loggedIn and currentUser.get().rank == Admin + + if currentAdmin: + state.setAddEnabled(true) + if state.status != Http200: return renderError("Couldn't retrieve categories.", state.status) diff --git a/src/frontend/newthread.nim b/src/frontend/newthread.nim index 6d44381..1d1be24 100644 --- a/src/frontend/newthread.nim +++ b/src/frontend/newthread.nim @@ -48,14 +48,6 @@ when defined(js): (s: int, r: kstring) => onCreatePost(s, r, state)) proc render*(state: NewThread, currentUser: Option[User]): VNode = - - let loggedIn = currentUser.isSome() - let currentAdmin = - currentUser.isSome() and currentUser.get().rank == Admin - - if currentAdmin: - state.categoryPicker.setAddEnabled(true) - result = buildHtml(): section(class="container grid-xl"): tdiv(id="new-thread"): @@ -71,7 +63,7 @@ when defined(js): tdiv(): label(class="d-inline-block form-label"): text "Category" - render(state.categoryPicker) + render(state.categoryPicker, currentUser) renderContent(state.replyBox, none[Thread](), none[Post]()) tdiv(class="footer"): diff --git a/src/frontend/postlist.nim b/src/frontend/postlist.nim index 3076a2a..a259343 100644 --- a/src/frontend/postlist.nim +++ b/src/frontend/postlist.nim @@ -211,13 +211,10 @@ when defined(js): let currentAdmin = currentUser.isSome() and currentUser.get().rank == Admin - if currentAdmin: - state.categoryPicker.setAddEnabled(true) - result = buildHtml(): tdiv(): if authoredByUser or currentAdmin: - render(state.categoryPicker) + render(state.categoryPicker, currentUser) else: render(thread.category)