tek-wallet 0.0.512 → 0.0.513

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.
@@ -8,8 +8,10 @@ interface SendExternalDataType extends Omit<SendExternalBody, "network" | "passc
8
8
  interface SendExternalTokenProps extends Omit<ConfirmLayoutProps, "action"> {
9
9
  sendExternalData: SendExternalDataType;
10
10
  onSuccess?: (data: SendExternalResponse) => any;
11
- initFeeData?: FeesDataType;
12
11
  onStart?: () => void;
12
+ setEstimateFee?: (data: FeesDataType) => void;
13
+ setAmountError?: (data: number | undefined) => void;
14
+ setIsLoadingEstimateFee?: (data: boolean) => void;
13
15
  }
14
16
  export interface SendExternalTokenRef {
15
17
  open: () => void;
@@ -95,7 +95,6 @@ var ConfirmByPasscode_1 = __importDefault(require("../ConfirmByPasscode"));
95
95
  var react_1 = require("react");
96
96
  var Text_1 = __importDefault(require("../Text"));
97
97
  var RequireConnect_1 = __importDefault(require("../RequireConnect"));
98
- var useWalletData_1 = __importDefault(require("../../../hooks/useWalletData"));
99
98
  var useWithdrawData_1 = __importDefault(require("../../../hooks/useWithdrawData"));
100
99
  var send_external_service_1 = __importDefault(require("../../../services/axios/send-external-service"));
101
100
  var Icon_1 = __importDefault(require("../Icon"));
@@ -103,6 +102,7 @@ var Fees_1 = __importDefault(require("../Fees"));
103
102
  var get_est_fee_service_1 = __importDefault(require("../../../services/axios/get-est-fee-service"));
104
103
  var type_1 = require("../../../services/axios/get-activities-service/type");
105
104
  var Activities_1 = __importDefault(require("../Activities"));
105
+ var createDebounce_1 = __importDefault(require("../../../utils/createDebounce"));
106
106
  var SendExternalTokenError;
107
107
  (function (SendExternalTokenError) {
108
108
  SendExternalTokenError["TOKEN_NOT_FOUND"] = "Token not found";
@@ -111,18 +111,18 @@ var SendExternalTokenError;
111
111
  SendExternalTokenError["MIN_AMOUNT"] = "Min amount";
112
112
  SendExternalTokenError["FAILED"] = "Failed";
113
113
  })(SendExternalTokenError || (exports.SendExternalTokenError = SendExternalTokenError = {}));
114
+ var getEstimateFeeDebounce = (0, createDebounce_1.default)(1000);
114
115
  var transactionSlug = type_1.TransactionSlug.Withdrawn;
115
116
  var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
116
117
  var _a;
117
118
  var theme = (0, material_1.useTheme)();
118
119
  var withdrawTokens = (0, useWithdrawData_1.default)().withdrawTokens;
119
- var isAuthenticated = (0, useWalletData_1.default)().isAuthenticated;
120
120
  var confirmLayoutDrawerRef = (0, react_1.useRef)(null);
121
121
  var _b = (0, react_1.useState)(undefined), token = _b[0], setToken = _b[1];
122
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];
123
+ var _d = (0, react_1.useState)(undefined), amountError = _d[0], setAmountError = _d[1];
124
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];
125
+ var _f = (0, react_1.useState)(), estimateFee = _f[0], setEstimateFee = _f[1];
126
126
  var _g = (0, react_1.useState)(false), isLoadingEstimateFee = _g[0], setIsLoadingEstimateFee = _g[1];
127
127
  var activitiesRef = (0, react_1.useRef)(null);
128
128
  var amount = props.sendExternalData.amount;
@@ -130,27 +130,6 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
130
130
  var memo = props.sendExternalData.memo;
131
131
  var toAddress = props.sendExternalData.to_address;
132
132
  var tokenSlug = props.sendExternalData.currency_slug;
133
- var getEstimateFee = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
134
- var response;
135
- return __generator(this, function (_a) {
136
- switch (_a.label) {
137
- case 0:
138
- if (!tokenSlug || !!errorAmount)
139
- return [2 /*return*/];
140
- setIsLoadingEstimateFee(true);
141
- return [4 /*yield*/, (0, get_est_fee_service_1.default)({
142
- amount: "".concat(amount),
143
- transaction_type: transactionSlug,
144
- currency: tokenSlug || "",
145
- })];
146
- case 1:
147
- response = _a.sent();
148
- setIsLoadingEstimateFee(false);
149
- setEstimateFee(response === null || response === void 0 ? void 0 : response.data);
150
- return [2 /*return*/];
151
- }
152
- });
153
- }); }, [amount, tokenSlug, errorAmount]);
154
133
  var validateAmount = (0, react_1.useCallback)(function (sendExternalData) {
155
134
  var token = withdrawTokens === null || withdrawTokens === void 0 ? void 0 : withdrawTokens.find(function (token) { return token.slug === sendExternalData.currency_slug; });
156
135
  setToken(token);
@@ -160,22 +139,58 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
160
139
  }
161
140
  if (+sendExternalData.amount > token.max_value) {
162
141
  setError(SendExternalTokenError.MAX_AMOUNT);
163
- setErrorAmount(token.max_value);
142
+ setAmountError(token.max_value);
164
143
  return;
165
144
  }
166
145
  if (+sendExternalData.amount < token.min_value) {
167
146
  setError(SendExternalTokenError.MIN_AMOUNT);
168
- setErrorAmount(token.min_value);
147
+ setAmountError(token.min_value);
169
148
  return;
170
149
  }
171
150
  if (+sendExternalData.amount > +token.balance) {
172
151
  setError(SendExternalTokenError.NOT_ENOUGH_BALANCE);
173
- setErrorAmount(token.balance);
152
+ setAmountError(token.balance);
174
153
  return;
175
154
  }
176
155
  setError(undefined);
177
- setErrorAmount(undefined);
156
+ setAmountError(undefined);
157
+ return true;
178
158
  }, [withdrawTokens]);
