From 433a21aa87cf64002e22828839aa616660cdef18 Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Mon, 17 Feb 2020 21:01:47 -0700 Subject: [PATCH] Fix compact and reloading --- src/frontend/header.nim | 31 ++++++++++++++++++------------- src/frontend/newthread.nim | 2 +- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/frontend/header.nim b/src/frontend/header.nim index 820de7c..679c8fa 100644 --- a/src/frontend/header.nim +++ b/src/frontend/header.nim @@ -32,36 +32,41 @@ when defined(js): var state = newState() - proc getStatus(logout: bool=false) + proc getStatus(logout=false, reload=false) proc newState(): State = State( data: none[UserStatus](), loading: false, status: Http200, loginModal: newLoginModal( - () => (state.lastUpdate = fromUnix(0); getStatus(); window.location.reload()), + () => (state.lastUpdate = fromUnix(0); getStatus(reload=true)), () => state.signupModal.show() ), signupModal: newSignupModal( - () => (state.lastUpdate = fromUnix(0); getStatus(); window.location.reload()), + () => (state.lastUpdate = fromUnix(0); getStatus(reload=true)), () => state.loginModal.show() ), userMenu: newUserMenu( - () => (state.lastUpdate = fromUnix(0); getStatus(logout=true); window.location.reload()) + () => (state.lastUpdate = fromUnix(0); getStatus(logout=true, reload=true)) ) ) - proc onStatus(httpStatus: int, response: kstring) = - state.loading = false - state.status = httpStatus.HttpCode - if state.status != Http200: return + proc onStatus(reload: bool=false): proc (httpStatus: int, response: kstring) = + result = + proc (httpStatus: int, response: kstring) = + state.loading = false + state.status = httpStatus.HttpCode + if state.status != Http200: return - let parsed = parseJson($response) - state.data = some(to(parsed, UserStatus)) + let parsed = parseJson($response) + state.data = some(to(parsed, UserStatus)) - state.lastUpdate = getTime() + state.lastUpdate = getTime() - proc getStatus(logout: bool=false) = + if reload: + window.location.reload() + + proc getStatus(logout=false, reload=false) = if state.loading: return let diff = getTime() - state.lastUpdate if diff.inMinutes < 5: @@ -69,7 +74,7 @@ when defined(js): state.loading = true let uri = makeUri("status.json", [("logout", $logout)]) - ajaxGet(uri, @[], onStatus) + ajaxGet(uri, @[], onStatus(reload)) proc getLoggedInUser*(): Option[User] = state.data.map(x => x.user).flatten diff --git a/src/frontend/newthread.nim b/src/frontend/newthread.nim index d314985..9189bc0 100644 --- a/src/frontend/newthread.nim +++ b/src/frontend/newthread.nim @@ -65,7 +65,7 @@ when defined(js): tdiv(): label(class="d-inline-block form-label"): text "Category" - render(state.categoryPicker, currentUser) + render(state.categoryPicker, currentUser, compact=false) renderContent(state.replyBox, none[Thread](), none[Post]()) tdiv(class="footer"):