Browse Source

Merge pull request 'Handle Contact not Found in GetTimeline' (#27) from bugfix-gettimeline into trunk

Reviewed-on: https://git.openprivacy.ca/cwtch.im/libcwtch-go/pulls/27
gomobile
Dan Ballard 1 month ago
parent
commit
f8882c0c0a
  1. 9
      lib.go
  2. 15
      utils/manager.go

9
lib.go

@ -596,9 +596,12 @@ 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)
if err != nil {
indexedMessages = []model.LocallyIndexedMessage{}
timeline := ph.GetTimeline(handle)
if timeline != nil {
indexedMessages, err = timeline.GetMessagesByHash(contentHash)
if err != nil {
indexedMessages = []model.LocallyIndexedMessage{}
}
}
}
bytes, _ := json.Marshal(indexedMessages)

15
utils/manager.go

@ -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 &group.Timeline
}
contact := p.peer.GetContact(handle)
if contact == nil {
return nil
}
return &p.peer.GetContact(handle).Timeline
return &contact.Timeline
}
/*

Loading…
Cancel
Save