159
+ var getEstimateFee = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
160
+ return __generator(this, function (_a) {
161
+ if (!tokenSlug) {
162
+ setIsLoadingEstimateFee(false);
163
+ return [2 /*return*/];
164
+ }
165
+ setIsLoadingEstimateFee(true);
166
+ getEstimateFeeDebounce(function () { return __awaiter(void 0, void 0, void 0, function () {
167
+ var isValidateAmount, response;
168
+ var _a;
169
+ return __generator(this, function (_b) {
170
+ switch (_b.label) {
171
+ case 0:
172
+ isValidateAmount = validateAmount(props.sendExternalData);
173
+ if (!isValidateAmount) {
174
+ setIsLoadingEstimateFee(false);
175
+ return [2 /*return*/];
176
+ }
177
+ return [4 /*yield*/, (0, get_est_fee_service_1.default)({
178
+ amount: "".concat(amount),
179
+ transaction_type: transactionSlug,
180
+ currency: tokenSlug || "",
181
+ })];
182
+ case 1:
183
+ response = _b.sent();
184
+ setIsLoadingEstimateFee(false);
185
+ setEstimateFee(response === null || response === void 0 ? void 0 : response.data);
186
+ (_a = props.setEstimateFee) === null || _a === void 0 ? void 0 : _a.call(props, response === null || response === void 0 ? void 0 : response.data);
187
+ return [2 /*return*/];
188
+ }
189
+ });
190
+ }); });
191
+ return [2 /*return*/];
192
+ });
193
+ }); }, [amount, props.sendExternalData, tokenSlug, validateAmount]);
179
194
  var handleSendExternalToken = function (passcode) { return __awaiter(void 0, void 0, void 0, function () {
180
195
  var response, err_1;
181
196
  var _a, _b;
@@ -214,14 +229,10 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
214
229
  }); };
215
230
  var handleOpen = function () {
216
231
  var _a;
217
- if (!isAuthenticated)
218
- throw new Error("Please connect your wallet");
219
232
  (_a = confirmLayoutDrawerRef.current) === null || _a === void 0 ? void 0 : _a.open();
220
233
  };
221
234
  var handleClose = function () {
222
235
  var _a;
223
- if (!isAuthenticated)
224
- throw new Error("Please connect your wallet");
225
236
  (_a = confirmLayoutDrawerRef.current) === null || _a === void 0 ? void 0 : _a.close();
226
237
  };
227
238
  (0, react_1.useImperativeHandle)(ref, function () { return ({
@@ -236,15 +247,12 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
236
247
  (0, react_1.useEffect)(function () {
237
248
  getEstimateFee();
238
249
  }, [getEstimateFee]);
239
- (0, react_1.useEffect)(function () {
240
- validateAmount(props.sendExternalData);
241
- }, [validateAmount, props.sendExternalData]);
242
250
  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: {
243
251
  wordBreak: "break-all",
244
252
  }, 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: {
245
253
  fontWeight: theme.typography.fontWeight600,
246
254
  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 })] }) }));
255
+ }, 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, " ", !!amountError && (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: amountError, 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 })] }) }));
248
256
  });
249
257
  SendExternalToken.displayName = "SendExternalToken";
250
258
  exports.default = SendExternalToken;
@@ -113,9 +113,7 @@ var AppBackDrop_1 = __importDefault(require("../AppBackDrop"));
113
113
  var DialogContentLayout_1 = __importDefault(require("../DialogContentLayout"));
114
114
  var AppDialog_1 = __importDefault(require("../AppDialog"));
115
115
  var Formatter_1 = __importDefault(require("../Formatter"));
116
- var get_est_fee_service_1 = __importDefault(require("../../../services/axios/get-est-fee-service"));
117
116
  var Fees_1 = __importDefault(require("../Fees"));
118
- var type_1 = require("../../../services/axios/get-activities-service/type");
119
117
  var SendExternalToken_1 = __importDefault(require("../SendExternalToken"));
120
118
  var SendInternalToken_1 = __importDefault(require("../SendInternalToken"));
121
119
  var createDebounce_1 = __importDefault(require("../../../utils/createDebounce"));
