From f0340ef8e45f872a09e5a77eecde6ac2c6c8cd6c Mon Sep 17 00:00:00 2001 From: josh <josh@elixxir.io> Date: Mon, 8 Nov 2021 12:18:44 -0800 Subject: [PATCH] Add groupReport marshal() --- bindings/group.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/bindings/group.go b/bindings/group.go index 4b14d61d3..729aac878 100644 --- a/bindings/group.go +++ b/bindings/group.go @@ -8,6 +8,8 @@ package bindings import ( + "encoding/json" + "fmt" "github.com/pkg/errors" gc "gitlab.com/elixxir/client/groupChat" gs "gitlab.com/elixxir/client/groupChat/groupStore" @@ -167,6 +169,12 @@ type NewGroupReport struct { err string } +type GroupReportDisk struct { + List []id.Round + GrpId []byte + Status int +} + // GetGroup returns the Group. func (ngr *NewGroupReport) GetGroup() *Group { return ngr.group @@ -193,6 +201,36 @@ func (ngr *NewGroupReport) GetError() string { return ngr.err } + +func (ngr *NewGroupReport) Marshal() ([]byte, error) { + grpReportDisk := GroupReportDisk{ + List: ngr.rounds, + GrpId: ngr.group.GetID()[:], + Status: ngr.GetStatus(), + } + return json.Marshal(&grpReportDisk) +} + +func (ngr *NewGroupReport) Unmarshal(b []byte) error { + grpReportDisk := GroupReportDisk{} + if err := json.Unmarshal(b, &grpReportDisk); err != nil { + return errors.New(fmt.Sprintf("Failed to unmarshal group "+ + "report: %s", err.Error())) + } + + grpId, err := id.Unmarshal(grpReportDisk.GrpId) + if err != nil { + return errors.New(fmt.Sprintf("Failed to unmarshal group "+ + "id: %s", err.Error())) + } + + ngr.group.g.ID = grpId + ngr.rounds = grpReportDisk.List + ngr.status = gc.RequestStatus(grpReportDisk.Status) + + return nil +} + //// // NewGroupReport Structure //// -- GitLab