This commit is contained in:
Loi Nguyen 2026-08-26 07:22:07 -04:00 committed by GitHub
commit 64ed27a789
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 41 additions and 6 deletions

View file

@ -129,7 +129,10 @@ proc renderTweetSearch*(results: Timeline; prefs: Prefs; path: string;
buildHtml(tdiv(class=containerClass)): buildHtml(tdiv(class=containerClass)):
if query.fromUser.len > 1: if query.fromUser.len > 1:
tdiv(class="timeline-header"): tdiv(class="timeline-header"):
text query.fromUser.join(" | ") for index, username in query.fromUser:
if index > 0:
text " | "
a(href=("/" & username)): text username
if query.fromUser.len > 0: if query.fromUser.len > 0:
if query.kind != QueryKind.media or query.view != "gallery": if query.kind != QueryKind.media or query.view != "gallery":

View file

@ -26,7 +26,7 @@ proc renderArticleCard(preview: ArticlePreview; prefs: Prefs): VNode =
if preview.previewText.len > 0: if preview.previewText.len > 0:
p(class="card-description"): text preview.previewText p(class="card-description"): text preview.previewText
proc renderHeader(tweet: Tweet; retweet: string; pinned: bool; prefs: Prefs; proc renderHeader(tweet: Tweet; retweet: User; pinned: bool; prefs: Prefs;
path = ""): VNode = path = ""): VNode =
buildHtml(tdiv): buildHtml(tdiv):
if pinned: if pinned:
@ -35,9 +35,11 @@ proc renderHeader(tweet: Tweet; retweet: string; pinned: bool; prefs: Prefs;
else: "Pinned Tweet" else: "Pinned Tweet"
tdiv(class="pinned"): tdiv(class="pinned"):
span: icon("pin", pinnedLabel) span: icon("pin", pinnedLabel)
elif retweet.len > 0: elif retweet.username.len > 0:
tdiv(class="retweet-header"): tdiv(class="retweet-header"):
span: icon("retweet", retweet & " retweeted") span:
a(href=("/" & retweet.username)):
icon("retweet", retweet.fullname & " retweeted")
tdiv(class="tweet-header"): tdiv(class="tweet-header"):
a(class="tweet-avatar", href=("/" & tweet.user.username)): a(class="tweet-avatar", href=("/" & tweet.user.username)):
@ -395,11 +397,11 @@ proc renderTweet*(tweet: Tweet; prefs: Prefs; path: string; class=""; index=0;
fullTweet = tweet fullTweet = tweet
pinned = tweet.pinned pinned = tweet.pinned
var retweet: string var retweet: User
var tweet = fullTweet var tweet = fullTweet
if tweet.retweet.isSome: if tweet.retweet.isSome:
tweet = tweet.retweet.get tweet = tweet.retweet.get
retweet = fullTweet.user.fullname retweet = fullTweet.user
buildHtml(tdiv(class=("timeline-item " & divClass), data-username=tweet.user.username)): buildHtml(tdiv(class=("timeline-item " & divClass), data-username=tweet.user.username)):
if not mainTweet: if not mainTweet:

View file

@ -0,0 +1,30 @@
import options, strutils, unittest
import karax/vdom
import ../src/types
import ../src/views/[search, tweet]
suite "linkified feed users":
test "multi-feed header links each username":
let timeline = Timeline(query: Query(kind: tweets, fromUser: @["alice", "bob"]))
let html = $renderTweetSearch(timeline, Prefs(), "")
check "href=\"/alice\"" in html
check "href=\"/bob\"" in html
test "retweet header links the retweeter":
let original = Tweet(
available: true,
user: User(username: "author", fullname: "Author")
)
let repost = Tweet(
available: true,
user: User(username: "booster", fullname: "Booster"),
retweet: some(original)
)
let html = $renderTweet(repost, Prefs(), "")
check "href=\"/booster\"" in html
check "Booster retweeted" in html