summaryrefslogtreecommitdiff
path: root/internal/web/thread.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/web/thread.go')
-rw-r--r--internal/web/thread.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/internal/web/thread.go b/internal/web/thread.go
index 3db4952c7..d3b92bde3 100644
--- a/internal/web/thread.go
+++ b/internal/web/thread.go
@@ -23,6 +23,7 @@ import (
"encoding/json"
"errors"
"fmt"
+ "math/rand"
"net/http"
"strings"
@@ -35,6 +36,21 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/oauth"
)
+var randAvatars = make(map[string]string)
+
+func (m *Module) ensureAvatar(status apimodel.Status) {
+ if status.Account.Avatar == "" && len(m.defaultAvatars) > 0 {
+ avatar, ok := randAvatars[status.Account.ID]
+ if !ok {
+ //nolint:gosec
+ randomIndex := rand.Intn(len(m.defaultAvatars))
+ avatar = m.defaultAvatars[randomIndex]
+ randAvatars[status.Account.ID] = avatar
+ }
+ status.Account.Avatar = avatar
+ }
+}
+
func (m *Module) threadGETHandler(c *gin.Context) {
ctx := c.Request.Context()
@@ -104,6 +120,16 @@ func (m *Module) threadGETHandler(c *gin.Context) {
return
}
+ m.ensureAvatar(*status)
+
+ for _, status := range context.Descendants {
+ m.ensureAvatar(status)
+ }
+
+ for _, status := range context.Ancestors {
+ m.ensureAvatar(status)
+ }
+
c.HTML(http.StatusOK, "thread.tmpl", gin.H{
"instance": instance,
"status": status,