diff --git a/cmd/ud.go b/cmd/ud.go index a2e2b8614af284a81078aafe6f742ef4145299e0..d8a87297abc5de86cedd406d1e51b0affb351c75 100644 --- a/cmd/ud.go +++ b/cmd/ud.go @@ -9,17 +9,18 @@ package cmd import ( - "encoding/json" "fmt" "time" "github.com/spf13/cobra" jww "github.com/spf13/jwalterweatherman" "github.com/spf13/viper" + "gitlab.com/elixxir/client/bindings" "gitlab.com/elixxir/client/interfaces/message" "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/switchboard" "gitlab.com/elixxir/client/ud" + "gitlab.com/elixxir/client/xxmutils" "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/primitives/id" @@ -169,32 +170,18 @@ var udCmd = &cobra.Command{ err.Error()) jww.FATAL.Panicf("BATCHADD: Couldn't read file: %+v", err) } - - var idList []*id.ID - err = json.Unmarshal(idListFile, &idList) + bindingsClient := bindings.WrapAPIClient(client) + bindingsUdMgr := bindings.WrapUserDiscovery( + userDiscoveryMgr) + report, err := xxmutils.RestoreContactsFromBackup( + idListFile, bindingsClient, bindingsUdMgr, nil) if err != nil { - fmt.Printf("BATCHADD: Couldn't umarshal id list: %s\n", - err.Error()) - jww.FATAL.Panicf("BATCHADD: Couldn't read file: %+v", err) - } - - jww.INFO.Printf("BATCHADD: %d IDs: %v", len(idList), idList) - - cb := func(newContact contact.Contact, err error) { - if err != nil { - jww.WARN.Printf("BATCHADD: %+v", err) - return - } - - jww.INFO.Printf("BATCHADD: contact %s", newContact) - - resetAuthenticatedChannel(client, newContact.ID, newContact) + jww.FATAL.Panicf("%+v", err) } - - userDiscoveryMgr.BatchLookup(idList, cb, 90*time.Second) - - for _, uid := range idList { - for client.HasAuthenticatedChannel(uid) == false { + for i := 0; i < report.LenRestored(); i++ { + idBytes := report.GetRestoredAt(i) + uid, _ := id.Unmarshal(idBytes) + for !client.HasAuthenticatedChannel(uid) { time.Sleep(time.Second) } jww.INFO.Printf("Authenticated channel established for %s", uid)