MisskeyAdapter: add author cache

This commit is contained in:
Iris Lightshard 2024-08-17 10:56:50 -06:00
parent aecfd97c96
commit bcfe1587c9
Signed by: nilix
GPG Key ID: 688407174966CAF3
1 changed files with 34 additions and 20 deletions

View File

@ -99,8 +99,8 @@ func (self *MisskeyAdapter) poll() {
return
}
default:
notesService = self.mk.Notes()
timelineService = notesService.Timeline()
notesService = self.mk.Notes()
timelineService = notesService.Timeline()
// TODO: we have to actually decode and pass our filter criteria
// probe for new notes
@ -232,8 +232,8 @@ func (self *MisskeyAdapter) toMessage(n mkm.Note, bustCache bool) *Message {
return nil
}
func (self *MisskeyAdapter) toAuthor(usr mkm.User) *Author {
fmt.Println("converting author: " + usr.ID)
func (self *MisskeyAdapter) toAuthor(usr mkm.User, bustCache bool) *Author {
host := mkcore.StringValue(usr.Host)
authorId := ""
if host != "" {
@ -242,28 +242,42 @@ func (self *MisskeyAdapter) toAuthor(usr mkm.User) *Author {
authorId = fmt.Sprintf("@%s", usr.Username)
}
self.mtx.RLock()
timestamp, exists := self.cache[authorId]
self.mtx.RUnlock()
var updated *int64 = nil
if usr.UpdatedAt != nil {
updatedTmp := usr.UpdatedAt.UnixMilli()
updated = &updatedTmp
}
author := Author{
Datagram: Datagram{
Id: authorId,
Uri: mkcore.StringValue(usr.URL),
Protocol: "misskey",
Adapter: self.nickname,
Type: "author",
Created: usr.CreatedAt.UnixMilli(),
Updated: updated,
},
Name: usr.Name,
ProfilePic: usr.AvatarURL,
ProfileData: usr.Description,
}
if bustCache || !exists || (updated != nil && timestamp.Before(time.UnixMilli(*updated))) || timestamp.Before(*usr.CreatedAt) {
fmt.Println("converting author: " + usr.ID)
if usr.UpdatedAt != nil {
self.cache[authorId] = *usr.UpdatedAt
} else {
self.cache[authorId] = *usr.CreatedAt
}
return &author
author := Author{
Datagram: Datagram{
Id: authorId,
Uri: mkcore.StringValue(usr.URL),
Protocol: "misskey",
Adapter: self.nickname,
Type: "author",
Created: usr.CreatedAt.UnixMilli(),
Updated: updated,
},
Name: usr.Name,
ProfilePic: usr.AvatarURL,
ProfileData: usr.Description,
}
return &author
}
return nil
}
func (self *MisskeyAdapter) Fetch(etype string, ids []string) error {
@ -331,7 +345,7 @@ func (self *MisskeyAdapter) Fetch(etype string, ids []string) error {
if err != nil {
return err
} else {
a := self.toAuthor(data)
a := self.toAuthor(data, false)
if a != nil {
self.data <- a
}