From cea80688f6c825c3612b619b023ffe940693a4e4 Mon Sep 17 00:00:00 2001
From: "Richard T. Carback III" <rick.carback@gmail.com>
Date: Fri, 27 Aug 2021 18:25:02 +0000
Subject: [PATCH] Add event reports for user discovery

---
 single/receiveResponse.go | 15 +++++++++++++--
 single/transmission.go    | 12 +++++++++---
 ud/register.go            |  5 +++++
 ud/search.go              | 13 +++++++++++++
 4 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/single/receiveResponse.go b/single/receiveResponse.go
index 6a6fa94fd..831b25b35 100644
--- a/single/receiveResponse.go
+++ b/single/receiveResponse.go
@@ -8,6 +8,7 @@
 package single
 
 import (
+	"fmt"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/interfaces/message"
@@ -37,8 +38,13 @@ func (m *Manager) receiveResponseHandler(rawMessages chan message.Receive,
 			// Process CMIX message
 			err := m.processesResponse(msg.RecipientID, msg.EphemeralID, msg.Payload)
 			if err != nil {
-				jww.WARN.Printf("Failed to read single-use CMIX message "+
-					"response: %+v", err)
+				em := fmt.Sprintf("Failed to read single-use "+
+					"CMIX message response: %+v", err)
+				jww.WARN.Print(em)
+				if m.client != nil {
+					m.client.ReportEvent(9, "SingleUse",
+						"Error", em)
+				}
 			}
 		}
 	}
@@ -89,6 +95,11 @@ func (m *Manager) processesResponse(rid *id.ID, ephID ephemeral.Id,
 
 	// Once all message parts have been received delete and close everything
 	if collated {
+		if m.client != nil {
+			m.client.ReportEvent(1, "SingleUse", "MessageReceived",
+				fmt.Sprintf("Single use response received "+
+					"from %s", rid))
+		}
 		jww.DEBUG.Print("Received all parts of single-use response message.")
 		// Exit the timeout handler
 		state.quitChan <- struct{}{}
diff --git a/single/transmission.go b/single/transmission.go
index a6ceed465..25cd73276 100644
--- a/single/transmission.go
+++ b/single/transmission.go
@@ -113,7 +113,8 @@ func (m *Manager) transmitSingleUse(partner contact2.Contact, payload []byte,
 
 	go func() {
 		// Send Message
-		jww.DEBUG.Printf("Sending single-use transmission CMIX message to %s.", partner.ID)
+		jww.DEBUG.Printf("Sending single-use transmission CMIX "+
+			"message to %s.", partner.ID)
 		round, _, err := m.net.SendCMIX(cmixMsg, partner.ID, params.GetDefaultCMIX())
 		if err != nil {
 			errorString := fmt.Sprintf("failed to send single-use transmission "+
@@ -144,8 +145,13 @@ func (m *Manager) transmitSingleUse(partner contact2.Contact, payload []byte,
 		roundEvents.AddRoundEventChan(round, sendResults, roundEventTimeout,
 			states.COMPLETED, states.FAILED)
 
-		jww.DEBUG.Printf("Sent single-use transmission CMIX message to %s and "+
-			"ephemeral ID %d on round %d.", partner.ID, ephID.Int64(), round)
+		im := fmt.Sprintf("Sent single-use transmission CMIX "+
+			"message to %s and ephemeral ID %d on round %d.",
+			partner.ID, ephID.Int64(), round)
+		jww.DEBUG.Print(im)
+		if m.client != nil {
+			m.client.ReportEvent(1, "SingleUse", "MessageSend", im)
+		}
 
 		// Wait until the result tracking responds
 		success, numRoundFail, numTimeOut := utility.TrackResults(sendResults, 1)
diff --git a/ud/register.go b/ud/register.go
index b46f99a09..4fe9e2d67 100644
--- a/ud/register.go
+++ b/ud/register.go
@@ -1,6 +1,7 @@
 package ud
 
 import (
+	"fmt"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
 	pb "gitlab.com/elixxir/comms/mixmessages"
@@ -85,6 +86,10 @@ func (m *Manager) register(username string, comm registerUserComms) error {
 
 	if err == nil {
 		err = m.setRegistered()
+		if m.client != nil {
+			m.client.ReportEvent(1, "UserDiscovery", "Registration",
+				fmt.Sprintf("User Registered with UD: %s", user))
+		}
 	}
 
 	return err
diff --git a/ud/search.go b/ud/search.go
index 86a19551b..410012348 100644
--- a/ud/search.go
+++ b/ud/search.go
@@ -1,6 +1,7 @@
 package ud
 
 import (
+	"fmt"
 	"github.com/golang/protobuf/proto"
 	"github.com/pkg/errors"
 	jww "github.com/spf13/jwalterweatherman"
@@ -50,11 +51,17 @@ func (m *Manager) Search(list fact.FactList, callback searchCallback, timeout ti
 		return errors.WithMessage(err, "Failed to transmit search request.")
 	}
 
+	if m.client != nil {
+		m.client.ReportEvent(1, "UserDiscovery", "SearchRequest",
+			fmt.Sprintf("Sent: %+v", request))
+	}
+
 	return nil
 }
 
 func (m *Manager) searchResponseHandler(factMap map[string]fact.Fact,
 	callback searchCallback, payload []byte, err error) {
+
 	if err != nil {
 		go callback(nil, errors.WithMessage(err, "Failed to search."))
 		return
@@ -66,6 +73,12 @@ func (m *Manager) searchResponseHandler(factMap map[string]fact.Fact,
 		jww.WARN.Printf("Dropped a search response from user discovery due to "+
 			"failed unmarshal: %s", err)
 	}
+
+	if m.client != nil {
+		m.client.ReportEvent(1, "UserDiscovery", "SearchResponse",
+			fmt.Sprintf("Received: %+v", searchResponse))
+	}
+
 	if searchResponse.Error != "" {
 		err = errors.Errorf("User Discovery returned an error on search: %s",
 			searchResponse.Error)
-- 
GitLab