mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 02:12:25 -05:00
[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:
parent
056c67f396
commit
f3f1854359
13 changed files with 196 additions and 48 deletions
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue