Skip to content

Commit 258341a

Browse files
committed
[chore] added back the function to create a TxConfig with configurable signing modes
1 parent 9ccb3b7 commit 258341a

File tree

1 file changed

+53
-39
lines changed

1 file changed

+53
-39
lines changed

client/chain/context.go

Lines changed: 53 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ func NewInterfaceRegistry() types.InterfaceRegistry {
7878
return registry
7979
}
8080

81+
// NewTxConfig initializes new Cosmos TxConfig with certain signModes enabled.
82+
func NewTxConfig(signModes []signingtypes.SignMode) client.TxConfig {
83+
marshaler, _ := createInjectiveProtoCodec()
84+
return tx.NewTxConfig(marshaler, signModes)
85+
}
86+
8187
// NewClientContext creates a new Cosmos Client context, where chainID
8288
// corresponds to Cosmos chain ID, fromSpec is either name of the key, or bech32-address
8389
// of the Cosmos account. Keyring is required to contain the specified key.
@@ -86,7 +92,51 @@ func NewClientContext(
8692
) (client.Context, error) {
8793
clientCtx := client.Context{}
8894

89-
interfaceRegistry := NewInterfaceRegistry()
95+
marshaler, interfaceRegistry := createInjectiveProtoCodec()
96+
97+
encodingConfig := EncodingConfig{
98+
InterfaceRegistry: interfaceRegistry,
99+
Marshaler: marshaler,
100+
TxConfig: tx.NewTxConfig(marshaler, []signingtypes.SignMode{
101+
signingtypes.SignMode_SIGN_MODE_DIRECT,
102+
}),
103+
}
104+
105+
var keyInfo keyring.Record
106+
107+
if kb != nil {
108+
addr, err := cosmostypes.AccAddressFromBech32(fromSpec)
109+
if err == nil {
110+
record, err := kb.KeyByAddress(addr)
111+
if err != nil {
112+
err = errors.Wrapf(err, "failed to load key info by address %s", addr.String())
113+
return clientCtx, err
114+
}
115+
keyInfo = *record
116+
} else {
117+
// failed to parse Bech32, is it a name?
118+
record, err := kb.Key(fromSpec)
119+
if err != nil {
120+
err = errors.Wrapf(err, "no key in keyring for name: %s", fromSpec)
121+
return clientCtx, err
122+
}
123+
keyInfo = *record
124+
}
125+
}
126+
127+
clientCtx = newContext(
128+
chainId,
129+
encodingConfig,
130+
kb,
131+
keyInfo,
132+
)
133+
134+
return clientCtx, nil
135+
}
136+
137+
func createInjectiveProtoCodec() (injectiveCodec *codec.ProtoCodec, interfaceRegistry types.InterfaceRegistry) {
138+
interfaceRegistry = NewInterfaceRegistry()
139+
90140
keyscodec.RegisterInterfaces(interfaceRegistry)
91141
std.RegisterInterfaces(interfaceRegistry)
92142
exchange.RegisterInterfaces(interfaceRegistry)
@@ -131,45 +181,9 @@ func NewClientContext(
131181
ibcconnectiontypes.RegisterInterfaces(interfaceRegistry)
132182
ibctransfertypes.RegisterInterfaces(interfaceRegistry)
133183

134-
marshaler := codec.NewProtoCodec(interfaceRegistry)
135-
encodingConfig := EncodingConfig{
136-
InterfaceRegistry: interfaceRegistry,
137-
Marshaler: marshaler,
138-
TxConfig: tx.NewTxConfig(marshaler, []signingtypes.SignMode{
139-
signingtypes.SignMode_SIGN_MODE_DIRECT,
140-
}),
141-
}
142-
143-
var keyInfo keyring.Record
144-
145-
if kb != nil {
146-
addr, err := cosmostypes.AccAddressFromBech32(fromSpec)
147-
if err == nil {
148-
record, err := kb.KeyByAddress(addr)
149-
if err != nil {
150-
err = errors.Wrapf(err, "failed to load key info by address %s", addr.String())
151-
return clientCtx, err
152-
}
153-
keyInfo = *record
154-
} else {
155-
// failed to parse Bech32, is it a name?
156-
record, err := kb.Key(fromSpec)
157-
if err != nil {
158-
err = errors.Wrapf(err, "no key in keyring for name: %s", fromSpec)
159-
return clientCtx, err
160-
}
161-
keyInfo = *record
162-
}
163-
}
164-
165-
clientCtx = newContext(
166-
chainId,
167-
encodingConfig,
168-
kb,
169-
keyInfo,
170-
)
184+
injectiveCodec = codec.NewProtoCodec(interfaceRegistry)
171185

172-
return clientCtx, nil
186+
return injectiveCodec, interfaceRegistry
173187
}
174188

175189
type EncodingConfig struct {

0 commit comments

Comments
 (0)