Improves time passed messages.

This commit is contained in:
Dominik Picheta 2018-05-15 18:17:46 +01:00
commit b30bedd65e

View file

@ -1,5 +1,5 @@
import options, json, times, httpcore, strformat, sugar, math import options, json, times, httpcore, strformat, sugar, math, strutils
import threadlist, category, post, user import threadlist, category, post, user
type type
@ -148,22 +148,36 @@ when defined(js):
italic(class="fas fa-reply") italic(class="fas fa-reply")
text " Reply" text " Reply"
proc genTimePassed(prevPost: Post, post: Option[Post]): VNode = proc genTimePassed(prevPost: Post, post: Option[Post], last: bool): VNode =
var latestTime = var latestTime =
if post.isSome: post.get().info.creation.fromUnix() if post.isSome: post.get().info.creation.fromUnix()
else: getTime() else: getTime()
# TODO: Use `between` once it's merged into stdlib. # TODO: Use `between` once it's merged into stdlib.
var diffStr = "Some time later" let
tmpl =
if last: [
"A long time since last reply",
"$1 year since last reply",
"$1 years since last reply",
"$1 month since last reply",
"$1 months since last reply",
]
else: [
"Some time later",
"$1 year later", "$1 years later",
"$1 month later", "$1 months later"
]
var diffStr = tmpl[0]
let diff = latestTime - prevPost.info.creation.fromUnix() let diff = latestTime - prevPost.info.creation.fromUnix()
if diff.weeks > 48: if diff.weeks > 48:
let years = diff.weeks div 48 let years = diff.weeks div 48
diffStr = $years diffStr =
diffStr.add(if years == 1: " year later" else: " years later") (if years == 1: tmpl[1] else: tmpl[2]) % $years
elif diff.weeks > 4: elif diff.weeks > 4:
let months = diff.weeks div 4 let months = diff.weeks div 4
diffStr = $months diffStr =
diffStr.add(if months == 1: " month later" else: " months later") (if months == 1: tmpl[3] else: tmpl[4]) % $months
else: else:
return buildHtml(tdiv()) return buildHtml(tdiv())
@ -196,13 +210,13 @@ when defined(js):
var prevPost: Option[Post] = none[Post]() var prevPost: Option[Post] = none[Post]()
for i, post in list.posts: for i, post in list.posts:
if prevPost.isSome: if prevPost.isSome:
genTimePassed(prevPost.get(), some(post)) genTimePassed(prevPost.get(), some(post), false)
if post.moreBefore.len > 0: if post.moreBefore.len > 0:
genLoadMore(post, i) genLoadMore(post, i)
genPost(post, list.thread, isLoggedIn) genPost(post, list.thread, isLoggedIn)
prevPost = some(post) prevPost = some(post)
if prevPost.isSome: if prevPost.isSome:
genTimePassed(prevPost.get(), none[Post]()) genTimePassed(prevPost.get(), none[Post](), true)
render(state.replyBox, list.thread, state.replyingTo, false) render(state.replyBox, list.thread, state.replyingTo, false)