Improves time passed messages.
This commit is contained in:
parent
9ce1ad94c7
commit
b30bedd65e
1 changed files with 23 additions and 9 deletions
|
|
@ -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)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue