mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 04:42:25 -05:00
[feature] Dereference remote mentions when the account is not already known (#442)
* remove mention util function from db * add ParseMentionFunc to gtsmodel * add parseMentionFunc to processor * refactor search to simplify it a bit * add parseMentionFunc to account * add parseMentionFunc to status * some renaming for clarity * test dereference of unknown mentioned account
This commit is contained in:
parent
983e696bd6
commit
37d310f981
16 changed files with 420 additions and 183 deletions
|
|
@ -25,13 +25,11 @@ import (
|
|||
"github.com/superseriousbusiness/gotosocial/internal/regexes"
|
||||
)
|
||||
|
||||
// DeriveMentionsFromText takes a plaintext (ie., not html-formatted) text,
|
||||
// and applies a regex to it to return a deduplicated list of accounts
|
||||
// mentioned in that text.
|
||||
//
|
||||
// It will look for fully-qualified account names in the form "@user@example.org".
|
||||
// or the form "@username" for local users.
|
||||
func DeriveMentionsFromText(text string) []string {
|
||||
// DeriveMentionNamesFromText takes a plaintext (ie., not html-formatted) text,
|
||||
// and applies a regex to it to return a deduplicated list of account names
|
||||
// mentioned in that text, in the format "@user@example.org" or "@username" for
|
||||
// local users.
|
||||
func DeriveMentionNamesFromText(text string) []string {
|
||||
mentionedAccounts := []string{}
|
||||
for _, m := range regexes.MentionFinder.FindAllStringSubmatch(text, -1) {
|
||||
mentionedAccounts = append(mentionedAccounts, m[1])
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ https://localhost:8080/@the_mighty_zork/statuses/01FGVP55XMF2K6316MQRX6PFG1
|
|||
|
||||
that link shouldn't come out formatted as a mention!`
|
||||
|
||||
menchies := util.DeriveMentionsFromText(statusText)
|
||||
menchies := util.DeriveMentionNamesFromText(statusText)
|
||||
suite.Empty(menchies)
|
||||
}
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ func (suite *StatusTestSuite) TestDeriveMentionsOK() {
|
|||
|
||||
`
|
||||
|
||||
menchies := util.DeriveMentionsFromText(statusText)
|
||||
menchies := util.DeriveMentionNamesFromText(statusText)
|
||||
assert.Len(suite.T(), menchies, 6)
|
||||
assert.Equal(suite.T(), "@dumpsterqueer@example.org", menchies[0])
|
||||
assert.Equal(suite.T(), "@someone_else@testing.best-horse.com", menchies[1])
|
||||
|
|
@ -68,7 +68,7 @@ func (suite *StatusTestSuite) TestDeriveMentionsOK() {
|
|||
|
||||
func (suite *StatusTestSuite) TestDeriveMentionsEmpty() {
|
||||
statusText := ``
|
||||
menchies := util.DeriveMentionsFromText(statusText)
|
||||
menchies := util.DeriveMentionNamesFromText(statusText)
|
||||
assert.Len(suite.T(), menchies, 0)
|
||||
}
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ func (suite *StatusTestSuite) TestDeriveMultiple() {
|
|||
|
||||
Text`
|
||||
|
||||
ms := util.DeriveMentionsFromText(statusText)
|
||||
ms := util.DeriveMentionNamesFromText(statusText)
|
||||
hs := util.DeriveHashtagsFromText(statusText)
|
||||
es := util.DeriveEmojisFromText(statusText)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue