diff options
| author | 2025-05-04 09:45:10 +0000 | |
|---|---|---|
| committer | 2025-05-04 09:45:10 +0000 | |
| commit | f3f185435916165a6dd72f3a1bd67e370a2a783d (patch) | |
| tree | 766f79d878fbd94cf622944b3cdd8120469ecb55 /internal/db | |
| parent | [chore/cicd] Account for force pushes in conditional runs (#4121) (diff) | |
| download | gotosocial-f3f185435916165a6dd72f3a1bd67e370a2a783d.tar.xz | |
[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>
Diffstat (limited to 'internal/db')
| -rw-r--r-- | internal/db/bundb/mention.go | 33 | ||||
| -rw-r--r-- | internal/db/mention.go | 3 |
2 files changed, 36 insertions, 0 deletions
diff --git a/internal/db/bundb/mention.go b/internal/db/bundb/mention.go index e70541ede..e3c36bf0c 100644 --- a/internal/db/bundb/mention.go +++ b/internal/db/bundb/mention.go @@ -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", diff --git a/internal/db/mention.go b/internal/db/mention.go index c76b3bc6b..b53c45b8f 100644 --- a/internal/db/mention.go +++ b/internal/db/mention.go @@ -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) |
