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: Iris Lightshard
GPG key ID: 688407174966CAF3

View file

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