diff --git a/utils/eventHandler.go b/utils/eventHandler.go index 8cc3a06..c34a7b8 100644 --- a/utils/eventHandler.go +++ b/utils/eventHandler.go @@ -148,7 +148,7 @@ func (eh *EventHandler) handleProfileEvent(ev *EventProfileEnvelope) string { handle := ev.event.Data[event.RemotePeer] err := EnrichNewPeer(handle, ph, ev) if err != nil { - return err.Error() + return "" } /* case event.SendMessageToGroupError: @@ -160,8 +160,18 @@ func (eh *EventHandler) handleProfileEvent(ev *EventProfileEnvelope) string { cxnState := connections.ConnectionStateToType[ev.event.Data[event.ConnectionState]] contact := peer.GetContact(ev.event.Data[event.RemotePeer]) + if cxnState == connections.AUTHENTICATED && contact == nil { + // Contact does not exist, change event to NewPeer + peer.AddContact(ev.event.Data[event.RemotePeer], ev.event.Data[event.RemotePeer], model.AuthUnknown) + contact = peer.GetContact(ev.event.Data[event.RemotePeer]) + ev.event.EventType = event.PeerCreated + err := EnrichNewPeer(ev.event.Data[event.RemotePeer], ph, ev) + if err != nil { + return "" + } + } + if contact != nil { - contact.State = ev.event.Data[event.ConnectionState] // No enrichment needed //uiManager.UpdateContactStatus(contact.Onion, int(cxnState), false) if cxnState == connections.AUTHENTICATED { @@ -169,16 +179,6 @@ func (eh *EventHandler) handleProfileEvent(ev *EventProfileEnvelope) string { peer.SendGetValToPeer(ev.event.Data[event.RemotePeer], attr.PublicScope, constants.Name) peer.SendGetValToPeer(ev.event.Data[event.RemotePeer], attr.PublicScope, constants.Picture) } - } else if cxnState == connections.AUTHENTICATED && contact == nil { - // Contact does not exist, change event to NewPeer - peer.AddContact(ev.event.Data[event.RemotePeer], ev.event.Data[event.RemotePeer], model.AuthUnknown) - peer.SendGetValToPeer(ev.event.Data[event.RemotePeer], attr.PublicScope, constants.Name) - peer.SendGetValToPeer(ev.event.Data[event.RemotePeer], attr.PublicScope, constants.Picture) - ev.event.EventType = event.PeerCreated - err := EnrichNewPeer(ev.event.Data[event.RemotePeer], ph, ev) - if err != nil { - return err.Error() - } } /*case event.NewRetValMessageFromPeer: @@ -250,6 +250,7 @@ func (eh *EventHandler) startHandlingPeer(onion string) { } func (eh *EventHandler) forwardProfileMessages(onion string, q event.Queue) { + // TODO: graceful shutdown, via an injected event of special QUIT type exiting loop/go routine for { e := q.Next() ev := EventProfileEnvelope{event: *e, profile: onion}