Make quoted tweets not suck anymore

This commit is contained in:
Alessio 2023-08-18 16:41:04 -03:00
parent 8c3823eea3
commit ff11fdf1af
6 changed files with 21 additions and 29 deletions

View File

@ -81,8 +81,10 @@ func TestUserFeed(t *testing.T) {
title_node := cascadia.Query(root, selector("title"))
assert.Equal(title_node.FirstChild.Data, "Offline Twitter | @Cernovich")
tweet_nodes := cascadia.QueryAll(root, selector(".tweet"))
tweet_nodes := cascadia.QueryAll(root, selector(".timeline > .tweet"))
assert.Len(tweet_nodes, 7)
including_quote_tweets := cascadia.QueryAll(root, selector(".tweet"))
assert.Len(including_quote_tweets, 9)
}
func TestUserFeedMissing(t *testing.T) {
@ -105,7 +107,7 @@ func TestUserFeedWithCursor(t *testing.T) {
title_node := cascadia.Query(root, selector("title"))
assert.Equal(title_node.FirstChild.Data, "Offline Twitter | @Cernovich")
tweet_nodes := cascadia.QueryAll(root, selector(".tweet"))
tweet_nodes := cascadia.QueryAll(root, selector(".timeline > .tweet"))
assert.Len(tweet_nodes, 2)
}
@ -132,7 +134,7 @@ func TestTimeline(t *testing.T) {
title_node := cascadia.Query(root, selector("title"))
assert.Equal(title_node.FirstChild.Data, "Offline Twitter | Timeline")
tweet_nodes := cascadia.QueryAll(root, selector(".tweet"))
tweet_nodes := cascadia.QueryAll(root, selector(".timeline > .tweet"))
assert.Len(tweet_nodes, 18)
}
@ -148,7 +150,7 @@ func TestTimelineWithCursor(t *testing.T) {
title_node := cascadia.Query(root, selector("title"))
assert.Equal(title_node.FirstChild.Data, "Offline Twitter | Timeline")
tweet_nodes := cascadia.QueryAll(root, selector(".tweet"))
tweet_nodes := cascadia.QueryAll(root, selector(".timeline > .tweet"))
assert.Len(tweet_nodes, 10)
}

View File

@ -1 +1 @@
<?xml version="1.0" ?><svg fill="none" height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M12.5858 4.58579C13.3668 3.80474 14.6331 3.80474 15.4142 4.58579C16.1952 5.36683 16.1952 6.63316 15.4142 7.41421L12.4142 10.4142C11.6331 11.1953 10.3668 11.1953 9.58577 10.4142C9.19524 10.0237 8.56208 10.0237 8.17156 10.4142C7.78103 10.8047 7.78103 11.4379 8.17156 11.8284C9.73365 13.3905 12.2663 13.3905 13.8284 11.8284L16.8284 8.82843C18.3905 7.26633 18.3905 4.73367 16.8284 3.17157C15.2663 1.60948 12.7337 1.60948 11.1716 3.17157L9.67156 4.67157C9.28103 5.0621 9.28103 5.69526 9.67156 6.08579C10.0621 6.47631 10.6952 6.47631 11.0858 6.08579L12.5858 4.58579ZM7.58579 9.58579C8.36683 8.80474 9.63316 8.80474 10.4142 9.58579C10.8047 9.97631 11.4379 9.97631 11.8284 9.58579C12.219 9.19526 12.219 8.5621 11.8284 8.17157C10.2663 6.60948 7.73367 6.60948 6.17157 8.17157L3.17157 11.1716C1.60948 12.7337 1.60948 15.2663 3.17157 16.8284C4.73367 18.3905 7.26633 18.3905 8.82843 16.8284L10.3284 15.3284C10.719 14.9379 10.719 14.3047 10.3284 13.9142C9.9379 13.5237 9.30474 13.5237 8.91421 13.9142L7.41421 15.4142C6.63316 16.1953 5.36684 16.1953 4.58579 15.4142C3.80474 14.6332 3.80474 13.3668 4.58579 12.5858L7.58579 9.58579Z" fill="#4A5568" fill-rule="evenodd"/></svg>
<svg fill="none" height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M12.5858 4.58579C13.3668 3.80474 14.6331 3.80474 15.4142 4.58579C16.1952 5.36683 16.1952 6.63316 15.4142 7.41421L12.4142 10.4142C11.6331 11.1953 10.3668 11.1953 9.58577 10.4142C9.19524 10.0237 8.56208 10.0237 8.17156 10.4142C7.78103 10.8047 7.78103 11.4379 8.17156 11.8284C9.73365 13.3905 12.2663 13.3905 13.8284 11.8284L16.8284 8.82843C18.3905 7.26633 18.3905 4.73367 16.8284 3.17157C15.2663 1.60948 12.7337 1.60948 11.1716 3.17157L9.67156 4.67157C9.28103 5.0621 9.28103 5.69526 9.67156 6.08579C10.0621 6.47631 10.6952 6.47631 11.0858 6.08579L12.5858 4.58579ZM7.58579 9.58579C8.36683 8.80474 9.63316 8.80474 10.4142 9.58579C10.8047 9.97631 11.4379 9.97631 11.8284 9.58579C12.219 9.19526 12.219 8.5621 11.8284 8.17157C10.2663 6.60948 7.73367 6.60948 6.17157 8.17157L3.17157 11.1716C1.60948 12.7337 1.60948 15.2663 3.17157 16.8284C4.73367 18.3905 7.26633 18.3905 8.82843 16.8284L10.3284 15.3284C10.719 14.9379 10.719 14.3047 10.3284 13.9142C9.9379 13.5237 9.30474 13.5237 8.91421 13.9142L7.41421 15.4142C6.63316 16.1953 5.36684 16.1953 4.58579 15.4142C3.80474 14.6332 3.80474 13.3668 4.58579 12.5858L7.58579 9.58579Z" fill="#4A5568" fill-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -56,8 +56,7 @@ input, select {
}
.quoted-tweet {
padding: 1.3em;
margin-top: 1em;
margin: 1em 0;
}
.rounded-gray-outline {
@ -312,11 +311,14 @@ ul.quick-links {
margin-bottom: 0.1em;
border-bottom: 1px solid var(--color-outline-gray);
}
.timeline .tweet {
border-bottom: 1px solid var(--color-twitter-off-white-dark);
.timeline .tweet, .quoted-tweet .tweet {
padding-top: 0.8em;
padding-bottom: 0.8em;
}
.timeline > .tweet {
/* not for nested (i.e., quoted) tweets */
border-bottom: 1px solid var(--color-twitter-off-white-dark);
}
.top-bar {
display: flex;

View File

@ -4,18 +4,18 @@
{{define "main"}}
{{range .ParentIDs}}
<div class="thread-parent-tweet">
{{template "tweet" (dict "TweetID" . "RetweetID" 0)}}
{{template "tweet" (dict "TweetID" . "RetweetID" 0 "QuoteNestingLevel" 0)}}
</div>
{{end}}
<div class="focused-tweet">
{{template "tweet" (dict "TweetID" .MainTweetID "RetweetID" 0)}}
{{template "tweet" (dict "TweetID" .MainTweetID "RetweetID" 0 "QuoteNestingLevel" 0)}}
</div>
{{range .ReplyChains}}
<div class="reply-chain">
{{range .}}
<div class="reply-tweet">
{{template "tweet" (dict "TweetID" . "RetweetID" 0)}}
{{template "tweet" (dict "TweetID" . "RetweetID" 0 "QuoteNestingLevel" 0)}}
</div>
{{end}}
</div>

View File

@ -79,23 +79,10 @@
{{template "poll" .}}
{{end}}
{{if $main_tweet.QuotedTweetID}}
{{$quoted_tweet := (tweet $main_tweet.QuotedTweetID)}}
{{$quoted_author := (user $quoted_tweet.UserID)}}
<a href="/tweet/{{$quoted_tweet.ID}}">
<div class="quoted-tweet rounded-gray-outline">
{{template "author-info" $quoted_author}}
<div class="quoted-tweet-content">
<a href="/tweet/{{$quoted_tweet.ID}}" class="unstyled-link tweet-text">
{{$quoted_tweet.Text}}
</a>
{{range $quoted_tweet.Images}}
<img src="{{.RemoteURL}}" style="max-width: 45%"/>
{{end}}
<p>{{$quoted_tweet.PostedAt.Time.Format "Jan 2, 2006"}}</p>
{{if (and $main_tweet.QuotedTweetID (lt .QuoteNestingLevel 1))}}
<div class="quoted-tweet rounded-gray-outline" hx-trigger="click consume">
{{template "tweet" (dict "TweetID" $main_tweet.QuotedTweetID "RetweetID" 0 "QuoteNestingLevel" (add .QuoteNestingLevel 1))}}
</div>
</div>
</a>
{{end}}
</div>

View File

@ -283,6 +283,7 @@ func (p Profile) GetTweetDetail(id TweetID) (TweetDetailView, error) {
type FeedItem struct {
TweetID
RetweetID TweetID
QuoteNestingLevel int
}
type Feed struct {
Items []FeedItem