Merge e1e8e8e558
into 72fa575fee
This commit is contained in:
commit
fbb8571360
4 changed files with 55 additions and 23 deletions
|
@ -982,6 +982,23 @@ func getRemoteUserFromHandle(app *App, handle string) (*RemoteUser, error) {
|
||||||
return &u, nil
|
return &u, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getRemoteUserFromURL retrieves a RemoteUser from their public profile URL.
|
||||||
|
func getRemoteUserFromURL(app *App, urlStr string) (*RemoteUser, error) {
|
||||||
|
u := RemoteUser{URL: urlStr}
|
||||||
|
var urlVal, handle sql.NullString
|
||||||
|
err := app.db.QueryRow("SELECT id, actor_id, inbox, shared_inbox, url, handle FROM remoteusers WHERE url = ?", urlStr).Scan(&u.ID, &u.ActorID, &u.Inbox, &u.SharedInbox, &urlVal, &handle)
|
||||||
|
switch {
|
||||||
|
case err == sql.ErrNoRows:
|
||||||
|
return nil, ErrRemoteUserNotFound
|
||||||
|
case err != nil:
|
||||||
|
log.Error("Couldn't get remote user from URL %s: %v", urlStr, err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
u.URL = urlVal.String
|
||||||
|
u.Handle = handle.String
|
||||||
|
return &u, nil
|
||||||
|
}
|
||||||
|
|
||||||
func getActor(app *App, actorIRI string) (*activitystreams.Person, *RemoteUser, error) {
|
func getActor(app *App, actorIRI string) (*activitystreams.Person, *RemoteUser, error) {
|
||||||
log.Info("Fetching actor %s locally", actorIRI)
|
log.Info("Fetching actor %s locally", actorIRI)
|
||||||
actor := &activitystreams.Person{}
|
actor := &activitystreams.Person{}
|
||||||
|
|
|
@ -639,6 +639,7 @@ type CollectionPage struct {
|
||||||
CanPin bool
|
CanPin bool
|
||||||
Username string
|
Username string
|
||||||
Monetization string
|
Monetization string
|
||||||
|
FediverseAuthor string
|
||||||
Flash template.HTML
|
Flash template.HTML
|
||||||
Collections *[]Collection
|
Collections *[]Collection
|
||||||
PinnedPosts *[]PublicPost
|
PinnedPosts *[]PublicPost
|
||||||
|
|
13
posts.go
13
posts.go
|
@ -149,6 +149,7 @@ type (
|
||||||
IsCustomDomain bool
|
IsCustomDomain bool
|
||||||
Monetization string
|
Monetization string
|
||||||
Verification string
|
Verification string
|
||||||
|
FediverseAuthor string
|
||||||
PinnedPosts *[]PublicPost
|
PinnedPosts *[]PublicPost
|
||||||
IsFound bool
|
IsFound bool
|
||||||
IsAdmin bool
|
IsAdmin bool
|
||||||
|
@ -1614,6 +1615,18 @@ Are you sure it was ever here?`,
|
||||||
tp.IsPinned = len(*tp.PinnedPosts) > 0 && PostsContains(tp.PinnedPosts, p)
|
tp.IsPinned = len(*tp.PinnedPosts) > 0 && PostsContains(tp.PinnedPosts, p)
|
||||||
tp.Monetization = coll.Monetization
|
tp.Monetization = coll.Monetization
|
||||||
tp.Verification = coll.Verification
|
tp.Verification = coll.Verification
|
||||||
|
if tp.Verification != "" {
|
||||||
|
// Fetch info for fediverse:creator tag
|
||||||
|
ru, err := getRemoteUserFromURL(app, coll.Verification)
|
||||||
|
if err != nil {
|
||||||
|
if debugging {
|
||||||
|
log.Info("showing rel=me tag, but no local handle for %s", coll.Verification)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Though we don't store handles with leading @, strip it here just in case
|
||||||
|
tp.FediverseAuthor = "@" + strings.TrimLeft(ru.Handle, "@")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !postFound {
|
if !postFound {
|
||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
<meta name="monetization" content="{{.DisplayMonetization}}" />
|
<meta name="monetization" content="{{.DisplayMonetization}}" />
|
||||||
{{- end}}
|
{{- end}}
|
||||||
{{if .Verification -}}
|
{{if .Verification -}}
|
||||||
|
{{if .FediverseAuthor}}<meta name="fediverse:creator" content="{{.FediverseAuthor}}">{{end}}
|
||||||
<link rel="me" href="{{.Verification}}" />
|
<link rel="me" href="{{.Verification}}" />
|
||||||
{{- end}}
|
{{- end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
Loading…
Add table
Reference in a new issue