From 82b2c325758dec9a7ab58881595bcf6bdf325878 Mon Sep 17 00:00:00 2001 From: 0xmuralik Date: Mon, 19 Dec 2022 15:11:52 +0530 Subject: [PATCH] unpack interface --- x/registry/types/codec.go | 6 ++++++ x/registry/types/record_msg.go | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/x/registry/types/codec.go b/x/registry/types/codec.go index 1a9dd50e..0d68a5f6 100644 --- a/x/registry/types/codec.go +++ b/x/registry/types/codec.go @@ -11,6 +11,8 @@ import ( // RegisterLegacyAminoCodec registers the necessary x/bond interfaces and concrete types // on the provided LegacyAmino codec. These types are used for Amino JSON serialization. func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + // legacy.RegisterAminoMsg(cdc, &MsgSetRecord{}, "registry/SetRecord") + cdc.RegisterConcrete(&MsgSetName{}, "registry/SetName", nil) cdc.RegisterConcrete(&MsgReserveAuthority{}, "registry/ReserveAuthority", nil) cdc.RegisterConcrete(&MsgDeleteNameAuthority{}, "registry/DeleteAuthority", nil) @@ -22,6 +24,10 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgDissociateBond{}, "registry/DissociateBond", nil) cdc.RegisterConcrete(&MsgDissociateRecords{}, "registry/DissociateRecords", nil) cdc.RegisterConcrete(&MsgReAssociateRecords{}, "registry/ReassociateRecords", nil) + + cdc.RegisterInterface((*Attributes)(nil), nil) + cdc.RegisterConcrete(&WebsiteRegistrationRecord{}, "registry/WebsiteRegistrationRecord", nil) + cdc.RegisterConcrete(&ServiceProviderRegistration{}, "registry/ServiceProviderRegistration", nil) } func RegisterInterfaces(registry types.InterfaceRegistry) { diff --git a/x/registry/types/record_msg.go b/x/registry/types/record_msg.go index a7678f2a..4d7d4dbc 100644 --- a/x/registry/types/record_msg.go +++ b/x/registry/types/record_msg.go @@ -3,6 +3,9 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" ) var ( @@ -12,6 +15,11 @@ var ( _ sdk.Msg = &MsgDissociateBond{} _ sdk.Msg = &MsgDissociateRecords{} _ sdk.Msg = &MsgReAssociateRecords{} + + // // For amino support. + _ legacytx.LegacyMsg = &MsgSetRecord{} + + _ cdctypes.UnpackInterfacesMessage = &MsgSetRecord{} ) // NewMsgSetRecord is the constructor function for MsgSetRecord. @@ -57,6 +65,31 @@ func (msg MsgSetRecord) GetSignBytes() []byte { return sdk.MustSortJSON(bz) } +// UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces +func (msg MsgSetRecord) UnpackInterfaces(unpacker cdctypes.AnyUnpacker) error { + x := msg.Payload.Record.Attributes + switch x.TypeUrl { + case "/vulcanize.registry.v1beta1.WebsiteRegistrationRecord": + { + var attr WebsiteRegistrationRecord + err := unpacker.UnpackAny(x, &attr) + if err != nil { + return err + } + } + case "/vulcanize.registry.v1beta1.ServiceProviderRegistration": + { + var attr ServiceProviderRegistration + err := unpacker.UnpackAny(x, &attr) + if err != nil { + return err + } + } + } + + return nil +} + // NewMsgRenewRecord is the constructor function for MsgRenewRecord. func NewMsgRenewRecord(recordID string, signer sdk.AccAddress) MsgRenewRecord { return MsgRenewRecord{