Fix compact and reloading
This commit is contained in:
parent
fd80f754d2
commit
433a21aa87
2 changed files with 19 additions and 14 deletions
|
|
@ -32,36 +32,41 @@ when defined(js):
|
||||||
var
|
var
|
||||||
state = newState()
|
state = newState()
|
||||||
|
|
||||||
proc getStatus(logout: bool=false)
|
proc getStatus(logout=false, reload=false)
|
||||||
proc newState(): State =
|
proc newState(): State =
|
||||||
State(
|
State(
|
||||||
data: none[UserStatus](),
|
data: none[UserStatus](),
|
||||||
loading: false,
|
loading: false,
|
||||||
status: Http200,
|
status: Http200,
|
||||||
loginModal: newLoginModal(
|
loginModal: newLoginModal(
|
||||||
() => (state.lastUpdate = fromUnix(0); getStatus(); window.location.reload()),
|
() => (state.lastUpdate = fromUnix(0); getStatus(reload=true)),
|
||||||
() => state.signupModal.show()
|
() => state.signupModal.show()
|
||||||
),
|
),
|
||||||
signupModal: newSignupModal(
|
signupModal: newSignupModal(
|
||||||
() => (state.lastUpdate = fromUnix(0); getStatus(); window.location.reload()),
|
() => (state.lastUpdate = fromUnix(0); getStatus(reload=true)),
|
||||||
() => state.loginModal.show()
|
() => state.loginModal.show()
|
||||||
),
|
),
|
||||||
userMenu: newUserMenu(
|
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) =
|
proc onStatus(reload: bool=false): proc (httpStatus: int, response: kstring) =
|
||||||
state.loading = false
|
result =
|
||||||
state.status = httpStatus.HttpCode
|
proc (httpStatus: int, response: kstring) =
|
||||||
if state.status != Http200: return
|
state.loading = false
|
||||||
|
state.status = httpStatus.HttpCode
|
||||||
|
if state.status != Http200: return
|
||||||
|
|
||||||
let parsed = parseJson($response)
|
let parsed = parseJson($response)
|
||||||
state.data = some(to(parsed, UserStatus))
|
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
|
if state.loading: return
|
||||||
let diff = getTime() - state.lastUpdate
|
let diff = getTime() - state.lastUpdate
|
||||||
if diff.inMinutes < 5:
|
if diff.inMinutes < 5:
|
||||||
|
|
@ -69,7 +74,7 @@ when defined(js):
|
||||||
|
|
||||||
state.loading = true
|
state.loading = true
|
||||||
let uri = makeUri("status.json", [("logout", $logout)])
|
let uri = makeUri("status.json", [("logout", $logout)])
|
||||||
ajaxGet(uri, @[], onStatus)
|
ajaxGet(uri, @[], onStatus(reload))
|
||||||
|
|
||||||
proc getLoggedInUser*(): Option[User] =
|
proc getLoggedInUser*(): Option[User] =
|
||||||
state.data.map(x => x.user).flatten
|
state.data.map(x => x.user).flatten
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ when defined(js):
|
||||||
tdiv():
|
tdiv():
|
||||||
label(class="d-inline-block form-label"):
|
label(class="d-inline-block form-label"):
|
||||||
text "Category"
|
text "Category"
|
||||||
render(state.categoryPicker, currentUser)
|
render(state.categoryPicker, currentUser, compact=false)
|
||||||
renderContent(state.replyBox, none[Thread](), none[Post]())
|
renderContent(state.replyBox, none[Thread](), none[Post]())
|
||||||
tdiv(class="footer"):
|
tdiv(class="footer"):
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue