[bugfix] Fix no notification if mention edited into status (#4102)

This pull request adds mention notifications if a mention was edited into a status after its initial publication.

Closes https://codeberg.org/superseriousbusiness/gotosocial/issues/3869

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4102
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Co-committed-by: tobi <tobi.smethurst@protonmail.com>
This commit is contained in:
tobi 2025-05-04 09:45:10 +00:00 committed by kim
commit f3f1854359
13 changed files with 196 additions and 48 deletions

View file

@ -64,6 +64,39 @@ func (m *mentionDB) GetMention(ctx context.Context, id string) (*gtsmodel.Mentio
return mention, nil
}
func (m *mentionDB) GetMentionByTargetAcctStatus(
ctx context.Context,
targetAcctID string,
statusID string,
) (*gtsmodel.Mention, error) {
// Get the status first.
status, err := m.state.DB.GetStatusByID(ctx, statusID)
if err != nil {
return nil, err
}
// Populate mentions if necessary.
if !status.MentionsPopulated() {
status.Mentions, err = m.GetMentions(ctx, status.MentionIDs)
if err != nil {
return nil, err
}
}
// See if the mention is there.
mention, ok := status.GetMentionByTargetID(targetAcctID)
if !ok {
return nil, db.ErrNoEntries
}
// Further populate the mention fields where applicable.
if err := m.PopulateMention(ctx, mention); err != nil {
return nil, err
}
return mention, nil
}
func (m *mentionDB) GetMentions(ctx context.Context, ids []string) ([]*gtsmodel.Mention, error) {
// Load all mention IDs via cache loader callbacks.
mentions, err := m.state.Caches.DB.Mention.LoadIDs("ID",

View file

@ -28,6 +28,9 @@ type Mention interface {
// GetMention gets a single mention by ID
GetMention(ctx context.Context, id string) (*gtsmodel.Mention, error)
// GetMentionByTargetAcctStatus returns a mention by targetAccountID and statusID.
GetMentionByTargetAcctStatus(ctx context.Context, targetAcctID string, statusID string) (*gtsmodel.Mention, error)
// GetMentions gets multiple mentions.
GetMentions(ctx context.Context, ids []string) ([]*gtsmodel.Mention, error)