tek-wallet 0.0.516 → 0.0.518

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.
@@ -103,6 +103,8 @@ var Fees_1 = __importDefault(require("../Fees"));
103
103
  var get_est_fee_service_1 = __importDefault(require("../../../services/axios/get-est-fee-service"));
104
104
  var type_1 = require("../../../services/axios/get-activities-service/type");
105
105
  var Activities_1 = __importDefault(require("../Activities"));
106
+ var validate_wallet_address_service_1 = __importDefault(require("../../../services/axios/validate-wallet-address-service"));
107
+ var type_2 = require("../../../services/axios/validate-wallet-address-service/type");
106
108
  var SendExternalTokenError;
107
109
  (function (SendExternalTokenError) {
108
110
  SendExternalTokenError["TOKEN_NOT_FOUND"] = "Token not found";
@@ -118,12 +120,13 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
118
120
  var withdrawTokens = (0, useWithdrawData_1.default)().withdrawTokens;
119
121
  var isAuthenticated = (0, useWalletData_1.default)().isAuthenticated;
120
122
  var confirmLayoutDrawerRef = (0, react_1.useRef)(null);
121
- var _b = (0, react_1.useState)(undefined), token = _b[0], setToken = _b[1];
122
- var _c = (0, react_1.useState)(undefined), error = _c[0], setError = _c[1];
123
- var _d = (0, react_1.useState)(undefined), errorAmount = _d[0], setErrorAmount = _d[1];
124
- var _e = (0, react_1.useState)(Button_1.BUTTON_STATUS.ENABLED), buttonStatus = _e[0], setButtonStatus = _e[1];
125
- var _f = (0, react_1.useState)(props.initFeeData), estimateFee = _f[0], setEstimateFee = _f[1];
126
- var _g = (0, react_1.useState)(false), isLoadingEstimateFee = _g[0], setIsLoadingEstimateFee = _g[1];
123
+ var _b = (0, react_1.useState)(undefined), error = _b[0], setError = _b[1];
124
+ var _c = (0, react_1.useState)(undefined), errorAmount = _c[0], setErrorAmount = _c[1];
125
+ var _d = (0, react_1.useState)(Button_1.BUTTON_STATUS.ENABLED), buttonStatus = _d[0], setButtonStatus = _d[1];
126
+ var _e = (0, react_1.useState)(undefined), errorAddress = _e[0], setErrorAddress = _e[1];
127
+ var _f = (0, react_1.useState)(false), isValidatingAddress = _f[0], setIsValidatingAddress = _f[1];
128
+ var _g = (0, react_1.useState)(props.initFeeData), estimateFee = _g[0], setEstimateFee = _g[1];
129
+ var _h = (0, react_1.useState)(false), isLoadingEstimateFee = _h[0], setIsLoadingEstimateFee = _h[1];
127
130
  var activitiesRef = (0, react_1.useRef)(null);
128
131
  var amount = props.sendExternalData.amount;
129
132
  var network = props.sendExternalData.network;
@@ -135,7 +138,7 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
135
138
  return __generator(this, function (_a) {
136
139
  switch (_a.label) {
137
140
  case 0:
138
- if (!tokenSlug || !!errorAmount)
141
+ if (!tokenSlug)
139
142
  return [2 /*return*/];
140
143
  setIsLoadingEstimateFee(true);
141
144
  return [4 /*yield*/, (0, get_est_fee_service_1.default)({
@@ -150,32 +153,76 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
150
153
  return [2 /*return*/];
151
154
  }
152
155
  });
153
- }); }, [amount, tokenSlug, errorAmount]);
154
- var validateAmount = (0, react_1.useCallback)(function (sendExternalData) {
155
- var token = withdrawTokens === null || withdrawTokens === void 0 ? void 0 : withdrawTokens.find(function (token) { return token.slug === sendExternalData.currency_slug; });
156
- setToken(token);
156
+ }); }, [amount, tokenSlug]);
157
+ var token = (0, react_1.useMemo)(function () {
158
+ return withdrawTokens === null || withdrawTokens === void 0 ? void 0 : withdrawTokens.find(function (token) { return token.slug === tokenSlug; });
159
+ }, [tokenSlug, withdrawTokens]);
160
+ var validateAmount = (0, react_1.useCallback)(function () {
157
161
  if (!token) {
158
162
  setError(SendExternalTokenError.TOKEN_NOT_FOUND);
159
- return;
163
+ return false;
160
164
  }
161
- if (+sendExternalData.amount > token.max_value) {
165
+ if (+amount > token.max_value) {
162
166
  setError(SendExternalTokenError.MAX_AMOUNT);
163
167
  setErrorAmount(token.max_value);
164
- return;
168
+ return false;
165
169
  }
166
- if (+sendExternalData.amount < token.min_value) {
170
+ if (+amount < token.min_value) {
167
171
  setError(SendExternalTokenError.MIN_AMOUNT);
168
172
  setErrorAmount(token.min_value);
169
- return;
173
+ return false;
170
174
  }
171
- if (+sendExternalData.amount > +token.balance) {
175
+ if (+amount > +token.balance) {
172
176
  setError(SendExternalTokenError.NOT_ENOUGH_BALANCE);
173
177
  setErrorAmount(token.balance);
174
- return;
178
+ return false;
175
179
  }
176
180
  setError(undefined);
177
181
  setErrorAmount(undefined);
178
- }, [withdrawTokens]);
182
+ return true;
183
+ }, [amount, tokenSlug, withdrawTokens]);
184
+ var validateAddress = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
185
+ var message;
186
+ return __generator(this, function (_a) {
187
+ switch (_a.label) {
188
+ case 0:
189
+ setIsValidatingAddress(true);
190
+ return [4 /*yield*/, (0, validate_wallet_address_service_1.default)({
191
+ address: toAddress,
192
+ network: network === null || network === void 0 ? void 0 : network.slug,
193
+ })];
194
+ case 1:
195
+ message = (_a.sent()).message;
196
+ setIsValidatingAddress(false);
197
+ if (message !== type_2.ValidateWalletAddressResultMessage.EXTERNAL_WALLET) {
198
+ setErrorAddress(message);
199
+ return [2 /*return*/, false];
200
+ }
201
+ setErrorAddress(undefined);
202
+ return [2 /*return*/, true];
203
+ }
204
+ });
205
+ }); }, [toAddress, network]);
206
+ var validateAll = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
207
+ var isAmountValid, isAddressValid;
208
+ return __generator(this, function (_a) {
209
+ switch (_a.label) {
210
+ case 0:
211
+ isAmountValid = validateAmount();
212
+ if (!isAmountValid)
213
+ return [2 /*return*/, false];
214
+ return [4 /*yield*/, validateAddress()];
215
+ case 1:
216
+ isAddressValid = _a.sent();
217
+ if (!isAddressValid)
218
+ return [2 /*return*/, false];
219
+ return [4 /*yield*/, getEstimateFee()];
220
+ case 2:
221
+ _a.sent();
222
+ return [2 /*return*/];
223
+ }
224
+ });
225
+ }); }, [validateAmount, validateAddress, getEstimateFee]);
179
226
  var handleSendExternalToken = function (passcode) { return __awaiter(void 0, void 0, void 0, function () {
180
227
  var response, err_1;
181
228
  var _a, _b;
@@ -217,6 +264,7 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
217
264
  if (!isAuthenticated)
218
265
  throw new Error("Please connect your wallet");
219
266
  (_a = confirmLayoutDrawerRef.current) === null || _a === void 0 ? void 0 : _a.open();
267
+ validateAll();
220
268
  };
221
269
  var handleClose = function () {
222
270
  var _a;
@@ -233,18 +281,12 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
233
281
  return undefined;
234
282
  return +amount - +(estimateFee === null || estimateFee === void 0 ? void 0 : estimateFee.feeInCurrency);
235
283
  }, [estimateFee, amount]);
236
- (0, react_1.useEffect)(function () {
237
- getEstimateFee();
238
- }, [getEstimateFee]);
239
- (0, react_1.useEffect)(function () {
240
- validateAmount(props.sendExternalData);
241
- }, [validateAmount, props.sendExternalData]);
242
- return ((0, jsx_runtime_1.jsx)(RequireConnect_1.default, { children: (0, jsx_runtime_1.jsxs)(ConfirmLayout_1.default, { ref: confirmLayoutDrawerRef, action: transactionSlug, trigger: props.children, children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { gap: theme.mixins.gaps.g12 }), children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign({}, theme.mixins.paper), children: [(0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Recipient address", value: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: {
284
+ return ((0, jsx_runtime_1.jsx)(RequireConnect_1.default, { children: (0, jsx_runtime_1.jsxs)(ConfirmLayout_1.default, { onOpen: validateAll, ref: confirmLayoutDrawerRef, action: transactionSlug, trigger: props.children, children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { gap: theme.mixins.gaps.g12 }), children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign({}, theme.mixins.paper), children: [(0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Recipient address", value: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: {
243
285
  wordBreak: "break-all",
244
- }, children: toAddress }) }), (0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Network", value: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g6, ml: "auto" }), children: [(0, jsx_runtime_1.jsx)(Icon_1.default, { width: 20, src: network === null || network === void 0 ? void 0 : network.icon }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign({}, theme.mixins.value), children: network === null || network === void 0 ? void 0 : network.name })] }) }), (0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Amount", value: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: amount, unit: " ".concat(token === null || token === void 0 ? void 0 : token.name) }) }), !!memo && (0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Memo", value: memo }), ((_a = estimateFee === null || estimateFee === void 0 ? void 0 : estimateFee.feeDetail) === null || _a === void 0 ? void 0 : _a.length) && !!amount && ((0, jsx_runtime_1.jsx)(Fees_1.default, { feesData: JSON.stringify(estimateFee), amount: +amount })), (0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Receive amount estimated", value: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: {
286
+ }, children: toAddress }), valueDescription: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign({}, theme.mixins.validationError), children: errorAddress }) }), (0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Network", value: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g6, ml: "auto" }), children: [(0, jsx_runtime_1.jsx)(Icon_1.default, { width: 20, src: network === null || network === void 0 ? void 0 : network.icon }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign({}, theme.mixins.value), children: network === null || network === void 0 ? void 0 : network.name })] }) }), (0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Amount", value: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: amount, unit: " ".concat(token === null || token === void 0 ? void 0 : token.name) }) }), !!memo && (0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Memo", value: memo }), ((_a = estimateFee === null || estimateFee === void 0 ? void 0 : estimateFee.feeDetail) === null || _a === void 0 ? void 0 : _a.length) && !!amount && ((0, jsx_runtime_1.jsx)(Fees_1.default, { feesData: JSON.stringify(estimateFee), amount: +amount })), (0, jsx_runtime_1.jsx)(LineValue_1.default, { field: "Receive amount estimated", value: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: {
245
287
  fontWeight: theme.typography.fontWeight600,
246
288
  fontSize: theme.typography.fontSize16,
247
- }, children: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: estimateReceive, unit: " ".concat(token === null || token === void 0 ? void 0 : token.name) }) }) }), !!error && ((0, jsx_runtime_1.jsxs)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.validationError), { mt: theme.mixins.gaps.g6 }), children: [error, " ", !!errorAmount && (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: errorAmount, unit: " ".concat(token === null || token === void 0 ? void 0 : token.name) })] }))] }), (0, jsx_runtime_1.jsx)(ConfirmByPasscode_1.default, { action: transactionSlug, onConfirmSuccess: handleSendExternalToken, children: (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { status: !!error || isLoadingEstimateFee ? Button_1.BUTTON_STATUS.DISABLED : buttonStatus, sx: { width: "100%" }, children: "Confirm" }) })] }), (0, jsx_runtime_1.jsx)(Activities_1.default, { ref: activitiesRef })] }) }));
289
+ }, children: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: estimateReceive, unit: " ".concat(token === null || token === void 0 ? void 0 : token.name) }) }) }), !!error && ((0, jsx_runtime_1.jsxs)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.validationError), { mt: theme.mixins.gaps.g6 }), children: [error, " ", !!errorAmount && (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: errorAmount, unit: " ".concat(token === null || token === void 0 ? void 0 : token.name) })] }))] }), (0, jsx_runtime_1.jsx)(ConfirmByPasscode_1.default, { action: transactionSlug, onConfirmSuccess: handleSendExternalToken, children: (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { status: !!error || isLoadingEstimateFee || isValidatingAddress ? Button_1.BUTTON_STATUS.DISABLED : buttonStatus, sx: { width: "100%" }, children: "Confirm" }) })] }), (0, jsx_runtime_1.jsx)(Activities_1.default, { ref: activitiesRef })] }) }));
248
290
  });
