Use local url for for mentioned users

This commit is contained in:
r 2019-12-21 05:48:06 +00:00
parent 3280af21ed
commit 889f8da496
4 changed files with 25 additions and 12 deletions

View file

@ -28,7 +28,8 @@ type renderer struct {
func NewRenderer(templateGlobPattern string) (r *renderer, err error) { func NewRenderer(templateGlobPattern string) (r *renderer, err error) {
t := template.New("default") t := template.New("default")
t, err = t.Funcs(template.FuncMap{ t, err = t.Funcs(template.FuncMap{
"WithEmojis": WithEmojis, "EmojiFilter": EmojiFilter,
"StatusContentFilter": StatusContentFilter,
"DisplayInteractionCount": DisplayInteractionCount, "DisplayInteractionCount": DisplayInteractionCount,
"TimeSince": TimeSince, "TimeSince": TimeSince,
"FormatTimeRFC3339": FormatTimeRFC3339, "FormatTimeRFC3339": FormatTimeRFC3339,
@ -70,12 +71,24 @@ func (r *renderer) RenderUserPage(ctx context.Context, writer io.Writer, data *U
return r.template.ExecuteTemplate(writer, "user.tmpl", data) return r.template.ExecuteTemplate(writer, "user.tmpl", data)
} }
func WithEmojis(content string, emojis []mastodon.Emoji) string {
var emojiNameContentPair []string func EmojiFilter(content string, emojis []mastodon.Emoji) string {
var replacements []string
for _, e := range emojis { for _, e := range emojis {
emojiNameContentPair = append(emojiNameContentPair, ":"+e.ShortCode+":", "<img class=\"status-emoji\" src=\""+e.URL+"\" alt=\""+e.ShortCode+"\" />") replacements = append(replacements, ":"+e.ShortCode+":", "<img class=\"status-emoji\" src=\""+e.URL+"\" alt=\""+e.ShortCode+"\" />")
} }
return strings.NewReplacer(emojiNameContentPair...).Replace(content) return strings.NewReplacer(replacements...).Replace(content)
}
func StatusContentFilter(content string, emojis []mastodon.Emoji, mentions []mastodon.Mention) string {
var replacements []string
for _, e := range emojis {
replacements = append(replacements, ":"+e.ShortCode+":", "<img class=\"status-emoji\" src=\""+e.URL+"\" alt=\""+e.ShortCode+"\" />")
}
for _, m := range mentions {
replacements = append(replacements, "\""+m.URL+"\"", "\"/user/"+m.ID+"\"")
}
return strings.NewReplacer(replacements...).Replace(content)
} }
func DisplayInteractionCount(c int64) string { func DisplayInteractionCount(c int64) string {

View file

@ -11,7 +11,7 @@
</a> </a>
<div> <div>
<div> <div>
<span class="status-dname"> {{WithEmojis .Account.DisplayName .Account.Emojis}} </span> <span class="status-dname"> {{EmojiFilter .Account.DisplayName .Account.Emojis}} </span>
<span class="icon dripicons-user-group"></span> <span class="icon dripicons-user-group"></span>
followed you followed you
</div> </div>
@ -31,7 +31,7 @@
</a> </a>
<div> <div>
<div> <div>
<span class="status-dname"> {{WithEmojis .Account.DisplayName .Account.Emojis}} </span> <span class="status-dname"> {{EmojiFilter .Account.DisplayName .Account.Emojis}} </span>
<span class="icon dripicons-retweet retweeted"></span> <span class="icon dripicons-retweet retweeted"></span>
retweeted your post retweeted your post
</div> </div>
@ -46,7 +46,7 @@
</a> </a>
<div> <div>
<div> <div>
<span class="status-dname"> {{WithEmojis .Account.DisplayName .Account.Emojis}} </span> <span class="status-dname"> {{EmojiFilter .Account.DisplayName .Account.Emojis}} </span>
<span class="icon dripicons-star liked"></span> <span class="icon dripicons-star liked"></span>
liked your post liked your post
</div> </div>

View file

@ -4,7 +4,7 @@
<a href="/user/{{.Account.ID}}" > <a href="/user/{{.Account.ID}}" >
<img class="status-profile-img" src="{{.Account.AvatarStatic}}" alt="profile-avatar" /> <img class="status-profile-img" src="{{.Account.AvatarStatic}}" alt="profile-avatar" />
</a> </a>
<span class="status-dname"> {{WithEmojis .Account.DisplayName .Account.Emojis}} </span> <span class="status-dname"> {{EmojiFilter .Account.DisplayName .Account.Emojis}} </span>
<span class="icon dripicons-retweet retweeted"></span> <span class="icon dripicons-retweet retweeted"></span>
retweeted retweeted
</div> </div>
@ -22,7 +22,7 @@
<div class="status"> <div class="status">
{{if not .HideAccountInfo}} {{if not .HideAccountInfo}}
<div class="status-name"> <div class="status-name">
<span class="status-dname"> {{WithEmojis .Account.DisplayName .Account.Emojis}} </span> <span class="status-dname"> {{EmojiFilter .Account.DisplayName .Account.Emojis}} </span>
<a href="/user/{{.Account.ID}}" > <a href="/user/{{.Account.ID}}" >
<span class="status-uname"> {{.Account.Acct}} </span> <span class="status-uname"> {{.Account.Acct}} </span>
</a> </a>
@ -41,7 +41,7 @@
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
<div class="status-content"> {{WithEmojis .Content .Emojis}} </div> <div class="status-content"> {{StatusContentFilter .Content .Emojis .Mentions}} </div>
<div class="status-media-container"> <div class="status-media-container">
{{range .MediaAttachments}} {{range .MediaAttachments}}
{{if eq .Type "image"}} {{if eq .Type "image"}}

View file

@ -9,7 +9,7 @@
</div> </div>
<div class="user-profile-details-container"> <div class="user-profile-details-container">
<div> <div>
<span class="status-dname"> {{WithEmojis .User.DisplayName .User.Emojis}} </span> <span class="status-dname"> {{EmojiFilter .User.DisplayName .User.Emojis}} </span>
<span class="status-uname"> {{.User.Acct}} </span> <span class="status-uname"> {{.User.Acct}} </span>
</div> </div>
<div> <div>