From 889f8da49637e908f203d6d9d195f7d585f8cd03 Mon Sep 17 00:00:00 2001
From: r <r@freesoftwareextremist.com>
Date: Sat, 21 Dec 2019 05:48:06 +0000
Subject: Use local url for for mentioned users

---
 renderer/renderer.go        | 23 ++++++++++++++++++-----
 templates/notification.tmpl |  6 +++---
 templates/status.tmpl       |  6 +++---
 templates/user.tmpl         |  2 +-
 4 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/renderer/renderer.go b/renderer/renderer.go
index 3eb0457..9bbe06e 100644
--- a/renderer/renderer.go
+++ b/renderer/renderer.go
@@ -28,7 +28,8 @@ type renderer struct {
 func NewRenderer(templateGlobPattern string) (r *renderer, err error) {
 	t := template.New("default")
 	t, err = t.Funcs(template.FuncMap{
-		"WithEmojis":              WithEmojis,
+		"EmojiFilter":             EmojiFilter,
+		"StatusContentFilter":     StatusContentFilter,
 		"DisplayInteractionCount": DisplayInteractionCount,
 		"TimeSince":               TimeSince,
 		"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)
 }
 
-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 {
+		replacements = append(replacements, ":"+e.ShortCode+":", "<img class=\"status-emoji\" src=\""+e.URL+"\" alt=\""+e.ShortCode+"\" />")
+	}
+	return strings.NewReplacer(replacements...).Replace(content)
+}
+
+func StatusContentFilter(content string, emojis []mastodon.Emoji, mentions []mastodon.Mention) string {
+	var replacements []string
 	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+"\" />")
+	}
+	for _, m := range mentions {
+		replacements = append(replacements, "\""+m.URL+"\"", "\"/user/"+m.ID+"\"")
 	}
-	return strings.NewReplacer(emojiNameContentPair...).Replace(content)
+	return strings.NewReplacer(replacements...).Replace(content)
 }
 
 func DisplayInteractionCount(c int64) string {
diff --git a/templates/notification.tmpl b/templates/notification.tmpl
index da6164b..271597b 100644
--- a/templates/notification.tmpl
+++ b/templates/notification.tmpl
@@ -11,7 +11,7 @@
 		</a>
 		<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> 
 				followed you
 			</div>
@@ -31,7 +31,7 @@
 		</a>
 		<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> 
 				retweeted your post
 			</div>
@@ -46,7 +46,7 @@
 		</a>
 		<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> 
 				liked your post
 			</div>
diff --git a/templates/status.tmpl b/templates/status.tmpl
index 618398f..b1babf6 100644
--- a/templates/status.tmpl
+++ b/templates/status.tmpl
@@ -4,7 +4,7 @@
 		<a href="/user/{{.Account.ID}}" >
 			<img class="status-profile-img" src="{{.Account.AvatarStatic}}" alt="profile-avatar" />
 		</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> 
 		retweeted
 	</div>
@@ -22,7 +22,7 @@
 		<div class="status"> 
 			{{if not .HideAccountInfo}}
 			<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}}" >
 					<span class="status-uname"> {{.Account.Acct}} </span>
 				</a>
@@ -41,7 +41,7 @@
 				{{end}}
 				{{end}}
 			</div>
-			<div class="status-content"> {{WithEmojis .Content .Emojis}} </div>
+			<div class="status-content"> {{StatusContentFilter .Content .Emojis .Mentions}} </div>
 			<div class="status-media-container">
 			{{range .MediaAttachments}}
 			{{if eq .Type "image"}}
diff --git a/templates/user.tmpl b/templates/user.tmpl
index 3347f92..e1a782a 100644
--- a/templates/user.tmpl
+++ b/templates/user.tmpl
@@ -9,7 +9,7 @@
 	</div>
 	<div class="user-profile-details-container">
 		<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>
 		</div>
 		<div>
-- 
cgit v1.2.3