From 7ecf83aa1f65cf6269330e3e1f64bc85daf158b2 Mon Sep 17 00:00:00 2001
From: jbhusson <jonah@elixxir.io>
Date: Tue, 1 Nov 2022 16:23:50 -0400
Subject: [PATCH] Trigger backup on UD register, confirm fact, delete fact

---
 fileTransfer/store/received.go | 2 +-
 ud/confirmFact.go              | 1 +
 ud/interfaces.go               | 1 +
 ud/mockE2e_test.go             | 4 ++++
 ud/register.go                 | 1 +
 ud/remove.go                   | 9 +++++++--
 6 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/fileTransfer/store/received.go b/fileTransfer/store/received.go
index 189025a71..db46299a0 100644
--- a/fileTransfer/store/received.go
+++ b/fileTransfer/store/received.go
@@ -73,7 +73,7 @@ func NewOrLoadReceived(kv *versioned.KV) (*Received, []*ReceivedTransfer, error)
 		tid := tidList[i]
 		s.transfers[tid], err = loadReceivedTransfer(&tid, s.kv)
 		if err != nil {
-			jww.WARN.Print(warnLoadReceivedTransfer, i, len(tidList), tid, err)
+			jww.WARN.Printf(warnLoadReceivedTransfer, i, len(tidList), tid, err)
 			errCount++
 		}
 
diff --git a/ud/confirmFact.go b/ud/confirmFact.go
index 8fdafc24a..ec8d542a1 100644
--- a/ud/confirmFact.go
+++ b/ud/confirmFact.go
@@ -41,6 +41,7 @@ func (m *Manager) confirmFact(confirmationID, code string, comm confirmFactComm)
 			"Failed to confirm fact in storage with confirmation ID: %q",
 			confirmationID)
 	}
+	m.user.GetBackupContainer().TriggerBackup("Fact confirmed")
 
 	return nil
 }
diff --git a/ud/interfaces.go b/ud/interfaces.go
index 9439d365c..6280beb19 100644
--- a/ud/interfaces.go
+++ b/ud/interfaces.go
@@ -39,6 +39,7 @@ type udE2e interface {
 	GetRng() *fastRNG.StreamGenerator
 	GetStorage() storage.Session
 	GetTransmissionIdentity() xxdk.TransmissionIdentity
+	GetBackupContainer() *xxdk.Container
 }
 
 // udNetworkStatus is an interface for the xxdk.Cmix's
diff --git a/ud/mockE2e_test.go b/ud/mockE2e_test.go
index e903d7eb5..335f071d9 100644
--- a/ud/mockE2e_test.go
+++ b/ud/mockE2e_test.go
@@ -46,6 +46,10 @@ type mockE2e struct {
 	key       *rsa.PrivateKey
 }
 
+func (m mockE2e) GetBackupContainer() *xxdk.Container {
+	return &xxdk.Container{}
+}
+
 func (m mockE2e) GetE2E() e2e.Handler {
 	return mockE2eHandler{}
 }
diff --git a/ud/register.go b/ud/register.go
index d70eaf0e2..0cf1f7ba8 100644
--- a/ud/register.go
+++ b/ud/register.go
@@ -95,6 +95,7 @@ func (m *Manager) register(username string, networkSignature []byte,
 		m.getEventReporter().Report(1, "UserDiscovery", "Registration",
 			fmt.Sprintf("User Registered with UD: %+v",
 				username))
+		m.user.GetBackupContainer().TriggerBackup("User registered with UD")
 	}
 
 	return err
diff --git a/ud/remove.go b/ud/remove.go
index 71db207ed..e2a719c70 100644
--- a/ud/remove.go
+++ b/ud/remove.go
@@ -26,8 +26,13 @@ import (
 func (m *Manager) RemoveFact(f fact.Fact) error {
 	jww.INFO.Printf("ud.RemoveFact(%s)", f.Stringify())
 	m.factMux.Lock()
-	defer m.factMux.Unlock()
-	return m.removeFact(f, m.comms)
+	err := m.removeFact(f, m.comms)
+	m.factMux.Unlock()
+	if err != nil {
+		return err
+	}
+	m.user.GetBackupContainer().TriggerBackup("Removed fact")
+	return nil
 }
 
 // removeFact is a helper function which contacts the UD service
-- 
GitLab