diff --git a/storage/profile_store.go b/storage/profile_store.go index 66fc727..5ceb4ff 100644 --- a/storage/profile_store.go +++ b/storage/profile_store.go @@ -126,7 +126,6 @@ func (ps *profileStore) eventHandler() { ps.profile.Name = ev.Data[event.ProfileName] ps.profile.SetAttribute("name", ev.Data[event.ProfileName]) ps.save() - case event.SetAttribute: ps.profile.SetAttribute(ev.Data[event.Key], ev.Data[event.Data]) ps.save() @@ -135,26 +134,39 @@ func (ps *profileStore) eventHandler() { if exists { contact.SetAttribute(ev.Data[event.Key], ev.Data[event.Data]) ps.save() + } else { + log.Errorf("error setting attribute on peer %v peer does not exist", ev) } case event.SetGroupAttribute: group, exists := ps.profile.Groups[ev.Data[event.GroupID]] if exists { group.SetAttribute(ev.Data[event.Key], ev.Data[event.Data]) ps.save() + } else { + log.Errorf("error setting attribute on group %v group does not exist", ev) } case event.NewGroupInvite: var gci protocol.GroupChatInvite - proto.Unmarshal([]byte(ev.Data[event.GroupInvite]), &gci) - ps.profile.ProcessInvite(&gci, ev.Data[event.RemotePeer]) - ps.save() - group := ps.profile.Groups[gci.GetGroupName()] - ps.streamStores[group.GroupID] = NewStreamStore(ps.directory, group.LocalID, ps.password) + err := proto.Unmarshal([]byte(ev.Data[event.GroupInvite]), &gci) + if err == nil { + ps.profile.ProcessInvite(&gci, ev.Data[event.RemotePeer]) + ps.save() + group := ps.profile.Groups[gci.GetGroupName()] + ps.streamStores[group.GroupID] = NewStreamStore(ps.directory, group.LocalID, ps.password) + } else { + log.Errorf("error storing new group invite: %v %v", ev, err) + } case event.NewMessageFromGroup: groupid := ev.Data[event.GroupID] received, _ := time.Parse(time.RFC3339Nano, ev.Data[event.TimestampReceived]) sent, _ := time.Parse(time.RFC3339Nano, ev.Data[event.TimestampSent]) message := model.Message{Received: received, Timestamp: sent, Message: ev.Data[event.Data], PeerID: ev.Data[event.RemotePeer], Signature: []byte(ev.Data[event.Signature]), PreviousMessageSig: []byte(ev.Data[event.PreviousSignature])} - ps.streamStores[groupid].Write(message) + ss, exists := ps.streamStores[groupid] + if exists { + ss.Write(message) + } else { + log.Errorf("error storing new group message: %v stream store does not exist", ev) + } default: return }