| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import karax/[karaxdsl, vdom]
- import ".."/[types, formatters]
- import tweet, timeline
- proc renderMoreReplies(thread: Chain): VNode =
- let num = if thread.more != -1: $thread.more & " " else: ""
- let reply = if thread.more == 1: "reply" else: "replies"
- let link = getLink(thread.content[^1])
- buildHtml(tdiv(class="timeline-item more-replies")):
- if link.len > 0:
- a(class="more-replies-text", href=link):
- text $num & "more " & reply
- else:
- a(class="more-replies-text"):
- text $num & "more " & reply
- proc renderReplyThread(thread: Chain; prefs: Prefs; path: string): VNode =
- buildHtml(tdiv(class="reply thread thread-line")):
- for i, tweet in thread.content:
- let last = (i == thread.content.high and thread.more == 0)
- renderTweet(tweet, prefs, path, index=i, last=last)
- if thread.more != 0:
- renderMoreReplies(thread)
- proc renderConversation*(conversation: Conversation; prefs: Prefs; path: string): VNode =
- let hasAfter = conversation.after != nil
- buildHtml(tdiv(class="conversation")):
- tdiv(class="main-thread"):
- if conversation.before != nil:
- tdiv(class="before-tweet thread-line"):
- for i, tweet in conversation.before.content:
- renderTweet(tweet, prefs, path, index=i)
- tdiv(class="main-tweet", id="m"):
- let afterClass = if hasAfter: "thread thread-line" else: ""
- renderTweet(conversation.tweet, prefs, path, class=afterClass,
- mainTweet=true)
- if hasAfter:
- tdiv(class="after-tweet thread-line"):
- let total = conversation.after.content.high
- let more = conversation.after.more
- for i, tweet in conversation.after.content:
- renderTweet(tweet, prefs, path, index=i, last=(i == total and more == 0))
- if more != 0:
- renderMoreReplies(conversation.after)
- if not conversation.replies.beginning:
- renderNewer(Query(), getLink(conversation.tweet))
- if conversation.replies.content.len > 0:
- tdiv(class="replies"):
- for thread in conversation.replies.content:
- if thread == nil: continue
- renderReplyThread(thread, prefs, path)
- if conversation.replies.hasMore:
- renderMore(Query(), conversation.replies.minId)
|