Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/views/search.nim
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,10 @@ proc renderTweetSearch*(results: Timeline; prefs: Prefs; path: string;
buildHtml(tdiv(class=containerClass)):
if query.fromUser.len > 1:
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.kind != QueryKind.media or query.view != "gallery":
Expand Down
12 changes: 7 additions & 5 deletions src/views/tweet.nim
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ proc renderArticleCard(preview: ArticlePreview; prefs: Prefs): VNode =
if preview.previewText.len > 0:
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 =
buildHtml(tdiv):
if pinned:
Expand All @@ -36,9 +36,11 @@ proc renderHeader(tweet: Tweet; retweet: string; pinned: bool; prefs: Prefs;
else: "Pinned Tweet"
tdiv(class="pinned"):
span: icon("pin", pinnedLabel)
elif retweet.len > 0:
elif retweet.username.len > 0:
tdiv(class="retweet-header"):
span: icon("retweet", retweet & " retweeted")
span:
a(href=("/" & retweet.username)):
icon("retweet", retweet.fullname & " retweeted")

tdiv(class="tweet-header"):
a(class="tweet-avatar", href=("/" & tweet.user.username)):
Expand Down Expand Up @@ -396,11 +398,11 @@ proc renderTweet*(tweet: Tweet; prefs: Prefs; path: string; class=""; index=0;
fullTweet = tweet
pinned = tweet.pinned

var retweet: string
var retweet: User
var tweet = fullTweet
if tweet.retweet.isSome:
tweet = tweet.retweet.get
retweet = fullTweet.user.fullname
retweet = fullTweet.user

buildHtml(tdiv(class=("timeline-item " & divClass), data-username=tweet.user.username)):
if not mainTweet:
Expand Down
30 changes: 30 additions & 0 deletions tests/test_linkified_users_1428.nim
Original file line number Diff line number Diff line change
@@ -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