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
|
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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue