tek-wallet 0.0.514 → 0.0.516

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,10 +8,8 @@ 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;
11
12
  onStart?: () => void;
12
- setEstimateFee?: (data: FeesDataType) => void;
13
- setAmountError?: (data: number | undefined) => void;
14
- setIsLoadingEstimateFee?: (data: boolean) => void;
15
13
  }
16
14
  export interface SendExternalTokenRef {
17
15
  open: () => void;
@@ -95,6 +95,7 @@ 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"));
98
99
  var useWithdrawData_1 = __importDefault(require("../../../hooks/useWithdrawData"));
99
100
  var send_external_service_1 = __importDefault(require("../../../services/axios/send-external-service"));
100
101
  var Icon_1 = __importDefault(require("../Icon"));
@@ -102,7 +103,6 @@ var Fees_1 = __importDefault(require("../Fees"));
102
103
  var get_est_fee_service_1 = __importDefault(require("../../../services/axios/get-est-fee-service"));
103
104
  var type_1 = require("../../../services/axios/get-activities-service/type");
104
105
  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,88 +111,71 @@ 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);
115
114
  var transactionSlug = type_1.TransactionSlug.Withdrawn;
116
115
  var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
117
- var _a, _b, _c;
116
+ var _a;
118
117
  var theme = (0, material_1.useTheme)();
119
118
  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
- var _d = (0, react_1.useState)(undefined), token = _d[0], setToken = _d[1];
122
- var _e = (0, react_1.useState)(undefined), error = _e[0], setError = _e[1];
123
- var _f = (0, react_1.useState)(undefined), amountError = _f[0], setAmountError = _f[1];
124
- var _g = (0, react_1.useState)(Button_1.BUTTON_STATUS.ENABLED), buttonStatus = _g[0], setButtonStatus = _g[1];
125
- var _h = (0, react_1.useState)(), estimateFee = _h[0], setEstimateFee = _h[1];
126
- var _j = (0, react_1.useState)(false), isLoadingEstimateFee = _j[0], setIsLoadingEstimateFee = _j[1];
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];
127
127
  var activitiesRef = (0, react_1.useRef)(null);
128
128
  var amount = props.sendExternalData.amount;
129
129
  var network = props.sendExternalData.network;
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 validateAmount = (0, react_1.useCallback)(function () {
134
- var amount = +props.sendExternalData.amount;
135
- var token = withdrawTokens === null || withdrawTokens === void 0 ? void 0 : withdrawTokens.find(function (token) { var _a; return token.slug === ((_a = props.sendExternalData) === null || _a === void 0 ? void 0 : _a.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
+ 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; });
136
156
  setToken(token);
137
157
  if (!token) {
138
158
  setError(SendExternalTokenError.TOKEN_NOT_FOUND);
139
159
  return;
140
160
  }
141
- if (amount > token.max_value) {
161
+ if (+sendExternalData.amount > token.max_value) {
142
162
  setError(SendExternalTokenError.MAX_AMOUNT);
143
- setAmountError(token.max_value);
163
+ setErrorAmount(token.max_value);
144
164
  return;
145
165
  }
146
- if (amount < token.min_value) {
166
+ if (+sendExternalData.amount < token.min_value) {
147
167
  setError(SendExternalTokenError.MIN_AMOUNT);
148
- setAmountError(token.min_value);
168
+ setErrorAmount(token.min_value);
149
169
  return;
150
170
  }
151
- if (amount > +token.balance) {
171
+ if (+sendExternalData.amount > +token.balance) {
152
172
  setError(SendExternalTokenError.NOT_ENOUGH_BALANCE);
153
- setAmountError(token.balance);
173
+ setErrorAmount(token.balance);
154
174
  return;
155
175
  }
156
176
  setError(undefined);
157
- setAmountError(undefined);
158
- return true;
159
- }, [withdrawTokens, (_a = props.sendExternalData) === null || _a === void 0 ? void 0 : _a.currency_slug, (_b = props.sendExternalData) === null || _b === void 0 ? void 0 : _b.amount]);
160
- var getEstimateFee = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
161
- return __generator(this, function (_a) {
162
- if (!tokenSlug) {
163
- setIsLoadingEstimateFee(false);
164
- return [2 /*return*/];
165
- }
166
- setIsLoadingEstimateFee(true);
167
- getEstimateFeeDebounce(function () { return __awaiter(void 0, void 0, void 0, function () {
168
- var isValidateAmount, response, fee;
169
- var _a;
170
- return __generator(this, function (_b) {
171
- switch (_b.label) {
172
- case 0:
173
- isValidateAmount = validateAmount();
174
- if (!isValidateAmount) {
175
- setIsLoadingEstimateFee(false);
176
- return [2 /*return*/];
177
- }
178
- return [4 /*yield*/, (0, get_est_fee_service_1.default)({
179
- amount: "".concat(amount),
180
- transaction_type: transactionSlug,
181
- currency: tokenSlug || "",
182
- })];
183
- case 1:
184
- response = _b.sent();
185
- setIsLoadingEstimateFee(false);
186
- fee = response === null || response === void 0 ? void 0 : response.data;
187
- setEstimateFee(fee);
188
- (_a = props.setEstimateFee) === null || _a === void 0 ? void 0 : _a.call(props, fee);
189
- return [2 /*return*/];
190
- }
191
- });
192
- }); });
193
- return [2 /*return*/];
194
- });
195
- }); }, [validateAmount, tokenSlug, amount]);
177
+ setErrorAmount(undefined);
178
+ }, [withdrawTokens]);
196
179
  var handleSendExternalToken = function (passcode) { return __awaiter(void 0, void 0, void 0, function () {
197
180
  var response, err_1;
198
181
  var _a, _b;
@@ -231,10 +214,14 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
231
214
  }); };
