Add retweet indicator on tweets
This commit is contained in:
parent
2c8ef0b476
commit
107d21b7e6
@ -56,6 +56,7 @@ func (app *Application) buffered_render(w http.ResponseWriter, tpl *template.Tem
|
||||
type TweetCollection interface {
|
||||
Tweet(id scraper.TweetID) scraper.Tweet
|
||||
User(id scraper.UserID) scraper.User
|
||||
Retweet(id scraper.TweetID) scraper.Retweet
|
||||
FocusedTweetID() scraper.TweetID
|
||||
}
|
||||
|
||||
@ -72,6 +73,7 @@ func (app *Application) buffered_render_tweet_page(w http.ResponseWriter, tpl_fi
|
||||
func_map(template.FuncMap{
|
||||
"tweet": data.Tweet,
|
||||
"user": data.User,
|
||||
"retweet": data.Retweet,
|
||||
"active_user": app.get_active_user,
|
||||
"focused_tweet_id": data.FocusedTweetID,
|
||||
}),
|
||||
|
@ -138,6 +138,9 @@ func (t TweetDetailData) Tweet(id scraper.TweetID) scraper.Tweet {
|
||||
func (t TweetDetailData) User(id scraper.UserID) scraper.User {
|
||||
return t.Users[id]
|
||||
}
|
||||
func (t TweetDetailData) Retweet(id scraper.TweetID) scraper.Retweet {
|
||||
return t.Retweets[id]
|
||||
}
|
||||
func (t TweetDetailData) FocusedTweetID() scraper.TweetID {
|
||||
return t.MainTweetID
|
||||
}
|
||||
@ -217,6 +220,10 @@ func (t UserProfileData) Tweet(id scraper.TweetID) scraper.Tweet {
|
||||
func (t UserProfileData) User(id scraper.UserID) scraper.User {
|
||||
return t.Users[id]
|
||||
}
|
||||
func (t UserProfileData) Retweet(id scraper.TweetID) scraper.Retweet {
|
||||
return t.Retweets[id]
|
||||
}
|
||||
|
||||
func (t UserProfileData) FocusedTweetID() scraper.TweetID {
|
||||
return scraper.TweetID(0)
|
||||
}
|
||||
|
@ -385,3 +385,17 @@ input[type="submit"] {
|
||||
.quick-link .author-info {
|
||||
pointer-events: none;
|
||||
}
|
||||
.retweet-info-container {
|
||||
margin-left: 3.5em;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.retweet-info-container .svg-icon {
|
||||
width: 1.2em; /* override default from .svg-icon of 1.5em */
|
||||
opacity: 0.6;
|
||||
margin-right: 0.3em;
|
||||
}
|
||||
.retweeted-by-label {
|
||||
margin: 0 0.2em;
|
||||
}
|
||||
|
@ -4,18 +4,18 @@
|
||||
{{define "main"}}
|
||||
{{range .ParentIDs}}
|
||||
<div class="thread-parent-tweet">
|
||||
{{template "tweet" .}}
|
||||
{{template "tweet" (dict "TweetID" . "RetweetID" 0)}}
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="focused-tweet">
|
||||
{{template "tweet" .MainTweetID}}
|
||||
{{template "tweet" (dict "TweetID" .MainTweetID "RetweetID" 0)}}
|
||||
</div>
|
||||
|
||||
{{range .ReplyChains}}
|
||||
<div class="reply-chain">
|
||||
{{range .}}
|
||||
<div class="reply-tweet">
|
||||
{{template "tweet" .}}
|
||||
{{template "tweet" (dict "TweetID" . "RetweetID" 0)}}
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
|
@ -1,5 +1,5 @@
|
||||
{{define "tweet"}}
|
||||
{{$main_tweet := (tweet .)}}
|
||||
{{$main_tweet := (tweet .TweetID)}}
|
||||
{{$author := (user $main_tweet.UserID)}}
|
||||
<div class="tweet"
|
||||
{{if (not (eq $main_tweet.ID (focused_tweet_id)))}}
|
||||
@ -10,6 +10,17 @@
|
||||
hx-push-url="true"
|
||||
{{end}}
|
||||
>
|
||||
{{if (not (eq .RetweetID 0))}}
|
||||
{{$retweet := (retweet .RetweetID)}}
|
||||
{{$retweet_user := (user $retweet.RetweetedByID)}}
|
||||
<div class="retweet-info-container">
|
||||
<img class="svg-icon" src="/static/icons/retweet.svg" />
|
||||
<span class="retweeted-by-label">Retweeted by</span>
|
||||
<a class="retweeted-by-user" hx-get="/{{$retweet_user.Handle}}" hx-target="body" hx-swap="outerHTML" hx-push-url="true">
|
||||
{{$retweet_user.DisplayName}}
|
||||
</a>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="tweet-header-container">
|
||||
<div class="author-info-container" hx-trigger="click consume">
|
||||
{{template "author-info" $author}}
|
||||
|
@ -36,9 +36,7 @@ func (l CommaSeparatedList) Value() (driver.Value, error) {
|
||||
}
|
||||
|
||||
type Tweet struct {
|
||||
ID TweetID `db:"id"`
|
||||
UserID UserID `db:"user_id"`
|
||||
User *User
|
||||
ID TweetID `db:"id"`
|
||||
Text string `db:"text"`
|
||||
IsExpandable bool `db:"is_expandable"`
|
||||
PostedAt Timestamp `db:"posted_at"`
|
||||
@ -49,6 +47,9 @@ type Tweet struct {
|
||||
InReplyToID TweetID `db:"in_reply_to_id"`
|
||||
QuotedTweetID TweetID `db:"quoted_tweet_id"`
|
||||
|
||||
UserID UserID `db:"user_id"`
|
||||
User *User `db:"user"`
|
||||
|
||||
// For processing tombstones
|
||||
UserHandle UserHandle
|
||||
in_reply_to_user_handle UserHandle
|
||||
|
Loading…
x
Reference in New Issue
Block a user