249
291
  SendExternalToken.displayName = "SendExternalToken";
250
292
  exports.default = SendExternalToken;
@@ -116,7 +116,7 @@ var Formatter_1 = __importDefault(require("../Formatter"));
116
116
  var get_est_fee_service_1 = __importDefault(require("../../../services/axios/get-est-fee-service"));
117
117
  var Fees_1 = __importDefault(require("../Fees"));
118
118
  var type_1 = require("../../../services/axios/get-activities-service/type");
119
- // import SendExternalToken from "../SendExternalToken";
119
+ var SendExternalToken_1 = __importDefault(require("../SendExternalToken"));
120
120
  var SendInternalToken_1 = __importDefault(require("../SendInternalToken"));
121
121
  var createDebounce_1 = __importDefault(require("../../../utils/createDebounce"));
122
122
  var type_2 = require("../../../services/axios/validate-wallet-address-service/type");
@@ -587,28 +587,21 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
587
587
  placeholder: "Enter memo",
588
588
  value: memo,
589
589
  onChange: handleChangeMemo,
590
- } })] })), !!((_a = estimateFee === null || estimateFee === void 0 ? void 0 : estimateFee.feeDetail) === null || _a === void 0 ? void 0 : _a.length) && !!amount && ((0, jsx_runtime_1.jsx)(Fees_1.default, { feesData: JSON.stringify(estimateFee), amount: +amount })), estimateReceive !== undefined && !amountError && ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign({}, theme.mixins.row), children: [(0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign({}, theme.mixins.fieldTitle), children: "Receive amount estimated" }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.value), { ml: "auto" }), children: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: estimateReceive }) })] })), selectedMethod === SendMethods.TRANSFER_EXTERNAL && (
591
- // <SendExternalToken
592
- // initFeeData={estimateFee}
593
- // sendExternalData={{
594
- // amount: `${amount}`,
595
- // currency_slug: selectedToken?.slug || "",
596
- // to_address: recipientAddress || "",
597
- // network: selectedNetwork as NetworkData,
598
- // memo: memo || "",
599
- // }}
600
- // onSuccess={close}
601
- // >
602
- // </SendExternalToken>
603
- (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { sx: { width: "100%" }, status: !!amountError ||
604
- !!recipientAddressError ||
605
- !recipientAddress ||
606
- !amount ||
607
- !selectedToken ||
608
- isLoadingEstimateFee ||
609
- isValidatingAddress
610
- ? Button_1.BUTTON_STATUS.DISABLED
611
- : Button_1.BUTTON_STATUS.ENABLED, children: "Continue" })), selectedMethod === SendMethods.TRANSFER_INTERNAL && ((0, jsx_runtime_1.jsx)(SendInternalToken_1.default, { initFeeData: estimateFee, sendInternalData: {
590
+ } })] })), !!((_a = estimateFee === null || estimateFee === void 0 ? void 0 : estimateFee.feeDetail) === null || _a === void 0 ? void 0 : _a.length) && !!amount && ((0, jsx_runtime_1.jsx)(Fees_1.default, { feesData: JSON.stringify(estimateFee), amount: +amount })), estimateReceive !== undefined && !amountError && ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign({}, theme.mixins.row), children: [(0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign({}, theme.mixins.fieldTitle), children: "Receive amount estimated" }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.value), { ml: "auto" }), children: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: estimateReceive }) })] })), selectedMethod === SendMethods.TRANSFER_EXTERNAL && ((0, jsx_runtime_1.jsx)(SendExternalToken_1.default, { initFeeData: estimateFee, sendExternalData: {
591
+ amount: "".concat(amount),
592
+ currency_slug: (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.slug) || "",
593
+ to_address: recipientAddress || "",
594
+ network: selectedNetwork,
595
+ memo: memo || "",
596
+ }, onSuccess: close, children: (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { sx: { width: "100%" }, status: !!amountError ||
597
+ !!recipientAddressError ||
598
+ !recipientAddress ||
599
+ !amount ||
600
+ !selectedToken ||
601
+ isLoadingEstimateFee ||
602
+ isValidatingAddress
603
+ ? Button_1.BUTTON_STATUS.DISABLED
604
+ : Button_1.BUTTON_STATUS.ENABLED, children: "Continue" }) })), selectedMethod === SendMethods.TRANSFER_INTERNAL && ((0, jsx_runtime_1.jsx)(SendInternalToken_1.default, { initFeeData: estimateFee, sendInternalData: {
612
605
  amount: "".concat(amount),
613
606
  currency_slug: (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.slug) || "",
614
607
  to_address: recipientAddress || "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tek-wallet",
3
- "version": "0.0.516",
3
+ "version": "0.0.518",
4
4
  "description": "A custom React provider with TypeScript support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",