Fixes anchored post links spamming the browser history.

This commit is contained in:
Dominik Picheta 2018-05-22 20:44:27 +01:00
commit 21a75483fe
2 changed files with 8 additions and 6 deletions

View file

@ -266,7 +266,7 @@ $threads-meta-color: #545d70;
border-top: 1px solid $border-color;
padding-top: $control-padding-y-lg;
&:target .post-main {
&:target .post-main, &.highlight .post-main {
animation: highlight 2000ms ease-out;
}
}

View file

@ -71,8 +71,7 @@ when defined(js):
() => (
# Would have used scrollIntoView but then the `:target` selector
# isn't activated.
window.location.hash = "";
window.location.hash = "#" & $postId.get()
getVNodeById($postId.get()).dom.scrollIntoView()
),
100
)
@ -214,11 +213,13 @@ when defined(js):
italic(class="fas fa-reply")
text " Reply"
proc genPost(post: Post, thread: Thread, currentUser: Option[User]): VNode =
proc genPost(
post: Post, thread: Thread, currentUser: Option[User], highlight: bool
): VNode =
let postCopy = post # TODO: Another workaround here, closure capture :(
result = buildHtml():
tdiv(class="post", id = $post.id):
tdiv(class=class({"highlight": highlight}, "post"), id = $post.id):
tdiv(class="post-icon"):
render(post.author, "post-avatar")
tdiv(class="post-main"):
@ -345,7 +346,8 @@ when defined(js):
genTimePassed(prevPost.get(), some(post), false)
if post.moreBefore.len > 0:
genLoadMore(post, i)
genPost(post, list.thread, currentUser)
let highlight = postId.isSome() and postId.get() == post.id
genPost(post, list.thread, currentUser, highlight)
prevPost = some(post)
if prevPost.isSome: