status.nim 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import strutils, strformat
  2. import karax/[karaxdsl, vdom]
  3. import ../types
  4. import tweet, renderutils
  5. proc renderReplyThread(thread: Thread; prefs: Prefs): VNode =
  6. buildHtml(tdiv(class="reply thread thread-line")):
  7. for i, tweet in thread.tweets:
  8. let last = (i == thread.tweets.high and thread.more == 0)
  9. renderTweet(tweet, prefs, index=i, last=last)
  10. if thread.more != 0:
  11. let num = if thread.more != -1: $thread.more & " " else: ""
  12. let reply = if thread.more == 1: "reply" else: "replies"
  13. tdiv(class="status-el more-replies"):
  14. a(class="more-replies-text", title="Not implemented yet"):
  15. text $num & "more " & reply
  16. proc renderConversation*(conversation: Conversation; prefs: Prefs): VNode =
  17. let hasAfter = conversation.after != nil
  18. buildHtml(tdiv(class="conversation", id="posts")):
  19. tdiv(class="main-thread"):
  20. if conversation.before != nil:
  21. tdiv(class="before-tweet thread-line"):
  22. for i, tweet in conversation.before.tweets:
  23. renderTweet(tweet, prefs, index=i)
  24. tdiv(class="main-tweet"):
  25. let afterClass = if hasAfter: "thread thread-line" else: ""
  26. renderTweet(conversation.tweet, prefs, class=afterClass)
  27. if hasAfter:
  28. tdiv(class="after-tweet thread-line"):
  29. let total = conversation.after.tweets.high
  30. for i, tweet in conversation.after.tweets:
  31. renderTweet(tweet, prefs, index=i, total=total)
  32. if conversation.replies.len > 0:
  33. tdiv(class="replies"):
  34. for thread in conversation.replies:
  35. renderReplyThread(thread, prefs)