specify banner: in profile

This commit is contained in:
Ted Unangst 2022-05-31 01:31:11 -04:00
parent 758440776c
commit 2128c6579c
6 changed files with 29 additions and 0 deletions

View File

@ -1539,6 +1539,13 @@ func junkuser(user *WhatAbout) junk.Junk {
a["url"] = u
}
j["icon"] = a
if ban := user.Options.Banner; ban != "" {
a := junk.New()
a["type"] = "Image"
a["mediaType"] = "image/jpg"
a["url"] = ban
j["image"] = a
}
} else {
j["type"] = "Service"
}

View File

@ -2,6 +2,8 @@ changelog
=== next
+ Specify banner: image in profile.
+ Update activity compatibility with mastodon.
- Signed fetch.

View File

@ -178,6 +178,8 @@ meme collection by adding
.Dq avatar: filename.png
to one's profile info.
If truly necessary.
A banner may be set by specifying
.Dq banner: image.jpg .
See
.Xr honk 8
for more about the funzone.

1
fun.go
View File

@ -419,6 +419,7 @@ func herdofemus(noise string) []Emu {
var re_memes = regexp.MustCompile("meme: ?([^\n]+)")
var re_avatar = regexp.MustCompile("avatar: ?([^\n]+)")
var re_banner = regexp.MustCompile("banner: ?([^\n]+)")
func memetize(honk *Honk) {
repl := func(x string) string {

View File

@ -56,6 +56,7 @@ type UserOptions struct {
Avahex bool `json:",omitempty"`
MentionAll bool `json:",omitempty"`
Avatar string `json:",omitempty"`
Banner string `json:",omitempty"`
MapLink string `json:",omitempty"`
Reaction string `json:",omitempty"`
MeCount int64

16
web.go
View File

@ -1147,6 +1147,19 @@ func saveuser(w http.ResponseWriter, r *http.Request) {
options.Avatar = ava
sendupdate = true
}
ban := re_banner.FindString(whatabout)
if ban != "" {
whatabout = re_banner.ReplaceAllString(whatabout, "")
ban = ban[7:]
if ban[0] == ' ' {
ban = ban[1:]
}
ban = fmt.Sprintf("https://%s/meme/%s", serverName, ban)
}
if ban != options.Banner {
options.Banner = ban
sendupdate = true
}
whatabout = strings.TrimSpace(whatabout)
if whatabout != user.About {
sendupdate = true
@ -2017,6 +2030,9 @@ func accountpage(w http.ResponseWriter, r *http.Request) {
if ava := user.Options.Avatar; ava != "" {
about += "\n\navatar: " + ava[strings.LastIndexByte(ava, '/')+1:]
}
if ban := user.Options.Banner; ban != "" {
about += "\n\nbanner: " + ban[strings.LastIndexByte(ban, '/')+1:]
}
templinfo["WhatAbout"] = about
err := readviews.Execute(w, "account.html", templinfo)
if err != nil {