Fix mentions when username != preferred_username (#885)

* initial commit

* fixes mention name

---------

Co-authored-by: Christian Beutel <>
This commit is contained in:
Flomp
2026-03-20 19:35:34 +01:00
committed by GitHub
parent 04818b9329
commit ec76b69dba
2 changed files with 13 additions and 13 deletions

View File

@@ -46,7 +46,7 @@ func CreateTrailActivity(app core.App, actor *core.Record, trail *core.Record, t
id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId) id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, recordId)
to := "https://www.w3.org/ns/activitystreams#Public" to := "https://www.w3.org/ns/activitystreams#Public"
mentionedActors, handles, err := ActorsFromMentions(app, actor, trail.GetString("description")) mentionedActors, err := ActorsFromMentions(app, actor, trail.GetString("description"))
if err != nil { if err != nil {
return err return err
} }
@@ -54,11 +54,11 @@ func CreateTrailActivity(app core.App, actor *core.Record, trail *core.Record, t
mentions := []string{} mentions := []string{}
cc := pub.ItemCollection{pub.IRI(trailAuthor.GetString("followers"))} cc := pub.ItemCollection{pub.IRI(trailAuthor.GetString("followers"))}
tags := pub.ItemCollection{} tags := pub.ItemCollection{}
for i, m := range mentionedActors { for _, m := range mentionedActors {
inbox := m.GetString("inbox") inbox := m.GetString("inbox")
mention := pub.MentionNew(pub.IRI(m.GetString("iri"))) mention := pub.MentionNew(pub.IRI(m.GetString("iri")))
mention.Href = pub.IRI(m.GetString("iri")) mention.Href = pub.IRI(m.GetString("iri"))
mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, handles[i])) mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("@%s@%s", m.GetString("preferred_username"), m.GetString("domain"))))
tags.Append(mention) tags.Append(mention)
mentions = append(mentions, inbox) mentions = append(mentions, inbox)
@@ -134,16 +134,16 @@ func CreateCommentActivity(app core.App, actor *core.Record, comment *core.Recor
id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, activityRecordId) id := fmt.Sprintf("%s/api/v1/activitypub/activity/%s", origin, activityRecordId)
to := "https://www.w3.org/ns/activitystreams#Public" to := "https://www.w3.org/ns/activitystreams#Public"
mentionedActors, handles, err := ActorsFromMentions(app, actor, comment.GetString("text")) mentionedActors, err := ActorsFromMentions(app, actor, comment.GetString("text"))
if err != nil { if err != nil {
return err return err
} }
recipients := []string{} recipients := []string{}
tags := pub.ItemCollection{} tags := pub.ItemCollection{}
for i, m := range mentionedActors { for _, m := range mentionedActors {
mention := pub.MentionNew(pub.IRI(m.GetString("iri"))) mention := pub.MentionNew(pub.IRI(m.GetString("iri")))
mention.Href = pub.IRI(m.GetString("iri")) mention.Href = pub.IRI(m.GetString("iri"))
mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, handles[i])) mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("@%s@%s", m.GetString("preferred_username"), m.GetString("domain"))))
tags.Append(mention) tags.Append(mention)
recipients = append(recipients, m.GetString("inbox")) recipients = append(recipients, m.GetString("inbox"))
@@ -245,7 +245,7 @@ func CreateSummitLogActivity(app core.App, actor *core.Record, summitLog *core.R
to.Append(pub.IRI(summitLogTrailAuthor.GetString("iri"))) to.Append(pub.IRI(summitLogTrailAuthor.GetString("iri")))
} }
mentionedActors, handles, err := ActorsFromMentions(app, actor, summitLog.GetString("text")) mentionedActors, err := ActorsFromMentions(app, actor, summitLog.GetString("text"))
if err != nil { if err != nil {
return err return err
} }
@@ -253,11 +253,11 @@ func CreateSummitLogActivity(app core.App, actor *core.Record, summitLog *core.R
mentions := []string{} mentions := []string{}
cc := pub.ItemCollection{pub.IRI(summitLogAuthor.GetString("followers"))} cc := pub.ItemCollection{pub.IRI(summitLogAuthor.GetString("followers"))}
mentionTags := pub.ItemCollection{} mentionTags := pub.ItemCollection{}
for i, m := range mentionedActors { for _, m := range mentionedActors {
inbox := m.GetString("inbox") inbox := m.GetString("inbox")
mention := pub.MentionNew(pub.IRI(m.GetString("iri"))) mention := pub.MentionNew(pub.IRI(m.GetString("iri")))
mention.Href = pub.IRI(m.GetString("iri")) mention.Href = pub.IRI(m.GetString("iri"))
mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, handles[i])) mention.Name = pub.NaturalLanguageValuesNew(pub.LangRefValueNew(pub.NilLangRef, fmt.Sprintf("@%s@%s", m.GetString("preferred_username"), m.GetString("domain"))))
mentionTags.Append(mention) mentionTags.Append(mention)
mentions = append(mentions, inbox) mentions = append(mentions, inbox)
@@ -807,10 +807,10 @@ func processCreateOrUpdateListActivity(activity pub.Activity, app core.App, acto
return err return err
} }
func ActorsFromMentions(app core.App, actor *core.Record, htmlStr string) ([]*core.Record, []string, error) { func ActorsFromMentions(app core.App, actor *core.Record, htmlStr string) ([]*core.Record, error) {
doc, err := html.Parse(strings.NewReader(htmlStr)) doc, err := html.Parse(strings.NewReader(htmlStr))
if err != nil { if err != nil {
return nil, nil, err return nil, err
} }
var handles []string var handles []string
@@ -849,5 +849,5 @@ func ActorsFromMentions(app core.App, actor *core.Record, htmlStr string) ([]*co
actors = append(actors, actor) actors = append(actors, actor)
} }
return actors, handles, nil return actors, nil
} }

View File

@@ -151,7 +151,7 @@
return (_: Event, item: SearchItem) => { return (_: Event, item: SearchItem) => {
props.command({ props.command({
id: item.value.iri, id: item.value.iri,
label: `${item.value.username}${item.value.isLocal ? "" : "@" + item.value.domain}`, label: `${item.value.preferred_username}${item.value.isLocal ? "" : "@" + item.value.domain}`,
}); });
}; };
} }