@@ -146,7 +144,6 @@ var AmountError;
146
144
  AmountError["MAX_LIMIT"] = "The maximum amount is";
147
145
  AmountError["MIN_LIMIT"] = "The minimum amount is";
148
146
  })(AmountError || (exports.AmountError = AmountError = {}));
149
- var getEstimateFeeDebounce = (0, createDebounce_1.default)(500);
150
147
  var validateAddressDebounce = (0, createDebounce_1.default)(500);
151
148
  var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
152
149
  var _a;
@@ -243,28 +240,6 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
243
240
  open: open,
244
241
  close: close,
245
242
  }); });
246
- var validateAmount = (0, react_1.useCallback)(function () {
247
- var _a, _b;
248
- if (!selectedToken)
249
- return false;
250
- if (+amount < +(selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.min_value)) {
251
- setAmountErrorMessage(AmountError.MIN_LIMIT);
252
- setAmountError(+((_a = selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.min_value) !== null && _a !== void 0 ? _a : 0));
253
- return false;
254
- }
255
- if (+amount > +(selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.max_value)) {
256
- setAmountErrorMessage(AmountError.MAX_LIMIT);
257
- setAmountError(+((_b = selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.max_value) !== null && _b !== void 0 ? _b : 0));
258
- return false;
259
- }
260
- if (+amount > +(selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.balance)) {
261
- setAmountErrorMessage(AmountError.INSUFFICIENT_BALANCE);
262
- return false;
263
- }
264
- setAmountError(undefined);
265
- setAmountErrorMessage(undefined);
266
- return true;
267
- }, [amount, selectedToken]);
268
243
  var handleClearInfoDialogContent = function () {
269
244
  setInfoDialogContent(undefined);
270
245
  };
@@ -354,39 +329,6 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
354
329
  break;
355
330
  }
356
331
  };
357
- var getEstimateFee = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
358
- var isValidateAmount;
359
- return __generator(this, function (_a) {
360
- if (!selectedToken)
361
- return [2 /*return*/];
362
- isValidateAmount = validateAmount();
363
- console.warn("🚀 ~ getEstimateFee ~ isValidateAmount:", isValidateAmount);
364
- if (!isValidateAmount)
365
- return [2 /*return*/];
366
- console.warn("🚀 ~ getEstimateFee ~ isValidateAmount 2:", !isValidateAmount);
367
- setIsLoadingEstimateFee(true);
368
- getEstimateFeeDebounce(function () { return __awaiter(void 0, void 0, void 0, function () {
369
- var response;
370
- return __generator(this, function (_a) {
371
- switch (_a.label) {
372
- case 0: return [4 /*yield*/, (0, get_est_fee_service_1.default)({
373
- amount: "".concat(amount),
374
- transaction_type: selectedMethod === SendMethods.TRANSFER_EXTERNAL
375
- ? type_1.TransactionSlug.Withdrawn
376
- : type_1.TransactionSlug.TransferInternal,
377
- currency: (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.slug) || "",
378
- })];
379
- case 1:
380
- response = _a.sent();
381
- setIsLoadingEstimateFee(false);
382
- setEstimateFee(response === null || response === void 0 ? void 0 : response.data);
383
- return [2 /*return*/];
384
- }
385
- });
386
- }); });
387
- return [2 /*return*/];
388
- });
389
- }); }, [selectedToken, validateAmount, amount, selectedMethod]);
390
332
  var openScannerAddressQrCode = function () {
391
333
  var _a;
392
334
  (_a = scannerAddressQrCodeRef.current) === null || _a === void 0 ? void 0 : _a.open();
@@ -534,9 +476,6 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
534
476
  updateSendInternalToken();
535
477
  }
536
478
  }, [isAuthenticated, withdrawTokens, sendInternalTokens]);
537
- (0, react_1.useEffect)(function () {
538
- getEstimateFee();
539
- }, [getEstimateFee]);
540
479
  return ((0, jsx_runtime_1.jsx)(RequireConnect_1.default, { children: (0, jsx_runtime_1.jsx)(DrawerComponent_1.default, { ref: drawerRef, trigger: props.children, onOpen: props.onOpen, onClose: handleOnClose, children: (0, jsx_runtime_1.jsxs)(ModalLayout_1.default, { overrideHeader: (0, jsx_runtime_1.jsx)(BackHeader_1.default, { sx: {
541
480
  width: "100%",
542
481
  display: "flex",
@@ -582,7 +521,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
582
521
  placeholder: "Enter memo",
583
522
  value: memo,
584
523
  onChange: handleChangeMemo,
585
- } })] })), !!((_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: {
524
+ } })] })), !!((_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, { setEstimateFee: setEstimateFee, setAmountError: setAmountError, setIsLoadingEstimateFee: setIsLoadingEstimateFee, sendExternalData: {
586
525
  amount: "".concat(amount),
587
526
  currency_slug: (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.slug) || "",
588
527
  to_address: recipientAddress || "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tek-wallet",
3
- "version": "0.0.512",
3
+ "version": "0.0.513",
4
4
  "description": "A custom React provider with TypeScript support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",