MisskeyAdapter: add author cache
This commit is contained in:
parent
aecfd97c96
commit
bcfe1587c9
1 changed files with 34 additions and 20 deletions
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue