@keplr-wallet/hooks 0.9.8 → 0.9.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/ibc/gas.js +3 -3
- package/build/ibc/gas.js.map +1 -1
- package/build/sign-doc/amount.d.ts +8 -5
- package/build/sign-doc/amount.js +58 -9
- package/build/sign-doc/amount.js.map +1 -1
- package/build/sign-doc/index.js +6 -0
- package/build/sign-doc/index.js.map +1 -1
- package/build/tx/amount.js +1 -1
- package/build/tx/errors.d.ts +1 -1
- package/build/tx/errors.js +4 -4
- package/build/tx/fee.d.ts +3 -0
- package/build/tx/fee.js +16 -0
- package/build/tx/fee.js.map +1 -1
- package/build/tx/gas.d.ts +4 -3
- package/build/tx/gas.js +49 -6
- package/build/tx/gas.js.map +1 -1
- package/build/tx/send-gas.d.ts +2 -3
- package/build/tx/send-gas.js +4 -2
- package/build/tx/send-gas.js.map +1 -1
- package/build/tx/send-tx.d.ts +2 -2
- package/build/tx/send-tx.js.map +1 -1
- package/build/tx/staked-amount.js +1 -1
- package/build/tx/types.d.ts +2 -1
- package/build/tx/types.js.map +1 -1
- package/package.json +9 -9
- package/src/ibc/gas.ts +3 -3
- package/src/sign-doc/amount.ts +61 -8
- package/src/sign-doc/index.ts +7 -0
- package/src/tx/amount.ts +2 -2
- package/src/tx/errors.ts +2 -2
- package/src/tx/fee.ts +16 -0
- package/src/tx/gas.ts +57 -7
- package/src/tx/send-gas.ts +11 -5
- package/src/tx/send-tx.ts +2 -1
- package/src/tx/staked-amount.ts +2 -2
- package/src/tx/types.ts +5 -1
package/build/ibc/gas.js
CHANGED
|
@@ -12,7 +12,7 @@ const mobx_1 = require("mobx");
|
|
|
12
12
|
const react_1 = require("react");
|
|
13
13
|
class IBCTransferGasConfig extends tx_1.GasConfig {
|
|
14
14
|
constructor(chainGetter, initialChainId, msgOpts) {
|
|
15
|
-
super(chainGetter, initialChainId
|
|
15
|
+
super(chainGetter, initialChainId);
|
|
16
16
|
this.msgOpts = msgOpts;
|
|
17
17
|
mobx_1.makeObservable(this);
|
|
18
18
|
}
|
|
@@ -21,10 +21,10 @@ class IBCTransferGasConfig extends tx_1.GasConfig {
|
|
|
21
21
|
}
|
|
22
22
|
get gas() {
|
|
23
23
|
// If gas not set manually, assume that the tx is for MsgTransfer.
|
|
24
|
-
if (this.
|
|
24
|
+
if (this._gasRaw == null) {
|
|
25
25
|
return this.msgOpts.gas;
|
|
26
26
|
}
|
|
27
|
-
return
|
|
27
|
+
return super.gas;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
__decorate([
|
package/build/ibc/gas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/ibc/gas.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8BAAkC;AAElC,+BAA0D;AAC1D,iCAAiC;AAEjC,MAAa,oBAAqB,SAAQ,cAAS;IAIjD,YACE,WAAwB,EACxB,cAAsB,EACtB,OAAqC;QAErC,KAAK,CAAC,WAAW,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/ibc/gas.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8BAAkC;AAElC,+BAA0D;AAC1D,iCAAiC;AAEjC,MAAa,oBAAqB,SAAQ,cAAS;IAIjD,YACE,WAAwB,EACxB,cAAsB,EACtB,OAAqC;QAErC,KAAK,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,qBAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAGD,UAAU,CAAC,IAAkC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,IAAI,GAAG;QACL,kEAAkE;QAClE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;SACzB;QAED,OAAO,KAAK,CAAC,GAAG,CAAC;IACnB,CAAC;CACF;AA3BC;IADC,iBAAU,CAAC,GAAG;qDACiC;AAehD;IADC,aAAM;sDAGN;AAnBH,oDA6BC;AAEM,MAAM,uBAAuB,GAAG,CACrC,WAAwB,EACxB,OAAe,EACf,OAAqC,EACrC,EAAE;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,gBAAQ,CAC1B,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAC9D,CAAC;IACF,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAZW,QAAA,uBAAuB,2BAYlC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { IAmountConfig } from "../tx";
|
|
2
|
-
import { TxChainSetter } from "../tx/chain";
|
|
1
|
+
import { IAmountConfig, TxChainSetter } from "../tx";
|
|
3
2
|
import { ChainGetter, CoinPrimitive, CosmosMsgOpts } from "@keplr-wallet/stores";
|
|
4
3
|
import { AppCurrency } from "@keplr-wallet/types";
|
|
5
4
|
import { SignDocHelper } from "./index";
|
|
@@ -7,12 +6,15 @@ import { Msg } from "@cosmjs/launchpad";
|
|
|
7
6
|
export declare class SignDocAmountConfig extends TxChainSetter implements IAmountConfig {
|
|
8
7
|
protected msgOpts: CosmosMsgOpts;
|
|
9
8
|
protected signDocHelper?: SignDocHelper;
|
|
10
|
-
|
|
9
|
+
protected _sender: string;
|
|
10
|
+
protected _disableBalanceCheck: boolean;
|
|
11
|
+
constructor(chainGetter: ChainGetter, initialChainId: string, msgOpts: CosmosMsgOpts, sender: string);
|
|
11
12
|
setMsgOpts(opts: CosmosMsgOpts): void;
|
|
12
13
|
setSignDocHelper(signDocHelper: SignDocHelper): void;
|
|
13
14
|
get amount(): string;
|
|
14
15
|
get sendCurrency(): AppCurrency;
|
|
15
16
|
get sendableCurrencies(): AppCurrency[];
|
|
17
|
+
setSender(sender: string): void;
|
|
16
18
|
get sender(): string;
|
|
17
19
|
getAmountPrimitive: () => CoinPrimitive;
|
|
18
20
|
protected computeAmountInAminoMsgs(msgs: readonly Msg[]): {
|
|
@@ -29,6 +31,7 @@ export declare class SignDocAmountConfig extends TxChainSetter implements IAmoun
|
|
|
29
31
|
get isMax(): boolean;
|
|
30
32
|
setAmount(): void;
|
|
31
33
|
setSendCurrency(): void;
|
|
32
|
-
|
|
34
|
+
setDisableBalanceCheck(bool: boolean): void;
|
|
35
|
+
get disableBalanceCheck(): boolean;
|
|
33
36
|
}
|
|
34
|
-
export declare const useSignDocAmountConfig: (chainGetter: ChainGetter, chainId: string, msgOpts: CosmosMsgOpts) => SignDocAmountConfig;
|
|
37
|
+
export declare const useSignDocAmountConfig: (chainGetter: ChainGetter, chainId: string, msgOpts: CosmosMsgOpts, sender: string) => SignDocAmountConfig;
|
package/build/sign-doc/amount.js
CHANGED
|
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.useSignDocAmountConfig = exports.SignDocAmountConfig = void 0;
|
|
10
|
-
const
|
|
10
|
+
const tx_1 = require("../tx");
|
|
11
11
|
const mobx_1 = require("mobx");
|
|
12
12
|
const unit_1 = require("@keplr-wallet/unit");
|
|
13
13
|
const react_1 = require("react");
|
|
@@ -16,13 +16,15 @@ const cosmos_1 = require("@keplr-wallet/cosmos");
|
|
|
16
16
|
// This config helps the fee config to calculate that the fee is enough to send with considering
|
|
17
17
|
// the amount in the sign doc.
|
|
18
18
|
// This sets the amount as the sum of the messages in the sign doc if the message is known and can be parsed.
|
|
19
|
-
class SignDocAmountConfig extends
|
|
20
|
-
constructor(chainGetter, initialChainId, msgOpts) {
|
|
19
|
+
class SignDocAmountConfig extends tx_1.TxChainSetter {
|
|
20
|
+
constructor(chainGetter, initialChainId, msgOpts, sender) {
|
|
21
21
|
super(chainGetter, initialChainId);
|
|
22
22
|
this.signDocHelper = undefined;
|
|
23
|
+
this._disableBalanceCheck = false;
|
|
23
24
|
this.getAmountPrimitive = mobx_utils_1.computedFn(() => {
|
|
24
25
|
var _a;
|
|
25
|
-
if (
|
|
26
|
+
if (this.disableBalanceCheck ||
|
|
27
|
+
!((_a = this.signDocHelper) === null || _a === void 0 ? void 0 : _a.signDocWrapper) ||
|
|
26
28
|
this.chainInfo.feeCurrencies.length === 0) {
|
|
27
29
|
return {
|
|
28
30
|
amount: "0",
|
|
@@ -37,6 +39,7 @@ class SignDocAmountConfig extends chain_1.TxChainSetter {
|
|
|
37
39
|
}
|
|
38
40
|
});
|
|
39
41
|
this.msgOpts = msgOpts;
|
|
42
|
+
this._sender = sender;
|
|
40
43
|
mobx_1.makeObservable(this);
|
|
41
44
|
}
|
|
42
45
|
setMsgOpts(opts) {
|
|
@@ -59,8 +62,11 @@ class SignDocAmountConfig extends chain_1.TxChainSetter {
|
|
|
59
62
|
get sendableCurrencies() {
|
|
60
63
|
return [this.sendCurrency];
|
|
61
64
|
}
|
|
65
|
+
setSender(sender) {
|
|
66
|
+
this._sender = sender;
|
|
67
|
+
}
|
|
62
68
|
get sender() {
|
|
63
|
-
return
|
|
69
|
+
return this._sender;
|
|
64
70
|
}
|
|
65
71
|
computeAmountInAminoMsgs(msgs) {
|
|
66
72
|
const amount = new unit_1.Coin(this.sendCurrency.coinMinimalDenom, new unit_1.Int(0));
|
|
@@ -68,6 +74,13 @@ class SignDocAmountConfig extends chain_1.TxChainSetter {
|
|
|
68
74
|
try {
|
|
69
75
|
switch (msg.type) {
|
|
70
76
|
case this.msgOpts.send.native.type:
|
|
77
|
+
if (msg.value.from_address &&
|
|
78
|
+
msg.value.from_address !== this.sender) {
|
|
79
|
+
return {
|
|
80
|
+
amount: "0",
|
|
81
|
+
denom: this.sendCurrency.coinMinimalDenom,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
71
84
|
if (msg.value.amount && Array.isArray(msg.value.amount)) {
|
|
72
85
|
for (const amountInMsg of msg.value.amount) {
|
|
73
86
|
if (amountInMsg.denom === amount.denom) {
|
|
@@ -77,6 +90,13 @@ class SignDocAmountConfig extends chain_1.TxChainSetter {
|
|
|
77
90
|
}
|
|
78
91
|
break;
|
|
79
92
|
case this.msgOpts.delegate.type:
|
|
93
|
+
if (msg.value.delegator_address &&
|
|
94
|
+
msg.value.delegator_address !== this.sender) {
|
|
95
|
+
return {
|
|
96
|
+
amount: "0",
|
|
97
|
+
denom: this.sendCurrency.coinMinimalDenom,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
80
100
|
if (msg.value.amount && msg.value.amount.denom === amount.denom) {
|
|
81
101
|
amount.amount = amount.amount.add(new unit_1.Int(msg.value.amount.amount));
|
|
82
102
|
}
|
|
@@ -100,6 +120,12 @@ class SignDocAmountConfig extends chain_1.TxChainSetter {
|
|
|
100
120
|
switch (msg.constructor) {
|
|
101
121
|
case cosmos_1.cosmos.bank.v1beta1.MsgSend:
|
|
102
122
|
const sendMsg = msg;
|
|
123
|
+
if (sendMsg.fromAddress && sendMsg.fromAddress !== this.sender) {
|
|
124
|
+
return {
|
|
125
|
+
amount: "0",
|
|
126
|
+
denom: this.sendCurrency.coinMinimalDenom,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
103
129
|
for (const amountInMsg of sendMsg.amount) {
|
|
104
130
|
if (amountInMsg.denom === amount.denom && amountInMsg.amount) {
|
|
105
131
|
amount.amount = amount.amount.add(new unit_1.Int(amountInMsg.amount));
|
|
@@ -108,6 +134,13 @@ class SignDocAmountConfig extends chain_1.TxChainSetter {
|
|
|
108
134
|
break;
|
|
109
135
|
case cosmos_1.cosmos.staking.v1beta1.MsgDelegate:
|
|
110
136
|
const delegateMsg = msg;
|
|
137
|
+
if (delegateMsg.delegatorAddress &&
|
|
138
|
+
delegateMsg.delegatorAddress !== this.sender) {
|
|
139
|
+
return {
|
|
140
|
+
amount: "0",
|
|
141
|
+
denom: this.sendCurrency.coinMinimalDenom,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
111
144
|
if (((_a = delegateMsg.amount) === null || _a === void 0 ? void 0 : _a.denom) === amount.denom &&
|
|
112
145
|
delegateMsg.amount.amount) {
|
|
113
146
|
amount.amount = amount.amount.add(new unit_1.Int(delegateMsg.amount.amount));
|
|
@@ -143,8 +176,11 @@ class SignDocAmountConfig extends chain_1.TxChainSetter {
|
|
|
143
176
|
setSendCurrency() {
|
|
144
177
|
// noop
|
|
145
178
|
}
|
|
146
|
-
|
|
147
|
-
|
|
179
|
+
setDisableBalanceCheck(bool) {
|
|
180
|
+
this._disableBalanceCheck = bool;
|
|
181
|
+
}
|
|
182
|
+
get disableBalanceCheck() {
|
|
183
|
+
return this._disableBalanceCheck;
|
|
148
184
|
}
|
|
149
185
|
}
|
|
150
186
|
__decorate([
|
|
@@ -153,6 +189,12 @@ __decorate([
|
|
|
153
189
|
__decorate([
|
|
154
190
|
mobx_1.observable.ref
|
|
155
191
|
], SignDocAmountConfig.prototype, "signDocHelper", void 0);
|
|
192
|
+
__decorate([
|
|
193
|
+
mobx_1.observable
|
|
194
|
+
], SignDocAmountConfig.prototype, "_sender", void 0);
|
|
195
|
+
__decorate([
|
|
196
|
+
mobx_1.observable
|
|
197
|
+
], SignDocAmountConfig.prototype, "_disableBalanceCheck", void 0);
|
|
156
198
|
__decorate([
|
|
157
199
|
mobx_1.action
|
|
158
200
|
], SignDocAmountConfig.prototype, "setMsgOpts", null);
|
|
@@ -162,11 +204,18 @@ __decorate([
|
|
|
162
204
|
__decorate([
|
|
163
205
|
mobx_1.computed
|
|
164
206
|
], SignDocAmountConfig.prototype, "amount", null);
|
|
207
|
+
__decorate([
|
|
208
|
+
mobx_1.action
|
|
209
|
+
], SignDocAmountConfig.prototype, "setSender", null);
|
|
210
|
+
__decorate([
|
|
211
|
+
mobx_1.action
|
|
212
|
+
], SignDocAmountConfig.prototype, "setDisableBalanceCheck", null);
|
|
165
213
|
exports.SignDocAmountConfig = SignDocAmountConfig;
|
|
166
|
-
const useSignDocAmountConfig = (chainGetter, chainId, msgOpts) => {
|
|
167
|
-
const [config] = react_1.useState(() => new SignDocAmountConfig(chainGetter, chainId, msgOpts));
|
|
214
|
+
const useSignDocAmountConfig = (chainGetter, chainId, msgOpts, sender) => {
|
|
215
|
+
const [config] = react_1.useState(() => new SignDocAmountConfig(chainGetter, chainId, msgOpts, sender));
|
|
168
216
|
config.setChain(chainId);
|
|
169
217
|
config.setMsgOpts(msgOpts);
|
|
218
|
+
config.setSender(sender);
|
|
170
219
|
return config;
|
|
171
220
|
};
|
|
172
221
|
exports.useSignDocAmountConfig = useSignDocAmountConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../../src/sign-doc/amount.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../../src/sign-doc/amount.ts"],"names":[],"mappings":"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"}
|
package/build/sign-doc/index.js
CHANGED
|
@@ -37,6 +37,12 @@ class SignDocHelper {
|
|
|
37
37
|
if (!this._signDocWrapper) {
|
|
38
38
|
return undefined;
|
|
39
39
|
}
|
|
40
|
+
// If the sign doc is for ADR-36,
|
|
41
|
+
// The fee and memo should be empty.
|
|
42
|
+
// Ignore the fee and memo config, and just return itself.
|
|
43
|
+
if (this._signDocWrapper.isADR36SignDoc) {
|
|
44
|
+
return this._signDocWrapper;
|
|
45
|
+
}
|
|
40
46
|
const stdFee = this.feeConfig.toStdFee();
|
|
41
47
|
if (this._signDocWrapper.mode === "amino") {
|
|
42
48
|
const signDoc = Object.assign(Object.assign({}, this._signDocWrapper.aminoSignDoc), { fee: stdFee, memo: this.memoConfig.memo });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sign-doc/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAoE;AACpE,iCAAiC;AAEjC,iDAA8D;AAC9D,gDAAwB;AAExB,2CAAyB;AAEzB,MAAa,aAAa;IAIxB,YACqB,SAAqB,EACrB,UAAuB;QADvB,cAAS,GAAT,SAAS,CAAY;QACrB,eAAU,GAAV,UAAU,CAAa;QAJlC,oBAAe,GAAoB,SAAS,CAAC;QAMrD,qBAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAGD,IAAI,cAAc;;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAEzC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,OAAO,EAAE;YACzC,MAAM,OAAO,mCACR,IAAI,CAAC,eAAe,CAAC,YAAY,KACpC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,GAC3B,CAAC;YAEF,OAAO,uBAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;SACjD;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,eAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;YACpC,QAAQ,EAAE,cAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChC,OAAO;oBACL,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB,CAAC;YACJ,CAAC,CAAC;YACF,OAAO,EAAE,OAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,0CAAE,OAAO,EACzC,CAAC,OAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,0CAAE,OAAO,CACpC,CAAC,CAAC,IAAI;YACR,KAAK,EAAE,OAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,0CAAE,KAAK,EACrC,CAAC,OAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,0CAAE,OAAO,CACpC,CAAC,CAAC,IAAI;SACT,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,eAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,iCAC9C,YAAY,CAAC,OAAO,GACpB;YACD,SAAS,EAAE,eAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,iCACrC,YAAY,CAAC,MAAM,GACnB;gBACD,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;aAC3B,EACD,CAAC,MAAM,EAAE;YACX,aAAa,EAAE,eAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,iCAC3C,YAAY,CAAC,QAAQ,GACrB;gBACD,GAAG;aACJ,EACD,CAAC,MAAM,EAAE;SACZ,EACD,CAAC;QAEH,OAAO,uBAAc,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAGD,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,OAAO,EAAE;YACxC,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;SACzC;aAAM;YACL,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;SAClD;IACH,CAAC;IAGD,iBAAiB,CAAC,OAAmC;QACnD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;IACjC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sign-doc/index.ts"],"names":[],"mappings":"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"}
|
package/build/tx/amount.js
CHANGED
|
@@ -137,7 +137,7 @@ class AmountConfig extends chain_1.TxChainSetter {
|
|
|
137
137
|
return new errors_1.InvalidNumberAmountError("Invalid form of number");
|
|
138
138
|
}
|
|
139
139
|
if (new unit_1.Dec(this.amount).lt(new unit_1.Dec(0))) {
|
|
140
|
-
return new errors_1.
|
|
140
|
+
return new errors_1.NegativeAmountError("Amount is negative");
|
|
141
141
|
}
|
|
142
142
|
const balance = this.queryBalances
|
|
143
143
|
.getQueryBech32Address(this.sender)
|
package/build/tx/errors.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export declare class InvalidNumberAmountError extends Error {
|
|
|
22
22
|
export declare class ZeroAmountError extends Error {
|
|
23
23
|
constructor(m: string);
|
|
24
24
|
}
|
|
25
|
-
export declare class
|
|
25
|
+
export declare class NegativeAmountError extends Error {
|
|
26
26
|
constructor(m: string);
|
|
27
27
|
}
|
|
28
28
|
export declare class InsufficientAmountError extends Error {
|
package/build/tx/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InsufficientFeeError = exports.NotLoadedFeeError = exports.InsufficientAmountError = exports.
|
|
3
|
+
exports.InsufficientFeeError = exports.NotLoadedFeeError = exports.InsufficientAmountError = exports.NegativeAmountError = exports.ZeroAmountError = exports.InvalidNumberAmountError = exports.EmptyAmountError = exports.ENSFailedToFetchError = exports.ENSIsFetchingError = exports.ENSNotSupportedError = exports.InvalidBech32Error = exports.EmptyAddressError = void 0;
|
|
4
4
|
class EmptyAddressError extends Error {
|
|
5
5
|
constructor(m) {
|
|
6
6
|
super(m);
|
|
@@ -65,14 +65,14 @@ class ZeroAmountError extends Error {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
exports.ZeroAmountError = ZeroAmountError;
|
|
68
|
-
class
|
|
68
|
+
class NegativeAmountError extends Error {
|
|
69
69
|
constructor(m) {
|
|
70
70
|
super(m);
|
|
71
71
|
// Set the prototype explicitly.
|
|
72
|
-
Object.setPrototypeOf(this,
|
|
72
|
+
Object.setPrototypeOf(this, NegativeAmountError.prototype);
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
exports.
|
|
75
|
+
exports.NegativeAmountError = NegativeAmountError;
|
|
76
76
|
class InsufficientAmountError extends Error {
|
|
77
77
|
constructor(m) {
|
|
78
78
|
super(m);
|
package/build/tx/fee.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export declare class FeeConfig extends TxChainSetter implements IFeeConfig {
|
|
|
20
20
|
* @protected
|
|
21
21
|
*/
|
|
22
22
|
protected additionAmountToNeedFee: boolean;
|
|
23
|
+
protected _disableBalanceCheck: boolean;
|
|
23
24
|
constructor(chainGetter: ChainGetter, initialChainId: string, sender: string, queryBalances: ObservableQueryBalances, amountConfig: IAmountConfig, gasConfig: IGasConfig, additionAmountToNeedFee?: boolean);
|
|
24
25
|
setAdditionAmountToNeedFee(additionAmountToNeedFee: boolean): void;
|
|
25
26
|
setQueryBalances(queryBalances: ObservableQueryBalances): void;
|
|
@@ -36,5 +37,7 @@ export declare class FeeConfig extends TxChainSetter implements IFeeConfig {
|
|
|
36
37
|
protected getFeeTypePrimitive(feeType: FeeType): CoinPrimitive;
|
|
37
38
|
readonly getFeeTypePretty: (feeType: FeeType) => CoinPretty;
|
|
38
39
|
getError(): Error | undefined;
|
|
40
|
+
setDisableBalanceCheck(bool: boolean): void;
|
|
41
|
+
get disableBalanceCheck(): boolean;
|
|
39
42
|
}
|
|
40
43
|
export declare const useFeeConfig: (chainGetter: ChainGetter, chainId: string, sender: string, queryBalances: ObservableQueryBalances, amountConfig: IAmountConfig, gasConfig: IGasConfig, additionAmountToNeedFee?: boolean) => FeeConfig;
|
package/build/tx/fee.js
CHANGED
|
@@ -29,6 +29,7 @@ class FeeConfig extends chain_1.TxChainSetter {
|
|
|
29
29
|
* @protected
|
|
30
30
|
*/
|
|
31
31
|
this.additionAmountToNeedFee = true;
|
|
32
|
+
this._disableBalanceCheck = false;
|
|
32
33
|
this.getFeeTypePretty = mobx_utils_1.computedFn((feeType) => {
|
|
33
34
|
if (!this.feeCurrency) {
|
|
34
35
|
throw new Error("Fee currency not set");
|
|
@@ -128,6 +129,9 @@ class FeeConfig extends chain_1.TxChainSetter {
|
|
|
128
129
|
if (this.gasConfig.getError()) {
|
|
129
130
|
return this.gasConfig.getError();
|
|
130
131
|
}
|
|
132
|
+
if (this.disableBalanceCheck) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
131
135
|
const fee = this.getFeePrimitive();
|
|
132
136
|
if (!fee) {
|
|
133
137
|
return undefined;
|
|
@@ -163,6 +167,12 @@ class FeeConfig extends chain_1.TxChainSetter {
|
|
|
163
167
|
}
|
|
164
168
|
}
|
|
165
169
|
}
|
|
170
|
+
setDisableBalanceCheck(bool) {
|
|
171
|
+
this._disableBalanceCheck = bool;
|
|
172
|
+
}
|
|
173
|
+
get disableBalanceCheck() {
|
|
174
|
+
return this._disableBalanceCheck;
|
|
175
|
+
}
|
|
166
176
|
}
|
|
167
177
|
__decorate([
|
|
168
178
|
mobx_1.observable.ref
|
|
@@ -179,6 +189,9 @@ __decorate([
|
|
|
179
189
|
__decorate([
|
|
180
190
|
mobx_1.observable
|
|
181
191
|
], FeeConfig.prototype, "additionAmountToNeedFee", void 0);
|
|
192
|
+
__decorate([
|
|
193
|
+
mobx_1.observable
|
|
194
|
+
], FeeConfig.prototype, "_disableBalanceCheck", void 0);
|
|
182
195
|
__decorate([
|
|
183
196
|
mobx_1.action
|
|
184
197
|
], FeeConfig.prototype, "setAdditionAmountToNeedFee", null);
|
|
@@ -197,6 +210,9 @@ __decorate([
|
|
|
197
210
|
__decorate([
|
|
198
211
|
mobx_1.computed
|
|
199
212
|
], FeeConfig.prototype, "fee", null);
|
|
213
|
+
__decorate([
|
|
214
|
+
mobx_1.action
|
|
215
|
+
], FeeConfig.prototype, "setDisableBalanceCheck", null);
|
|
200
216
|
exports.FeeConfig = FeeConfig;
|
|
201
217
|
const useFeeConfig = (chainGetter, chainId, sender, queryBalances, amountConfig, gasConfig, additionAmountToNeedFee = true) => {
|
|
202
218
|
const [config] = react_1.useState(() => new FeeConfig(chainGetter, chainId, sender, queryBalances, amountConfig, gasConfig, additionAmountToNeedFee));
|
package/build/tx/fee.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fee.js","sourceRoot":"","sources":["../../src/tx/fee.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAMiB;AACjB,mCAAwC;AAExC,+BAAoE;AACpE,6CAA0E;AAE1E,2CAAwC;AAExC,iCAAiC;AAEjC,qCAAmE;AAEnE,MAAa,SAAU,SAAQ,qBAAa;
|
|
1
|
+
{"version":3,"file":"fee.js","sourceRoot":"","sources":["../../src/tx/fee.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mCAMiB;AACjB,mCAAwC;AAExC,+BAAoE;AACpE,6CAA0E;AAE1E,2CAAwC;AAExC,iCAAiC;AAEjC,qCAAmE;AAEnE,MAAa,SAAU,SAAQ,qBAAa;IA0B1C,YACE,WAAwB,EACxB,cAAsB,EACtB,MAAc,EACd,aAAsC,EACnB,YAA2B,EAC3B,SAAqB,EACxC,0BAAmC,IAAI;QAEvC,KAAK,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAJhB,iBAAY,GAAZ,YAAY,CAAe;QAC3B,cAAS,GAAT,SAAS,CAAY;QAxBhC,aAAQ,GAAwB,SAAS,CAAC;QAG1C,eAAU,GAA8B,SAAS,CAAC;QAE5D;;;;;;WAMG;QAEO,4BAAuB,GAAY,IAAI,CAAC;QAGxC,yBAAoB,GAAY,KAAK,CAAC;QAgIvC,qBAAgB,GAAG,uBAAU,CAAC,CAAC,OAAgB,EAAE,EAAE;YAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;aACzC;YAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAErC,OAAO,IAAI,iBAAU,CAAC,WAAW,EAAE,IAAI,UAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;iBACjE,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC;iBACnC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QA9HD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QAEvD,qBAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAGD,0BAA0B,CAAC,uBAAgC;QACzD,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;IACzD,CAAC;IAGD,gBAAgB,CAAC,aAAsC;QACrD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAGD,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAGD,UAAU,CAAC,OAA4B;QACrC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;IACpC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAGD,YAAY,CAAC,GAAkB;QAC7B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAClC,MAAM,EAAE,EAAE;aACX,CAAC;SACH;QAED,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;YAClC,MAAM,EAAE,CAAC,MAAM,CAAC;SACjB,CAAC;IACJ,CAAC;IAGD,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,iBAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,UAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,eAAe;QACb,kEAAkE;QAClE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,SAAS,CAAC;SAClB;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC/C;QAED,wDAAwD;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,mBAAmB,CAAC,OAAgB;QAC5C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY;YAC9C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY;YAC7B,CAAC,CAAC,2BAAmB,CAAC;QAExB,MAAM,QAAQ,GAAG,IAAI,UAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAE5D,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB;YACxC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SACxC,CAAC;IACJ,CAAC;IAeD,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;YAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAClC;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAEtD,IAAI,IAAU,CAAC;QACf,IAAI,IAAI,CAAC,uBAAuB,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE;YACrE,IAAI,GAAG,IAAI,WAAI,CACb,GAAG,CAAC,KAAK,EACT,IAAI,UAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,UAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAChD,CAAC;SACH;aAAM;YACL,IAAI,GAAG,IAAI,WAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,UAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;SACjD;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,UAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa;iBAC3B,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;iBACnC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,KAAK,CAAC;YACtD,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,IAAI,6BAAoB,CAAC,kBAAkB,CAAC,CAAC;aACrD;iBAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACtC,2DAA2D;gBAC3D,+CAA+C;gBAC/C,OAAO,IAAI,0BAAiB,CAC1B,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,oBAAoB,CAC9C,CAAC;aACH;iBAAM,IACL,GAAG,CAAC,OAAO;iBACR,KAAK,EAAE;iBACP,GAAG,CAAC,eAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;iBACxD,QAAQ,EAAE;iBACV,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAClB;gBACA,OAAO,IAAI,6BAAoB,CAAC,kBAAkB,CAAC,CAAC;aACrD;SACF;IACH,CAAC;IAGD,sBAAsB,CAAC,IAAa;QAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;CACF;AAhOC;IADC,iBAAU,CAAC,GAAG;gDACkC;AAGjD;IADC,iBAAU;0CACe;AAG1B;IADC,iBAAU;2CACyC;AAGpD;IADC,iBAAU;6CACiD;AAU5D;IADC,iBAAU;0DACuC;AAGlD;IADC,iBAAU;uDACqC;AAqBhD;IADC,aAAM;2DAGN;AAGD;IADC,aAAM;iDAGN;AAGD;IADC,aAAM;0CAGN;AAGD;IADC,aAAM;2CAIN;AAWD;IADC,aAAM;6CAIN;AA0BD;IADC,eAAQ;oCAYR;AAyGD;IADC,aAAM;uDAGN;AA7NH,8BAkOC;AAEM,MAAM,YAAY,GAAG,CAC1B,WAAwB,EACxB,OAAe,EACf,MAAc,EACd,aAAsC,EACtC,YAA2B,EAC3B,SAAqB,EACrB,0BAAmC,IAAI,EACvC,EAAE;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,gBAAQ,CACvB,GAAG,EAAE,CACH,IAAI,SAAS,CACX,WAAW,EACX,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,EACT,uBAAuB,CACxB,CACJ,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAC;IAE3D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA3BW,QAAA,YAAY,gBA2BvB"}
|
package/build/tx/gas.d.ts
CHANGED
|
@@ -2,10 +2,11 @@ import { IGasConfig } from "./types";
|
|
|
2
2
|
import { TxChainSetter } from "./chain";
|
|
3
3
|
import { ChainGetter } from "@keplr-wallet/stores";
|
|
4
4
|
export declare class GasConfig extends TxChainSetter implements IGasConfig {
|
|
5
|
-
protected
|
|
5
|
+
protected _gasRaw: string | undefined;
|
|
6
6
|
constructor(chainGetter: ChainGetter, initialChainId: string, initialGas?: number);
|
|
7
|
+
get gasRaw(): string;
|
|
7
8
|
get gas(): number;
|
|
8
|
-
setGas(gas: number): void;
|
|
9
|
+
setGas(gas: number | string): void;
|
|
9
10
|
getError(): Error | undefined;
|
|
10
11
|
}
|
|
11
|
-
export declare const useGasConfig: (chainGetter: ChainGetter, chainId: string, initialGas?: number) => GasConfig;
|
|
12
|
+
export declare const useGasConfig: (chainGetter: ChainGetter, chainId: string, initialGas?: number | undefined) => GasConfig;
|
package/build/tx/gas.js
CHANGED
|
@@ -11,18 +11,61 @@ const chain_1 = require("./chain");
|
|
|
11
11
|
const mobx_1 = require("mobx");
|
|
12
12
|
const react_1 = require("react");
|
|
13
13
|
class GasConfig extends chain_1.TxChainSetter {
|
|
14
|
-
constructor(chainGetter, initialChainId, initialGas
|
|
14
|
+
constructor(chainGetter, initialChainId, initialGas) {
|
|
15
15
|
super(chainGetter, initialChainId);
|
|
16
|
-
|
|
16
|
+
/*
|
|
17
|
+
This field is used to handle the value from the input more flexibly.
|
|
18
|
+
We use string because there is no guarantee that only number is input in input component.
|
|
19
|
+
If the user has never set it, undefined is also allowed to indicate that it is a default value.
|
|
20
|
+
*/
|
|
21
|
+
this._gasRaw = undefined;
|
|
22
|
+
this._gasRaw = initialGas === null || initialGas === void 0 ? void 0 : initialGas.toString();
|
|
17
23
|
mobx_1.makeObservable(this);
|
|
18
24
|
}
|
|
25
|
+
get gasRaw() {
|
|
26
|
+
if (this._gasRaw == null) {
|
|
27
|
+
return this.gas.toString();
|
|
28
|
+
}
|
|
29
|
+
return this._gasRaw;
|
|
30
|
+
}
|
|
19
31
|
get gas() {
|
|
20
|
-
|
|
32
|
+
// If the gasRaw is undefined,
|
|
33
|
+
// it means that the user never input something yet.
|
|
34
|
+
// In this case, it should be handled as gas is 0.
|
|
35
|
+
// But, it can be overridden on the child class if it is needed.
|
|
36
|
+
if (this._gasRaw == null) {
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
const r = parseInt(this._gasRaw);
|
|
40
|
+
return Number.isNaN(r) ? 0 : r;
|
|
21
41
|
}
|
|
22
42
|
setGas(gas) {
|
|
23
|
-
|
|
43
|
+
if (typeof gas === "number") {
|
|
44
|
+
this._gasRaw = Math.floor(gas).toString();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (gas === "") {
|
|
48
|
+
this._gasRaw = gas;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Gas must not be floated.
|
|
52
|
+
if (!gas.includes(".")) {
|
|
53
|
+
if (!Number.isNaN(Number.parseInt(gas))) {
|
|
54
|
+
this._gasRaw = gas;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
24
58
|
}
|
|
25
59
|
getError() {
|
|
60
|
+
if (this._gasRaw === "") {
|
|
61
|
+
return new Error("Gas not set");
|
|
62
|
+
}
|
|
63
|
+
if (this._gasRaw && Number.isNaN(this._gasRaw)) {
|
|
64
|
+
return new Error("Gas is not valid number");
|
|
65
|
+
}
|
|
66
|
+
if (!Number.isInteger(this.gas)) {
|
|
67
|
+
return new Error("Gas is not integer");
|
|
68
|
+
}
|
|
26
69
|
if (this.gas <= 0) {
|
|
27
70
|
return new Error("Gas should be greater than 0");
|
|
28
71
|
}
|
|
@@ -31,12 +74,12 @@ class GasConfig extends chain_1.TxChainSetter {
|
|
|
31
74
|
}
|
|
32
75
|
__decorate([
|
|
33
76
|
mobx_1.observable
|
|
34
|
-
], GasConfig.prototype, "
|
|
77
|
+
], GasConfig.prototype, "_gasRaw", void 0);
|
|
35
78
|
__decorate([
|
|
36
79
|
mobx_1.action
|
|
37
80
|
], GasConfig.prototype, "setGas", null);
|
|
38
81
|
exports.GasConfig = GasConfig;
|
|
39
|
-
const useGasConfig = (chainGetter, chainId, initialGas
|
|
82
|
+
const useGasConfig = (chainGetter, chainId, initialGas) => {
|
|
40
83
|
const [txConfig] = react_1.useState(() => new GasConfig(chainGetter, chainId, initialGas));
|
|
41
84
|
txConfig.setChain(chainId);
|
|
42
85
|
return txConfig;
|
package/build/tx/gas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/tx/gas.ts"],"names":[],"mappings":";;;;;;;;;AACA,mCAAwC;AAExC,+BAA0D;AAC1D,iCAAiC;AAEjC,MAAa,SAAU,SAAQ,qBAAa;
|
|
1
|
+
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/tx/gas.ts"],"names":[],"mappings":";;;;;;;;;AACA,mCAAwC;AAExC,+BAA0D;AAC1D,iCAAiC;AAEjC,MAAa,SAAU,SAAQ,qBAAa;IAS1C,YACE,WAAwB,EACxB,cAAsB,EACtB,UAAmB;QAEnB,KAAK,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAbrC;;;;WAIG;QAEO,YAAO,GAAuB,SAAS,CAAC;QAShD,IAAI,CAAC,OAAO,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,EAAE,CAAC;QAEtC,qBAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,MAAM;QACR,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;SAC5B;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,GAAG;QACL,8BAA8B;QAC9B,oDAAoD;QACpD,kDAAkD;QAClD,gEAAgE;QAChE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,OAAO,CAAC,CAAC;SACV;QAED,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAGD,MAAM,CAAC,GAAoB;QACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO;SACR;QAED,IAAI,GAAG,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YACnB,OAAO;SACR;QAED,2BAA2B;QAC3B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBACvC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;gBACnB,OAAO;aACR;SACF;IACH,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE;YACvB,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SACjC;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC9C,OAAO,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC/B,OAAO,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACxC;QAED,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;YACjB,OAAO,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SAClD;QACD,OAAO;IACT,CAAC;CACF;AA1EC;IADC,iBAAU;0CACuC;AAoClD;IADC,aAAM;uCAmBN;AA7DH,8BAiFC;AAEM,MAAM,YAAY,GAAG,CAC1B,WAAwB,EACxB,OAAe,EACf,UAAmB,EACnB,EAAE;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,gBAAQ,CACzB,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CACtD,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE3B,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAXW,QAAA,YAAY,gBAWvB"}
|
package/build/tx/send-gas.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { GasConfig } from "./gas";
|
|
2
|
-
import { ChainGetter } from "@keplr-wallet/stores";
|
|
2
|
+
import { ChainGetter, CosmosMsgOpts, SecretMsgOpts, CosmwasmMsgOpts } from "@keplr-wallet/stores";
|
|
3
3
|
import { IAmountConfig } from "./types";
|
|
4
|
-
|
|
5
|
-
declare type MsgOpts = CosmosMsgOpts & SecretMsgOpts;
|
|
4
|
+
declare type MsgOpts = CosmosMsgOpts & SecretMsgOpts & CosmwasmMsgOpts;
|
|
6
5
|
export declare class SendGasConfig extends GasConfig {
|
|
7
6
|
protected readonly amountConfig: IAmountConfig;
|
|
8
7
|
protected sendMsgOpts: MsgOpts["send"];
|
package/build/tx/send-gas.js
CHANGED
|
@@ -24,16 +24,18 @@ class SendGasConfig extends gas_1.GasConfig {
|
|
|
24
24
|
get gas() {
|
|
25
25
|
// If gas not set manually, assume that the tx is for MsgSend.
|
|
26
26
|
// And, set the default gas according to the currency type.
|
|
27
|
-
if (this.
|
|
27
|
+
if (this._gasRaw == null && this.amountConfig.sendCurrency) {
|
|
28
28
|
const denomHelper = new common_1.DenomHelper(this.amountConfig.sendCurrency.coinMinimalDenom);
|
|
29
29
|
switch (denomHelper.type) {
|
|
30
30
|
case "secret20":
|
|
31
31
|
return this.sendMsgOpts.secret20.gas;
|
|
32
|
+
case "cw20":
|
|
33
|
+
return this.sendMsgOpts.cw20.gas;
|
|
32
34
|
default:
|
|
33
35
|
return this.sendMsgOpts.native.gas;
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
|
-
return
|
|
38
|
+
return super.gas;
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
__decorate([
|
package/build/tx/send-gas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-gas.js","sourceRoot":"","sources":["../../src/tx/send-gas.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAAkC;AAClC,iDAAmD;
|
|
1
|
+
{"version":3,"file":"send-gas.js","sourceRoot":"","sources":["../../src/tx/send-gas.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+BAAkC;AAClC,iDAAmD;AAQnD,iCAAiC;AACjC,+BAA0D;AAI1D,MAAa,aAAc,SAAQ,eAAS;IAI1C,YACE,WAAwB,EACxB,cAAsB,EACH,YAA2B,EAC9C,WAA4B;QAE5B,KAAK,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAHhB,iBAAY,GAAZ,YAAY,CAAe;QAK9C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,qBAAc,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAGD,cAAc,CAAC,IAAqB;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,IAAI,GAAG;QACL,8DAA8D;QAC9D,2DAA2D;QAC3D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;YAC1D,MAAM,WAAW,GAAG,IAAI,oBAAW,CACjC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAChD,CAAC;YAEF,QAAQ,WAAW,CAAC,IAAI,EAAE;gBACxB,KAAK,UAAU;oBACb,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACvC,KAAK,MAAM;oBACT,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnC;oBACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;aACtC;SACF;QAED,OAAO,KAAK,CAAC,GAAG,CAAC;IACnB,CAAC;CACF;AAxCC;IADC,iBAAU,CAAC,GAAG;kDACwB;AAgBvC;IADC,aAAM;mDAGN;AApBH,sCA0CC;AAEM,MAAM,gBAAgB,GAAG,CAC9B,WAAwB,EACxB,OAAe,EACf,YAA2B,EAC3B,WAA4B,EAC5B,EAAE;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,gBAAQ,CAC1B,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,CACzE,CAAC;IACF,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5B,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAEtC,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B"}
|
package/build/tx/send-tx.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ChainGetter, CosmosMsgOpts, SecretMsgOpts } from "@keplr-wallet/stores";
|
|
1
|
+
import { ChainGetter, CosmosMsgOpts, CosmwasmMsgOpts, SecretMsgOpts } from "@keplr-wallet/stores";
|
|
2
2
|
import { ObservableQueryBalances } from "@keplr-wallet/stores/build/query/balances";
|
|
3
|
-
declare type MsgOpts = CosmosMsgOpts & SecretMsgOpts;
|
|
3
|
+
declare type MsgOpts = CosmosMsgOpts & SecretMsgOpts & CosmwasmMsgOpts;
|
|
4
4
|
export declare const useSendTxConfig: (chainGetter: ChainGetter, chainId: string, sendMsgOpts: MsgOpts["send"], sender: string, queryBalances: ObservableQueryBalances, ensEndpoint?: string | undefined) => {
|
|
5
5
|
amountConfig: import("./amount").AmountConfig;
|
|
6
6
|
memoConfig: import("./memo").MemoConfig;
|
package/build/tx/send-tx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-tx.js","sourceRoot":"","sources":["../../src/tx/send-tx.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"send-tx.js","sourceRoot":"","sources":["../../src/tx/send-tx.ts"],"names":[],"mappings":";;;AAOA,mCAA0E;AAC1E,yCAA8C;AAC9C,qCAA2C;AAIpC,MAAM,eAAe,GAAG,CAC7B,WAAwB,EACxB,OAAe,EACf,WAA4B,EAC5B,MAAc,EACd,aAAsC,EACtC,WAAoB,EACpB,EAAE;IACF,MAAM,YAAY,GAAG,wBAAe,CAClC,WAAW,EACX,OAAO,EACP,MAAM,EACN,aAAa,CACd,CAAC;IAEF,MAAM,UAAU,GAAG,qBAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,2BAAgB,CAChC,WAAW,EACX,OAAO,EACP,YAAY,EACZ,WAAW,CACZ,CAAC;IACF,MAAM,SAAS,GAAG,oBAAY,CAC5B,WAAW,EACX,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,CACV,CAAC;IACF,gFAAgF;IAChF,6EAA6E;IAC7E,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAErC,MAAM,eAAe,GAAG,0BAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAE9E,OAAO;QACL,YAAY;QACZ,UAAU;QACV,SAAS;QACT,SAAS;QACT,eAAe;KAChB,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,eAAe,mBA2C1B"}
|
|
@@ -123,7 +123,7 @@ class StakedAmountConfig extends chain_1.TxChainSetter {
|
|
|
123
123
|
return new errors_1.InvalidNumberAmountError("Invalid form of number");
|
|
124
124
|
}
|
|
125
125
|
if (new unit_1.Dec(this.amount).lt(new unit_1.Dec(0))) {
|
|
126
|
-
return new errors_1.
|
|
126
|
+
return new errors_1.NegativeAmountError("Amount is negative");
|
|
127
127
|
}
|
|
128
128
|
const balance = this.queryDelegations
|
|
129
129
|
.getQueryBech32Address(this.sender)
|
package/build/tx/types.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ export interface IMemoConfig extends ITxChainSetter {
|
|
|
13
13
|
}
|
|
14
14
|
export interface IGasConfig extends ITxChainSetter {
|
|
15
15
|
gas: number;
|
|
16
|
-
|
|
16
|
+
gasRaw: string;
|
|
17
|
+
setGas(gas: number | string): void;
|
|
17
18
|
getError(): Error | undefined;
|
|
18
19
|
}
|
|
19
20
|
export interface IFeeConfig extends ITxChainSetter {
|
package/build/tx/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tx/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tx/types.ts"],"names":[],"mappings":";;;AAiEa,QAAA,mBAAmB,GAI5B;IACF,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,IAAI;CACX,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keplr-wallet/hooks",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.10",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"author": "chainapsis",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@cosmjs/launchpad": "^0.24.0-alpha.25",
|
|
24
|
-
"@keplr-wallet/background": "^0.9.
|
|
25
|
-
"@keplr-wallet/common": "^0.9.
|
|
26
|
-
"@keplr-wallet/cosmos": "^0.9.
|
|
27
|
-
"@keplr-wallet/crypto": "^0.9.
|
|
24
|
+
"@keplr-wallet/background": "^0.9.10",
|
|
25
|
+
"@keplr-wallet/common": "^0.9.10",
|
|
26
|
+
"@keplr-wallet/cosmos": "^0.9.10",
|
|
27
|
+
"@keplr-wallet/crypto": "^0.9.10",
|
|
28
28
|
"@keplr-wallet/ens": "^0.9.0",
|
|
29
29
|
"@keplr-wallet/popup": "^0.9.6",
|
|
30
|
-
"@keplr-wallet/stores": "^0.9.
|
|
31
|
-
"@keplr-wallet/types": "^0.9.
|
|
32
|
-
"@keplr-wallet/unit": "^0.9.
|
|
30
|
+
"@keplr-wallet/stores": "^0.9.10",
|
|
31
|
+
"@keplr-wallet/types": "^0.9.10",
|
|
32
|
+
"@keplr-wallet/unit": "^0.9.10",
|
|
33
33
|
"long": "^4.0.0",
|
|
34
34
|
"mobx": "^6.1.7",
|
|
35
35
|
"mobx-utils": "^6.0.3",
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
"react-router": "^5.1.2",
|
|
38
38
|
"utility-types": "^3.10.0"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "05efb7b77a6e0bffee7533db91e7c83b7b777da6"
|
|
41
41
|
}
|
package/src/ibc/gas.ts
CHANGED
|
@@ -12,7 +12,7 @@ export class IBCTransferGasConfig extends GasConfig {
|
|
|
12
12
|
initialChainId: string,
|
|
13
13
|
msgOpts: CosmosMsgOpts["ibcTransfer"]
|
|
14
14
|
) {
|
|
15
|
-
super(chainGetter, initialChainId
|
|
15
|
+
super(chainGetter, initialChainId);
|
|
16
16
|
|
|
17
17
|
this.msgOpts = msgOpts;
|
|
18
18
|
|
|
@@ -26,11 +26,11 @@ export class IBCTransferGasConfig extends GasConfig {
|
|
|
26
26
|
|
|
27
27
|
get gas(): number {
|
|
28
28
|
// If gas not set manually, assume that the tx is for MsgTransfer.
|
|
29
|
-
if (this.
|
|
29
|
+
if (this._gasRaw == null) {
|
|
30
30
|
return this.msgOpts.gas;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
return
|
|
33
|
+
return super.gas;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
package/src/sign-doc/amount.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { IAmountConfig } from "../tx";
|
|
2
|
-
import { TxChainSetter } from "../tx/chain";
|
|
1
|
+
import { IAmountConfig, TxChainSetter } from "../tx";
|
|
3
2
|
import {
|
|
4
3
|
ChainGetter,
|
|
5
4
|
CoinPrimitive,
|
|
@@ -26,14 +25,22 @@ export class SignDocAmountConfig
|
|
|
26
25
|
@observable.ref
|
|
27
26
|
protected signDocHelper?: SignDocHelper = undefined;
|
|
28
27
|
|
|
28
|
+
@observable
|
|
29
|
+
protected _sender: string;
|
|
30
|
+
|
|
31
|
+
@observable
|
|
32
|
+
protected _disableBalanceCheck: boolean = false;
|
|
33
|
+
|
|
29
34
|
constructor(
|
|
30
35
|
chainGetter: ChainGetter,
|
|
31
36
|
initialChainId: string,
|
|
32
|
-
msgOpts: CosmosMsgOpts
|
|
37
|
+
msgOpts: CosmosMsgOpts,
|
|
38
|
+
sender: string
|
|
33
39
|
) {
|
|
34
40
|
super(chainGetter, initialChainId);
|
|
35
41
|
|
|
36
42
|
this.msgOpts = msgOpts;
|
|
43
|
+
this._sender = sender;
|
|
37
44
|
|
|
38
45
|
makeObservable(this);
|
|
39
46
|
}
|
|
@@ -71,13 +78,19 @@ export class SignDocAmountConfig
|
|
|
71
78
|
return [this.sendCurrency];
|
|
72
79
|
}
|
|
73
80
|
|
|
81
|
+
@action
|
|
82
|
+
setSender(sender: string): void {
|
|
83
|
+
this._sender = sender;
|
|
84
|
+
}
|
|
85
|
+
|
|
74
86
|
get sender(): string {
|
|
75
|
-
return
|
|
87
|
+
return this._sender;
|
|
76
88
|
}
|
|
77
89
|
|
|
78
90
|
getAmountPrimitive = computedFn(
|
|
79
91
|
(): CoinPrimitive => {
|
|
80
92
|
if (
|
|
93
|
+
this.disableBalanceCheck ||
|
|
81
94
|
!this.signDocHelper?.signDocWrapper ||
|
|
82
95
|
this.chainInfo.feeCurrencies.length === 0
|
|
83
96
|
) {
|
|
@@ -106,6 +119,15 @@ export class SignDocAmountConfig
|
|
|
106
119
|
try {
|
|
107
120
|
switch (msg.type) {
|
|
108
121
|
case this.msgOpts.send.native.type:
|
|
122
|
+
if (
|
|
123
|
+
msg.value.from_address &&
|
|
124
|
+
msg.value.from_address !== this.sender
|
|
125
|
+
) {
|
|
126
|
+
return {
|
|
127
|
+
amount: "0",
|
|
128
|
+
denom: this.sendCurrency.coinMinimalDenom,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
109
131
|
if (msg.value.amount && Array.isArray(msg.value.amount)) {
|
|
110
132
|
for (const amountInMsg of msg.value.amount) {
|
|
111
133
|
if (amountInMsg.denom === amount.denom) {
|
|
@@ -117,6 +139,15 @@ export class SignDocAmountConfig
|
|
|
117
139
|
}
|
|
118
140
|
break;
|
|
119
141
|
case this.msgOpts.delegate.type:
|
|
142
|
+
if (
|
|
143
|
+
msg.value.delegator_address &&
|
|
144
|
+
msg.value.delegator_address !== this.sender
|
|
145
|
+
) {
|
|
146
|
+
return {
|
|
147
|
+
amount: "0",
|
|
148
|
+
denom: this.sendCurrency.coinMinimalDenom,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
120
151
|
if (msg.value.amount && msg.value.amount.denom === amount.denom) {
|
|
121
152
|
amount.amount = amount.amount.add(
|
|
122
153
|
new Int(msg.value.amount.amount)
|
|
@@ -145,6 +176,12 @@ export class SignDocAmountConfig
|
|
|
145
176
|
switch (msg.constructor) {
|
|
146
177
|
case cosmos.bank.v1beta1.MsgSend:
|
|
147
178
|
const sendMsg = msg as cosmos.bank.v1beta1.MsgSend;
|
|
179
|
+
if (sendMsg.fromAddress && sendMsg.fromAddress !== this.sender) {
|
|
180
|
+
return {
|
|
181
|
+
amount: "0",
|
|
182
|
+
denom: this.sendCurrency.coinMinimalDenom,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
148
185
|
for (const amountInMsg of sendMsg.amount) {
|
|
149
186
|
if (amountInMsg.denom === amount.denom && amountInMsg.amount) {
|
|
150
187
|
amount.amount = amount.amount.add(new Int(amountInMsg.amount));
|
|
@@ -153,6 +190,15 @@ export class SignDocAmountConfig
|
|
|
153
190
|
break;
|
|
154
191
|
case cosmos.staking.v1beta1.MsgDelegate:
|
|
155
192
|
const delegateMsg = msg as cosmos.staking.v1beta1.MsgDelegate;
|
|
193
|
+
if (
|
|
194
|
+
delegateMsg.delegatorAddress &&
|
|
195
|
+
delegateMsg.delegatorAddress !== this.sender
|
|
196
|
+
) {
|
|
197
|
+
return {
|
|
198
|
+
amount: "0",
|
|
199
|
+
denom: this.sendCurrency.coinMinimalDenom,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
156
202
|
if (
|
|
157
203
|
delegateMsg.amount?.denom === amount.denom &&
|
|
158
204
|
delegateMsg.amount.amount
|
|
@@ -200,21 +246,28 @@ export class SignDocAmountConfig
|
|
|
200
246
|
// noop
|
|
201
247
|
}
|
|
202
248
|
|
|
203
|
-
|
|
204
|
-
|
|
249
|
+
@action
|
|
250
|
+
setDisableBalanceCheck(bool: boolean) {
|
|
251
|
+
this._disableBalanceCheck = bool;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
get disableBalanceCheck(): boolean {
|
|
255
|
+
return this._disableBalanceCheck;
|
|
205
256
|
}
|
|
206
257
|
}
|
|
207
258
|
|
|
208
259
|
export const useSignDocAmountConfig = (
|
|
209
260
|
chainGetter: ChainGetter,
|
|
210
261
|
chainId: string,
|
|
211
|
-
msgOpts: CosmosMsgOpts
|
|
262
|
+
msgOpts: CosmosMsgOpts,
|
|
263
|
+
sender: string
|
|
212
264
|
) => {
|
|
213
265
|
const [config] = useState(
|
|
214
|
-
() => new SignDocAmountConfig(chainGetter, chainId, msgOpts)
|
|
266
|
+
() => new SignDocAmountConfig(chainGetter, chainId, msgOpts, sender)
|
|
215
267
|
);
|
|
216
268
|
config.setChain(chainId);
|
|
217
269
|
config.setMsgOpts(msgOpts);
|
|
270
|
+
config.setSender(sender);
|
|
218
271
|
|
|
219
272
|
return config;
|
|
220
273
|
};
|
package/src/sign-doc/index.ts
CHANGED
|
@@ -23,6 +23,13 @@ export class SignDocHelper {
|
|
|
23
23
|
return undefined;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
// If the sign doc is for ADR-36,
|
|
27
|
+
// The fee and memo should be empty.
|
|
28
|
+
// Ignore the fee and memo config, and just return itself.
|
|
29
|
+
if (this._signDocWrapper.isADR36SignDoc) {
|
|
30
|
+
return this._signDocWrapper;
|
|
31
|
+
}
|
|
32
|
+
|
|
26
33
|
const stdFee = this.feeConfig.toStdFee();
|
|
27
34
|
|
|
28
35
|
if (this._signDocWrapper.mode === "amino") {
|
package/src/tx/amount.ts
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
EmptyAmountError,
|
|
9
9
|
InsufficientAmountError,
|
|
10
10
|
InvalidNumberAmountError,
|
|
11
|
-
|
|
11
|
+
NegativeAmountError,
|
|
12
12
|
ZeroAmountError,
|
|
13
13
|
} from "./errors";
|
|
14
14
|
import { Dec, DecUtils } from "@keplr-wallet/unit";
|
|
@@ -194,7 +194,7 @@ export class AmountConfig extends TxChainSetter implements IAmountConfig {
|
|
|
194
194
|
return new InvalidNumberAmountError("Invalid form of number");
|
|
195
195
|
}
|
|
196
196
|
if (new Dec(this.amount).lt(new Dec(0))) {
|
|
197
|
-
return new
|
|
197
|
+
return new NegativeAmountError("Amount is negative");
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
const balance = this.queryBalances
|
package/src/tx/errors.ts
CHANGED
|
@@ -62,11 +62,11 @@ export class ZeroAmountError extends Error {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
export class
|
|
65
|
+
export class NegativeAmountError extends Error {
|
|
66
66
|
constructor(m: string) {
|
|
67
67
|
super(m);
|
|
68
68
|
// Set the prototype explicitly.
|
|
69
|
-
Object.setPrototypeOf(this,
|
|
69
|
+
Object.setPrototypeOf(this, NegativeAmountError.prototype);
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
|
package/src/tx/fee.ts
CHANGED
|
@@ -39,6 +39,9 @@ export class FeeConfig extends TxChainSetter implements IFeeConfig {
|
|
|
39
39
|
@observable
|
|
40
40
|
protected additionAmountToNeedFee: boolean = true;
|
|
41
41
|
|
|
42
|
+
@observable
|
|
43
|
+
protected _disableBalanceCheck: boolean = false;
|
|
44
|
+
|
|
42
45
|
constructor(
|
|
43
46
|
chainGetter: ChainGetter,
|
|
44
47
|
initialChainId: string,
|
|
@@ -183,6 +186,10 @@ export class FeeConfig extends TxChainSetter implements IFeeConfig {
|
|
|
183
186
|
return this.gasConfig.getError();
|
|
184
187
|
}
|
|
185
188
|
|
|
189
|
+
if (this.disableBalanceCheck) {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
|
|
186
193
|
const fee = this.getFeePrimitive();
|
|
187
194
|
if (!fee) {
|
|
188
195
|
return undefined;
|
|
@@ -226,6 +233,15 @@ export class FeeConfig extends TxChainSetter implements IFeeConfig {
|
|
|
226
233
|
}
|
|
227
234
|
}
|
|
228
235
|
}
|
|
236
|
+
|
|
237
|
+
@action
|
|
238
|
+
setDisableBalanceCheck(bool: boolean) {
|
|
239
|
+
this._disableBalanceCheck = bool;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
get disableBalanceCheck(): boolean {
|
|
243
|
+
return this._disableBalanceCheck;
|
|
244
|
+
}
|
|
229
245
|
}
|
|
230
246
|
|
|
231
247
|
export const useFeeConfig = (
|
package/src/tx/gas.ts
CHANGED
|
@@ -5,31 +5,81 @@ import { action, makeObservable, observable } from "mobx";
|
|
|
5
5
|
import { useState } from "react";
|
|
6
6
|
|
|
7
7
|
export class GasConfig extends TxChainSetter implements IGasConfig {
|
|
8
|
+
/*
|
|
9
|
+
This field is used to handle the value from the input more flexibly.
|
|
10
|
+
We use string because there is no guarantee that only number is input in input component.
|
|
11
|
+
If the user has never set it, undefined is also allowed to indicate that it is a default value.
|
|
12
|
+
*/
|
|
8
13
|
@observable
|
|
9
|
-
protected
|
|
14
|
+
protected _gasRaw: string | undefined = undefined;
|
|
10
15
|
|
|
11
16
|
constructor(
|
|
12
17
|
chainGetter: ChainGetter,
|
|
13
18
|
initialChainId: string,
|
|
14
|
-
initialGas
|
|
19
|
+
initialGas?: number
|
|
15
20
|
) {
|
|
16
21
|
super(chainGetter, initialChainId);
|
|
17
22
|
|
|
18
|
-
this.
|
|
23
|
+
this._gasRaw = initialGas?.toString();
|
|
19
24
|
|
|
20
25
|
makeObservable(this);
|
|
21
26
|
}
|
|
22
27
|
|
|
28
|
+
get gasRaw(): string {
|
|
29
|
+
if (this._gasRaw == null) {
|
|
30
|
+
return this.gas.toString();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return this._gasRaw;
|
|
34
|
+
}
|
|
35
|
+
|
|
23
36
|
get gas(): number {
|
|
24
|
-
|
|
37
|
+
// If the gasRaw is undefined,
|
|
38
|
+
// it means that the user never input something yet.
|
|
39
|
+
// In this case, it should be handled as gas is 0.
|
|
40
|
+
// But, it can be overridden on the child class if it is needed.
|
|
41
|
+
if (this._gasRaw == null) {
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const r = parseInt(this._gasRaw);
|
|
46
|
+
return Number.isNaN(r) ? 0 : r;
|
|
25
47
|
}
|
|
26
48
|
|
|
27
49
|
@action
|
|
28
|
-
setGas(gas: number) {
|
|
29
|
-
|
|
50
|
+
setGas(gas: number | string) {
|
|
51
|
+
if (typeof gas === "number") {
|
|
52
|
+
this._gasRaw = Math.floor(gas).toString();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (gas === "") {
|
|
57
|
+
this._gasRaw = gas;
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Gas must not be floated.
|
|
62
|
+
if (!gas.includes(".")) {
|
|
63
|
+
if (!Number.isNaN(Number.parseInt(gas))) {
|
|
64
|
+
this._gasRaw = gas;
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
30
68
|
}
|
|
31
69
|
|
|
32
70
|
getError(): Error | undefined {
|
|
71
|
+
if (this._gasRaw === "") {
|
|
72
|
+
return new Error("Gas not set");
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (this._gasRaw && Number.isNaN(this._gasRaw)) {
|
|
76
|
+
return new Error("Gas is not valid number");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (!Number.isInteger(this.gas)) {
|
|
80
|
+
return new Error("Gas is not integer");
|
|
81
|
+
}
|
|
82
|
+
|
|
33
83
|
if (this.gas <= 0) {
|
|
34
84
|
return new Error("Gas should be greater than 0");
|
|
35
85
|
}
|
|
@@ -40,7 +90,7 @@ export class GasConfig extends TxChainSetter implements IGasConfig {
|
|
|
40
90
|
export const useGasConfig = (
|
|
41
91
|
chainGetter: ChainGetter,
|
|
42
92
|
chainId: string,
|
|
43
|
-
initialGas
|
|
93
|
+
initialGas?: number
|
|
44
94
|
) => {
|
|
45
95
|
const [txConfig] = useState(
|
|
46
96
|
() => new GasConfig(chainGetter, chainId, initialGas)
|
package/src/tx/send-gas.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { GasConfig } from "./gas";
|
|
2
2
|
import { DenomHelper } from "@keplr-wallet/common";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
ChainGetter,
|
|
5
|
+
CosmosMsgOpts,
|
|
6
|
+
SecretMsgOpts,
|
|
7
|
+
CosmwasmMsgOpts,
|
|
8
|
+
} from "@keplr-wallet/stores";
|
|
4
9
|
import { IAmountConfig } from "./types";
|
|
5
10
|
import { useState } from "react";
|
|
6
|
-
import { CosmosMsgOpts, SecretMsgOpts } from "@keplr-wallet/stores";
|
|
7
11
|
import { action, makeObservable, observable } from "mobx";
|
|
8
12
|
|
|
9
|
-
type MsgOpts = CosmosMsgOpts & SecretMsgOpts;
|
|
13
|
+
type MsgOpts = CosmosMsgOpts & SecretMsgOpts & CosmwasmMsgOpts;
|
|
10
14
|
|
|
11
15
|
export class SendGasConfig extends GasConfig {
|
|
12
16
|
@observable.ref
|
|
@@ -33,7 +37,7 @@ export class SendGasConfig extends GasConfig {
|
|
|
33
37
|
get gas(): number {
|
|
34
38
|
// If gas not set manually, assume that the tx is for MsgSend.
|
|
35
39
|
// And, set the default gas according to the currency type.
|
|
36
|
-
if (this.
|
|
40
|
+
if (this._gasRaw == null && this.amountConfig.sendCurrency) {
|
|
37
41
|
const denomHelper = new DenomHelper(
|
|
38
42
|
this.amountConfig.sendCurrency.coinMinimalDenom
|
|
39
43
|
);
|
|
@@ -41,12 +45,14 @@ export class SendGasConfig extends GasConfig {
|
|
|
41
45
|
switch (denomHelper.type) {
|
|
42
46
|
case "secret20":
|
|
43
47
|
return this.sendMsgOpts.secret20.gas;
|
|
48
|
+
case "cw20":
|
|
49
|
+
return this.sendMsgOpts.cw20.gas;
|
|
44
50
|
default:
|
|
45
51
|
return this.sendMsgOpts.native.gas;
|
|
46
52
|
}
|
|
47
53
|
}
|
|
48
54
|
|
|
49
|
-
return
|
|
55
|
+
return super.gas;
|
|
50
56
|
}
|
|
51
57
|
}
|
|
52
58
|
|
package/src/tx/send-tx.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ChainGetter,
|
|
3
3
|
CosmosMsgOpts,
|
|
4
|
+
CosmwasmMsgOpts,
|
|
4
5
|
SecretMsgOpts,
|
|
5
6
|
} from "@keplr-wallet/stores";
|
|
6
7
|
import { ObservableQueryBalances } from "@keplr-wallet/stores/build/query/balances";
|
|
@@ -8,7 +9,7 @@ import { useFeeConfig, useMemoConfig, useRecipientConfig } from "./index";
|
|
|
8
9
|
import { useSendGasConfig } from "./send-gas";
|
|
9
10
|
import { useAmountConfig } from "./amount";
|
|
10
11
|
|
|
11
|
-
type MsgOpts = CosmosMsgOpts & SecretMsgOpts;
|
|
12
|
+
type MsgOpts = CosmosMsgOpts & SecretMsgOpts & CosmwasmMsgOpts;
|
|
12
13
|
|
|
13
14
|
export const useSendTxConfig = (
|
|
14
15
|
chainGetter: ChainGetter,
|
package/src/tx/staked-amount.ts
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
EmptyAmountError,
|
|
12
12
|
InsufficientAmountError,
|
|
13
13
|
InvalidNumberAmountError,
|
|
14
|
-
|
|
14
|
+
NegativeAmountError,
|
|
15
15
|
ZeroAmountError,
|
|
16
16
|
} from "./errors";
|
|
17
17
|
import { Dec, DecUtils } from "@keplr-wallet/unit";
|
|
@@ -178,7 +178,7 @@ export class StakedAmountConfig extends TxChainSetter implements IAmountConfig {
|
|
|
178
178
|
return new InvalidNumberAmountError("Invalid form of number");
|
|
179
179
|
}
|
|
180
180
|
if (new Dec(this.amount).lt(new Dec(0))) {
|
|
181
|
-
return new
|
|
181
|
+
return new NegativeAmountError("Amount is negative");
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
const balance = this.queryDelegations
|
package/src/tx/types.ts
CHANGED
|
@@ -17,7 +17,11 @@ export interface IMemoConfig extends ITxChainSetter {
|
|
|
17
17
|
|
|
18
18
|
export interface IGasConfig extends ITxChainSetter {
|
|
19
19
|
gas: number;
|
|
20
|
-
|
|
20
|
+
/*
|
|
21
|
+
The actual gas value from the input.
|
|
22
|
+
*/
|
|
23
|
+
gasRaw: string;
|
|
24
|
+
setGas(gas: number | string): void;
|
|
21
25
|
|
|
22
26
|
getError(): Error | undefined;
|
|
23
27
|
}
|