232
215
  var handleOpen = function () {
233
216
  var _a;
217
+ if (!isAuthenticated)
218
+ throw new Error("Please connect your wallet");
234
219
  (_a = confirmLayoutDrawerRef.current) === null || _a === void 0 ? void 0 : _a.open();
235
220
  };
236
221
  var handleClose = function () {
237
222
  var _a;
223
+ if (!isAuthenticated)
224
+ throw new Error("Please connect your wallet");
238
225
  (_a = confirmLayoutDrawerRef.current) === null || _a === void 0 ? void 0 : _a.close();
239
226
  };
240
227
  (0, react_1.useImperativeHandle)(ref, function () { return ({
@@ -249,12 +236,15 @@ var SendExternalToken = (0, react_1.forwardRef)(function (props, ref) {
249
236
  (0, react_1.useEffect)(function () {
250
237
  getEstimateFee();
251
238
  }, [getEstimateFee]);
239
+ (0, react_1.useEffect)(function () {
240
+ validateAmount(props.sendExternalData);
241
+ }, [validateAmount, props.sendExternalData]);
252
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: {
253
243
  wordBreak: "break-all",
254
- }, 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 }), ((_c = estimateFee === null || estimateFee === void 0 ? void 0 : estimateFee.feeDetail) === null || _c === void 0 ? void 0 : _c.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: {
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: {
255
245
  fontWeight: theme.typography.fontWeight600,
256
246
  fontSize: theme.typography.fontSize16,
257
- }, 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 })] }) }));
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 })] }) }));
258
248
  });
259
249
  SendExternalToken.displayName = "SendExternalToken";
260
250
  exports.default = SendExternalToken;
@@ -113,10 +113,13 @@ 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"));
116
117
  var Fees_1 = __importDefault(require("../Fees"));
117
- var SendExternalToken_1 = __importDefault(require("../SendExternalToken"));
118
+ var type_1 = require("../../../services/axios/get-activities-service/type");
119
+ // import SendExternalToken from "../SendExternalToken";
118
120
  var SendInternalToken_1 = __importDefault(require("../SendInternalToken"));
119
121
  var createDebounce_1 = __importDefault(require("../../../utils/createDebounce"));
122
+ var type_2 = require("../../../services/axios/validate-wallet-address-service/type");
120
123
  var SendMethods;
121
124
  (function (SendMethods) {
122
125
  SendMethods["SCAN_QR_CODE"] = "scan qr code";
@@ -144,6 +147,7 @@ var AmountError;
144
147
  AmountError["MAX_LIMIT"] = "The maximum amount is";
145
148
  AmountError["MIN_LIMIT"] = "The minimum amount is";
146
149
  })(AmountError || (exports.AmountError = AmountError = {}));
150
+ var getEstimateFeeDebounce = (0, createDebounce_1.default)(500);
147
151
  var validateAddressDebounce = (0, createDebounce_1.default)(500);
148
152
  var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
149
153
  var _a;
@@ -164,7 +168,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
164
168
  var _m = (0, react_1.useState)(), amountError = _m[0], setAmountError = _m[1];
165
169
  var scannerAllQrCodeRef = (0, react_1.useRef)(null);
166
170
  var scannerAddressQrCodeRef = (0, react_1.useRef)(null);
