From ec61a6c78466523e3bca16f134ef1b6239877bcb Mon Sep 17 00:00:00 2001 From: joshemb <josh@elixxir.io> Date: Wed, 17 Aug 2022 09:53:25 -0700 Subject: [PATCH] Expose ud.IsRegistered to bindings --- bindings/ud.go | 23 +++++++++++++++++++++++ ud/manager.go | 4 ++-- ud/registered.go | 6 +++--- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/bindings/ud.go b/bindings/ud.go index 89ae1d9db..8170f87bf 100644 --- a/bindings/ud.go +++ b/bindings/ud.go @@ -105,6 +105,29 @@ type UdNetworkStatus interface { // Manager functions // //////////////////////////////////////////////////////////////////////////////// +// IsRegisteredWithUD is a function which checks the internal state +// files to determine if a user has registered with UD in the past. +// +// Parameters: +// - e2eID - REQUIRED. The tracked e2e object ID. This can be retrieved using [E2e.GetID]. +// +// Returns: +// - bool - A boolean representing true if the user has been registered with UD already +// or false if it has not been registered already. +// - error - An error should only be returned if the internal tracker failed to retrieve an +// E2e object given the e2eId. If an error was returned, the registration state check +// was not performed properly, and the boolean returned should be ignored. +func IsRegisteredWithUD(e2eId int) (bool, error) { + + // Get user from singleton + user, err := e2eTrackerSingleton.get(e2eId) + if err != nil { + return false, err + } + + return ud.IsRegistered(user.api.GetStorage().GetKV()), nil +} + // NewOrLoadUd loads an existing UserDiscovery from storage or creates a new // UserDiscovery if there is no storage data. Regardless of storage state, // the UserDiscovery object returned will be registered with the diff --git a/ud/manager.go b/ud/manager.go index 75380113f..1f2301050 100644 --- a/ud/manager.go +++ b/ud/manager.go @@ -90,7 +90,7 @@ func NewOrLoad(user udE2e, comms Comms, follower udNetworkStatus, } // If already registered, return - if m.isRegistered() { + if IsRegistered(m.getKv()) { return m, nil } @@ -223,7 +223,7 @@ func (m *Manager) getCmix() udCmix { return m.user.GetCmix() } -// getKv returns a versioned.KV used for isRegistered and setRegistered. +// getKv returns a versioned.KV used for IsRegistered and setRegistered. // This is separated from store operations as store's kv // has a different prefix which breaks backwards compatibility. func (m *Manager) getKv() *versioned.KV { diff --git a/ud/registered.go b/ud/registered.go index 06dba9588..77742fc17 100644 --- a/ud/registered.go +++ b/ud/registered.go @@ -11,10 +11,10 @@ import ( const isRegisteredKey = "isRegisteredKey" const isRegisteredVersion = 0 -// isRegistered loads from storage if the user is registered with user +// IsRegistered loads from storage if the user is registered with user // discovery. -func (m *Manager) isRegistered() bool { - _, err := m.getKv().Get(isRegisteredKey, isRegisteredVersion) +func IsRegistered(kv *versioned.KV) bool { + _, err := kv.Get(isRegisteredKey, isRegisteredVersion) if err != nil { return false } -- GitLab