Handle Contact not Found in GetTimeline
continuous-integration/drone/pr Build is passing Details

This commit is contained in:
Sarah Jamie Lewis 2021-09-16 13:27:12 -07:00
parent a8e7bba3f5
commit e53d91b09e
2 changed files with 18 additions and 6 deletions

5
lib.go
View File

@ -596,11 +596,14 @@ func GetMessagesByContentHash(profileOnion, handle string, contentHash string) s
profile := application.GetPeer(profileOnion)
ph := utils.NewPeerHelper(profile)
var err error
indexedMessages, err = ph.GetTimeline(handle).GetMessagesByHash(contentHash)
timeline := ph.GetTimeline(handle)
if timeline != nil {
indexedMessages, err = timeline.GetMessagesByHash(contentHash)
if err != nil {
indexedMessages = []model.LocallyIndexedMessage{}
}
}
}
bytes, _ := json.Marshal(indexedMessages)
return string(bytes)
}

View File

@ -36,7 +36,8 @@ func (p *PeerHelper) IsServer(id string) bool {
return ok
}
// GetTimeline returns a pointer to the timeline associated with the conversation handle
// GetTimeline returns a pointer to the timeline associated with the conversation handle or nil if the handle
// does not exist (this can happen if the conversation has been deleted)
func (p *PeerHelper) GetTimeline(handle string) *model.Timeline {
if p.IsServer(handle) {
// This should *never* happen
@ -45,9 +46,17 @@ func (p *PeerHelper) GetTimeline(handle string) *model.Timeline {
}
// We return a pointer to the timeline to avoid copying, accessing Timeline is thread-safe
if p.IsGroup(handle) {
return &p.peer.GetGroup(handle).Timeline
group := p.peer.GetGroup(handle)
if group == nil {
return nil
}
return &p.peer.GetContact(handle).Timeline
return &group.Timeline
}
contact := p.peer.GetContact(handle)
if contact == nil {
return nil
}
return &contact.Timeline
}
/*