167
- var backDropRef = (0, react_1.useRef)(null);
171
+ var loadingDropRef = (0, react_1.useRef)(null);
168
172
  var suggestUseTransferInternalDialogRef = (0, react_1.useRef)(null);
169
173
  var suggestUseTransferExternalDialogRef = (0, react_1.useRef)(null);
170
174
  var _o = (0, react_1.useState)(), selectedMethod = _o[0], setSelectedMethod = _o[1];
@@ -240,6 +244,28 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
240
244
  open: open,
241
245
  close: close,
242
246
  }); });
247
+ var validateAmount = (0, react_1.useCallback)(function () {
248
+ var _a, _b;
249
+ if (!selectedToken)
250
+ return false;
251
+ if (+amount < +(selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.min_value)) {
252
+ setAmountErrorMessage(AmountError.MIN_LIMIT);
253
+ setAmountError(+((_a = selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.min_value) !== null && _a !== void 0 ? _a : 0));
254
+ return false;
255
+ }
256
+ if (+amount > +(selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.max_value)) {
257
+ setAmountErrorMessage(AmountError.MAX_LIMIT);
258
+ setAmountError(+((_b = selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.max_value) !== null && _b !== void 0 ? _b : 0));
259
+ return false;
260
+ }
261
+ if (+amount > +(selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.balance)) {
262
+ setAmountErrorMessage(AmountError.INSUFFICIENT_BALANCE);
263
+ return false;
264
+ }
265
+ setAmountError(undefined);
266
+ setAmountErrorMessage(undefined);
267
+ return true;
268
+ }, [amount, selectedToken]);
243
269
  var handleClearInfoDialogContent = function () {
244
270
  setInfoDialogContent(undefined);
245
271
  };
@@ -329,6 +355,39 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
329
355
  break;
330
356
  }
331
357
  };
