diff --git a/src/frontend/forum.nim b/src/frontend/forum.nim index 6aef3b6..cfc4151 100644 --- a/src/frontend/forum.nim +++ b/src/frontend/forum.nim @@ -1,5 +1,5 @@ import strformat, times, options, json, tables, sugar, httpcore, uri -from dom import window, Location, document +from dom import window, Location, document, decodeURI include karax/prelude import jester/[patterns] @@ -87,7 +87,13 @@ proc render(): VNode = ), r("/profile/@username", (params: Params) => - (render(state.profile, params["username"], getLoggedInUser())) + ( + render( + state.profile, + decodeURI(params["username"]), + getLoggedInUser() + ) + ) ), r("/t/@id", (params: Params) => diff --git a/src/frontend/profile.nim b/src/frontend/profile.nim index cf6b2cf..48f519a 100644 --- a/src/frontend/profile.nim +++ b/src/frontend/profile.nim @@ -56,9 +56,10 @@ when defined(js): proc render*( state: ProfileState, - username: string, + username: kstring, currentUser: Option[User] ): VNode = + if state.profile.isSome() and state.profile.get().user.name != username: state.profile = none[Profile]() state.status = Http200 @@ -69,7 +70,7 @@ when defined(js): if state.profile.isNone: if not state.loading: state.loading = true - let uri = makeUri("profile.json", ("username", username)) + let uri = makeUri("profile.json", ("username", $username)) ajaxGet(uri, @[], (s: int, r: kstring) => onProfile(s, r, state)) return buildHtml(tdiv(class="loading loading-lg"))