358
+ var getEstimateFee = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
359
+ var isValidateAmount;
360
+ return __generator(this, function (_a) {
361
+ if (!selectedToken)
362
+ return [2 /*return*/];
363
+ isValidateAmount = validateAmount();
364
+ console.warn("🚀 ~ getEstimateFee ~ isValidateAmount:", isValidateAmount);
365
+ if (!isValidateAmount)
366
+ return [2 /*return*/];
367
+ console.warn("🚀 ~ getEstimateFee ~ isValidateAmount 2:", isValidateAmount);
368
+ setIsLoadingEstimateFee(true);
369
+ getEstimateFeeDebounce(function () { return __awaiter(void 0, void 0, void 0, function () {
370
+ var response;
371
+ return __generator(this, function (_a) {
372
+ switch (_a.label) {
373
+ case 0: return [4 /*yield*/, (0, get_est_fee_service_1.default)({
374
+ amount: "".concat(amount),
375
+ transaction_type: selectedMethod === SendMethods.TRANSFER_EXTERNAL
376
+ ? type_1.TransactionSlug.Withdrawn
377
+ : type_1.TransactionSlug.TransferInternal,
378
+ currency: (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.slug) || "",
379
+ })];
380
+ case 1:
381
+ response = _a.sent();
382
+ setIsLoadingEstimateFee(false);
383
+ setEstimateFee(response === null || response === void 0 ? void 0 : response.data);
384
+ return [2 /*return*/];
385
+ }
386
+ });
387
+ }); });
388
+ return [2 /*return*/];
389
+ });
390
+ }); }, [selectedToken, validateAmount, amount, selectedMethod]);
332
391
  var openScannerAddressQrCode = function () {
333
392
  var _a;
334
393
  (_a = scannerAddressQrCodeRef.current) === null || _a === void 0 ? void 0 : _a.open();
@@ -365,7 +424,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
365
424
  return __generator(this, function (_a) {
366
425
  setIsValidatingAddress(true);
367
426
  validateAddressDebounce(function () { return __awaiter(void 0, void 0, void 0, function () {
368
- var validateWalletAddress;
427
+ var result, message;
369
428
  var _a;
370
429
  return __generator(this, function (_b) {
371
430
  switch (_b.label) {
@@ -374,22 +433,28 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
374
433
  network: network,
375
434
  })];
376
435
  case 1:
377
- validateWalletAddress = _b.sent();
436
+ result = _b.sent();
437
+ message = result.message;
378
438
  setIsValidatingAddress(false);
379
- if (!!(validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.valid)) {
380
- setRecipientAddressError(undefined);
439
+ if (message === type_2.ValidateWalletAddressResultMessage.ERROR) {
440
+ setRecipientAddressError("Something went wrong, please try again");
441
+ return [2 /*return*/];
381
442
  }
382
- if (!!(validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.master_wallet_address)) {
443
+ if (message === type_2.ValidateWalletAddressResultMessage.IN_VALID) {
444
+ setRecipientAddressError("Invalid wallet address");
445
+ return [2 /*return*/];
446
+ }
447
+ if (message === type_2.ValidateWalletAddressResultMessage.IS_CURRENT_WALLET) {
448
+ setInfoDialogContent("You can not send to yourself wallet");
449
+ return [2 /*return*/];
450
+ }
451
+ if (message === type_2.ValidateWalletAddressResultMessage.INTERNAL_WALLET) {
383
452
  (_a = suggestUseTransferInternalDialogRef.current) === null || _a === void 0 ? void 0 : _a.open();
384
453
  }
385
- else if (!!(validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.valid)) {
386
- //external
454
+ if (message === type_2.ValidateWalletAddressResultMessage.EXTERNAL_WALLET) {
387
455
  handleSelectContinueTransferExternal();
388
456
  }
389
- else {
390
- // setInfoDialogContent("Unsupported QR");
391
- setRecipientAddressError("Invalid wallet address");
392
- }
457
+ setRecipientAddressError(undefined);
393
458
  return [2 /*return*/];
394
459
  }
395
460
  });
@@ -398,7 +463,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
398
463
  });
399
464
  }); };
400
465
  var handleScanAllQrCode = function (result) { return __awaiter(void 0, void 0, void 0, function () {
401
- var text, isReceiveInternal, tonTransferParam, validateWalletAddress;
466
+ var text, isReceiveInternal, tonTransferParam, validateResult, message, validateData;
402
467
  var _a, _b, _c, _d, _e, _f;
403
468
  return __generator(this, function (_g) {
404
469
  switch (_g.label) {
@@ -411,49 +476,47 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
411
476
  tonTransferParam = isReceiveInternal
412
477
  ? JSON.parse(text)
413
478
  : (0, parseTonTransferUrl_1.default)(text);
414
- (_c = backDropRef.current) === null || _c === void 0 ? void 0 : _c.open();
479
+ (_c = loadingDropRef.current) === null || _c === void 0 ? void 0 : _c.open();
415
480
  return [4 /*yield*/, (0, validate_wallet_address_service_1.default)({
416
481
  address: tonTransferParam === null || tonTransferParam === void 0 ? void 0 : tonTransferParam.address,
417
482
  network: (selectedNetwork === null || selectedNetwork === void 0 ? void 0 : selectedNetwork.slug) || "ton",
418
483
  })];
419
484
  case 1:
420
- validateWalletAddress = _g.sent();
421
- if (!validateWalletAddress) {
422
- setInfoDialogContent("Unsupported QR");
485
+ validateResult = _g.sent();
486
+ message = validateResult.message, validateData = validateResult.data;
487
+ if (message === type_2.ValidateWalletAddressResultMessage.ERROR) {
488
+ setInfoDialogContent("Something went wrong, please try again");
489
+ // setRecipientAddressError("Invalid wallet address");
423
490
  return [2 /*return*/];
424
491
  }
425
- if (validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.master_wallet_address) {
426
- tonTransferParam.address = validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.master_wallet_address;
427
- }
428
- setSendInfoGet(tonTransferParam);
429
- (_d = backDropRef.current) === null || _d === void 0 ? void 0 : _d.close();
430
- if (validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.is_current_wallet) {
431
- setInfoDialogContent("You can not send to your own wallet");
492
+ if (message === type_2.ValidateWalletAddressResultMessage.IN_VALID) {
493
+ setInfoDialogContent("Unsupported QR");
432
494
  return [2 /*return*/];
433
495
  }
434
- if (!!(validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.valid)) {
435
- setRecipientAddressError(undefined);
496
+ if (message === type_2.ValidateWalletAddressResultMessage.IS_CURRENT_WALLET) {
497
+ setInfoDialogContent("You can not send to yourself wallet");
498
+ return [2 /*return*/];
436
499
  }
437
- if (!!(validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.master_wallet_address)) {
500
+ setRecipientAddressError(undefined);
501
+ if (message === type_2.ValidateWalletAddressResultMessage.INTERNAL_WALLET) {
502
+ tonTransferParam.address = validateData.master_wallet_address;
438
503
  if (isReceiveInternal || selectedMethod === SendMethods.TRANSFER_INTERNAL) {
439
504
  handleSelectTransferInternal(tonTransferParam);
440
505
  }
441
506
  else {
442
- (_e = suggestUseTransferInternalDialogRef.current) === null || _e === void 0 ? void 0 : _e.open();
507
+ (_d = suggestUseTransferInternalDialogRef.current) === null || _d === void 0 ? void 0 : _d.open();
443
508
  }
444
509
  }
445
- else if (!!(validateWalletAddress === null || validateWalletAddress === void 0 ? void 0 : validateWalletAddress.valid)) {
510
+ if (message === type_2.ValidateWalletAddressResultMessage.EXTERNAL_WALLET) {
446
511
  if (selectedMethod === SendMethods.TRANSFER_EXTERNAL || selectedMethod === SendMethods.SCAN_QR_CODE) {
447
512
  handleSelectContinueTransferExternal(tonTransferParam);
448
513
  }
449
514
  else {
450
- (_f = suggestUseTransferExternalDialogRef.current) === null || _f === void 0 ? void 0 : _f.open();
515
+ (_e = suggestUseTransferExternalDialogRef.current) === null || _e === void 0 ? void 0 : _e.open();
451
516
  }
452
517
  }
453
- else {
454
- setInfoDialogContent("Unsupported QR");
455
- setRecipientAddressError("Invalid wallet address");
456
- }
518
+ setSendInfoGet(tonTransferParam);
519
+ (_f = loadingDropRef.current) === null || _f === void 0 ? void 0 : _f.close();
457
520
  _g.label = 2;
458
521
  case 2: return [2 /*return*/];
459
522
  }
@@ -476,6 +539,9 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
476
539
  updateSendInternalToken();
477
540
  }
478
541
  }, [isAuthenticated, withdrawTokens, sendInternalTokens]);
542
+ (0, react_1.useEffect)(function () {
543
+ getEstimateFee();
544
+ }, [getEstimateFee]);
479
545
  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: {
480
546
  width: "100%",
481
547
  display: "flex",
@@ -521,21 +587,28 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
521
587
  placeholder: "Enter memo",
522
588
  value: memo,
523
589
  onChange: handleChangeMemo,
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: {
525
- amount: "".concat(amount),
526
- currency_slug: (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.slug) || "",
527
- to_address: recipientAddress || "",
528
- network: selectedNetwork,
529
- memo: memo || "",
530
- }, onSuccess: close, children: (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { sx: { width: "100%" }, status: !!amountError ||
531
- !!recipientAddressError ||
532
- !recipientAddress ||
533
- !amount ||
534
- !selectedToken ||
535
- isLoadingEstimateFee ||
536
- isValidatingAddress
537
- ? Button_1.BUTTON_STATUS.DISABLED
538
- : 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 && (
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: {
539
612
  amount: "".concat(amount),
540
613
  currency_slug: (selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.slug) || "",
541
614
  to_address: recipientAddress || "",
@@ -547,7 +620,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
547
620
  isLoadingEstimateFee ||
548
621
  isValidatingAddress
549
622
  ? Button_1.BUTTON_STATUS.DISABLED
550
- : Button_1.BUTTON_STATUS.ENABLED, children: "Continue" }) }))] }) }, WithdrawStep.FORM)] }), (0, jsx_runtime_1.jsx)(QrCodeReader_1.default, { ref: scannerAllQrCodeRef, onResult: handleScanAllQrCode }), (0, jsx_runtime_1.jsx)(QrCodeReader_1.default, { ref: scannerAddressQrCodeRef, onResult: handleScanAddressQrCode }), (0, jsx_runtime_1.jsx)(AppBackDrop_1.default, { ref: backDropRef }), (0, jsx_runtime_1.jsx)(AppDialog_1.default, { overrideOpen: !!infoDialogContent, children: (0, jsx_runtime_1.jsx)(DialogContentLayout_1.default, { content: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: {
623
+ : Button_1.BUTTON_STATUS.ENABLED, children: "Continue" }) }))] }) }, WithdrawStep.FORM)] }), (0, jsx_runtime_1.jsx)(QrCodeReader_1.default, { ref: scannerAllQrCodeRef, onResult: handleScanAllQrCode }), (0, jsx_runtime_1.jsx)(QrCodeReader_1.default, { ref: scannerAddressQrCodeRef, onResult: handleScanAddressQrCode }), (0, jsx_runtime_1.jsx)(AppBackDrop_1.default, { ref: loadingDropRef }), (0, jsx_runtime_1.jsx)(AppDialog_1.default, { overrideOpen: !!infoDialogContent, children: (0, jsx_runtime_1.jsx)(DialogContentLayout_1.default, { content: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: {
551
624
  textAlign: "center",
552
625
  display: "inline-block",
553
626
  width: "100%",
@@ -1,3 +1,3 @@
1
- import { ValidateWalletAddressBody, ValidateWalletAddressData } from "./type";
2
- declare const validateWalletAddressService: (body: ValidateWalletAddressBody) => Promise<ValidateWalletAddressData | undefined>;
1
+ import { ValidateWalletAddressBody, ValidateWalletAddressResult } from "./type";
2
+ declare const validateWalletAddressService: (body: ValidateWalletAddressBody) => Promise<ValidateWalletAddressResult>;
3
3
  export default validateWalletAddressService;
@@ -40,8 +40,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  var userClientRequest_1 = __importDefault(require("../clients/userClientRequest"));
43
+ var type_1 = require("./type");
43
44
  var validateWalletAddressService = function (body) { return __awaiter(void 0, void 0, void 0, function () {
44
- var response, error_1;
45
+ var response, data, error_1;
45
46
  var _a;
46
47
  return __generator(this, function (_b) {
47
48
  switch (_b.label) {
@@ -50,11 +51,30 @@ var validateWalletAddressService = function (body) { return __awaiter(void 0, vo
50
51
  return [4 /*yield*/, userClientRequest_1.default.get("/crypto/validate-address/".concat(body.network, "?address=").concat(body.address))];
51
52
  case 1:
52
53
  response = _b.sent();
53
- return [2 /*return*/, (_a = response.data) === null || _a === void 0 ? void 0 : _a.data];
54
+ data = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data;
55
+ if (!(data === null || data === void 0 ? void 0 : data.valid)) {
56
+ return [2 /*return*/, {
57
+ message: type_1.ValidateWalletAddressResultMessage.IN_VALID,
58
+ data: data,
59
+ }];
60
+ }
61
+ if (data === null || data === void 0 ? void 0 : data.master_wallet_address) {
62
+ return [2 /*return*/, {
63
+ message: type_1.ValidateWalletAddressResultMessage.INTERNAL_WALLET,
64
+ data: data,
65
+ }];
66
+ }
67
+ return [2 /*return*/, {
68
+ message: type_1.ValidateWalletAddressResultMessage.EXTERNAL_WALLET,
69
+ data: data,
70
+ }];
54
71
  case 2:
55
72
  error_1 = _b.sent();
56
73
  console.error(error_1);
57
- return [2 /*return*/];
74
+ return [2 /*return*/, {
75
+ message: type_1.ValidateWalletAddressResultMessage.ERROR,
76
+ data: undefined,
77
+ }];
58
78
  case 3: return [2 /*return*/];
59
79
  }
60
80
  });
@@ -16,3 +16,14 @@ export interface ValidateWalletAddressBody {
16
16
  address: string;
17
17
  network: string;
18
18
  }
19
+ export interface ValidateWalletAddressResult {
20
+ message: ValidateWalletAddressResultMessage;
21
+ data: ValidateWalletAddressData | undefined;
22
+ }
23
+ export declare enum ValidateWalletAddressResultMessage {
24
+ IN_VALID = "invalid",
25
+ INTERNAL_WALLET = "internal wallet",
26
+ EXTERNAL_WALLET = "external wallet",
27
+ ERROR = "error",
28
+ IS_CURRENT_WALLET = "is current wallet"
29
+ }
@@ -1,2 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidateWalletAddressResultMessage = void 0;
4
+ var ValidateWalletAddressResultMessage;
5
+ (function (ValidateWalletAddressResultMessage) {
6
+ ValidateWalletAddressResultMessage["IN_VALID"] = "invalid";
7
+ ValidateWalletAddressResultMessage["INTERNAL_WALLET"] = "internal wallet";
8
+ ValidateWalletAddressResultMessage["EXTERNAL_WALLET"] = "external wallet";
9
+ ValidateWalletAddressResultMessage["ERROR"] = "error";
10
+ ValidateWalletAddressResultMessage["IS_CURRENT_WALLET"] = "is current wallet";
11
+ })(ValidateWalletAddressResultMessage || (exports.ValidateWalletAddressResultMessage = ValidateWalletAddressResultMessage = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tek-wallet",
3
- "version": "0.0.514",
3
+ "version": "0.0.516",
4
4
  "description": "A custom React provider with TypeScript support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",