tek-wallet 0.0.749 → 0.0.752

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/README.md CHANGED
@@ -18,14 +18,7 @@ import { TekWalletProvider } from "tek-wallet";
18
18
  <YourApp />
19
19
  </TekWalletProvider>;
20
20
 
21
- // Cấu hình với MUI Theme
22
- import theme from "path-to-your-theme";
23
-
24
- <TekWalletProvider
25
- isSSO
26
- accessToken={accessToken}
27
- theme={theme} // Truyền theme nếu sử dụng MUI
28
- >
21
+ <TekWalletProvider isSSO accessToken={accessToken}>
29
22
  <YourApp />
30
23
  </TekWalletProvider>;
31
24
  ```
@@ -50,7 +43,9 @@ NEXT_PUBLIC_TEK_WALLET_ABLY_API_KEY=your_ably_api_key
50
43
  Component này được sử dụng để kiểm tra trạng thái kết nối ví trước khi thực hiện các hành động yêu cầu ví phải được kết nối.
51
44
 
52
45
  ```jsx
53
- import { RequiredConnect } from "tek-ưallet";
46
+ import { RequiredConnect, useWallet } from "tek-wallet";
47
+
48
+ const { tokens } = useWallet();
54
49
 
55
50
  <RequiredConnect>
56
51
  <Button.Primary onClick={() => console.log(tokens)}>Log balances</Button.Primary>
@@ -81,6 +76,14 @@ Component hiển thị tài sản trong ví.
81
76
 
82
77
  Component xử lý chức năng rút token.
83
78
 
79
+ ### ConfirmSendExternal
80
+
81
+ Component xử lý chức năng rút token bản đơn giản (khả năng custom cao).
82
+
83
+ ### ConfirmSendInternal
84
+
85
+ Component xử lý chức năng chuyển nội bộ bản đơn giản (khả năng custom cao).
86
+
84
87
  ## States
85
88
 
86
89
  ### Wallet States
@@ -133,6 +136,12 @@ Component xử lý chức năng rút token.
133
136
  | `updateReceiveExternalToken()` | Cập nhật danh sách các token được phép nhận từ bên ngoài |
134
137
  | `updateReceiveInternalToken()` | Cập nhật danh sách các token được phép nhận nội bộ |
135
138
 
139
+ ### Validation
140
+
141
+ | Method | Description |
142
+ | -------------------------------- | ------------------------------------ |
143
+ | `validateWalletAddressService()` | Validate địa chỉ ví nội bộ / Onchain |
144
+
136
145
  ### Notification
137
146
 
138
147
  | Method | Description |
@@ -150,7 +159,6 @@ Component xử lý chức năng rút token.
150
159
 
151
160
  ## Lưu ý
152
161
 
153
- - Khi sử dụng MUI, hãy truyền theme vào TekWalletProvider để giữ nguyên các cấu hình theme của bạn
154
162
  - Đảm bảo luôn sử dụng RequiredConnect cho các hành động yêu cầu ví phải được kết nối
155
163
  - Các biến môi trường phải được cấu hình đúng để đảm bảo ứng dụng hoạt động chính xác
156
164
 
@@ -13,3 +13,4 @@ export * from "./ui/TransferConfirmation";
13
13
  export * from "./ui/Formatter";
14
14
  export * from "./ui/TokenItem";
15
15
  export * from "./ui/ConfirmTransferInternal";
16
+ export * from "./ui/Button";
@@ -29,3 +29,4 @@ __exportStar(require("./ui/TransferConfirmation"), exports);
29
29
  __exportStar(require("./ui/Formatter"), exports);
30
30
  __exportStar(require("./ui/TokenItem"), exports);
31
31
  __exportStar(require("./ui/ConfirmTransferInternal"), exports);
32
+ __exportStar(require("./ui/Button"), exports);
@@ -0,0 +1,16 @@
1
+ import { ConfirmLayoutProps } from "../ConfirmLayout";
2
+ import { SendExternalBody, SendExternalResponse } from "../../../services/axios/send-external-service/type";
3
+ import { NetworkData } from "../../../services/axios/type";
4
+ export interface SendExternalDataType extends Omit<SendExternalBody, "network" | "passcode"> {
5
+ network: NetworkData;
6
+ }
7
+ export interface ConfirmSendExternalProps extends Omit<ConfirmLayoutProps, "action"> {
8
+ payload: SendExternalDataType;
9
+ onSuccess?: (data: SendExternalResponse) => unknown;
10
+ onStart?: () => void;
11
+ onFinally?: () => void;
12
+ onError?: (error: Error | unknown) => void;
13
+ children: React.ReactNode;
14
+ }
15
+ export declare const ConfirmSendExternal: ({ payload, onSuccess, onStart, onFinally, onError, children, }: ConfirmSendExternalProps) => import("react/jsx-runtime").JSX.Element;
16
+ export default ConfirmSendExternal;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ "use client";
3
+ var __assign = (this && this.__assign) || function () {
4
+ __assign = Object.assign || function(t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8
+ t[p] = s[p];
9
+ }
10
+ return t;
11
+ };
12
+ return __assign.apply(this, arguments);
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var __generator = (this && this.__generator) || function (thisArg, body) {
24
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
25
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
26
+ function verb(n) { return function (v) { return step([n, v]); }; }
27
+ function step(op) {
28
+ if (f) throw new TypeError("Generator is already executing.");
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
+ if (y = 0, t) op = [op[0] & 2, t.value];
32
+ switch (op[0]) {
33
+ case 0: case 1: t = op; break;
34
+ case 4: _.label++; return { value: op[1], done: false };
35
+ case 5: _.label++; y = op[1]; op = [0]; continue;
36
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
37
+ default:
38
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
39
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
40
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
41
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
42
+ if (t[2]) _.ops.pop();
43
+ _.trys.pop(); continue;
44
+ }
45
+ op = body.call(thisArg, _);
46
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
47
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
48
+ }
49
+ };
50
+ var __importDefault = (this && this.__importDefault) || function (mod) {
51
+ return (mod && mod.__esModule) ? mod : { "default": mod };
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.ConfirmSendExternal = void 0;
55
+ var jsx_runtime_1 = require("react/jsx-runtime");
56
+ var ConfirmByPasscode_1 = __importDefault(require("../ConfirmByPasscode"));
57
+ var send_external_service_1 = __importDefault(require("../../../services/axios/send-external-service"));
58
+ var ConfirmSendExternal = function (_a) {
59
+ var payload = _a.payload, onSuccess = _a.onSuccess, onStart = _a.onStart, onFinally = _a.onFinally, onError = _a.onError, children = _a.children;
60
+ var network = payload.network;
61
+ var handleConfirmSendExternal = function (passcode) { return __awaiter(void 0, void 0, void 0, function () {
62
+ var response, err_1;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ _a.trys.push([0, 2, 3, 4]);
67
+ onStart === null || onStart === void 0 ? void 0 : onStart();
68
+ return [4 /*yield*/, (0, send_external_service_1.default)(__assign(__assign({}, payload), { network: network.slug, passcode: passcode }))];
69
+ case 1:
70
+ response = _a.sent();
71
+ if (response.success) {
72
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(response);
73
+ }
74
+ else {
75
+ throw new Error("Send external failed", { cause: response });
76
+ }
77
+ return [3 /*break*/, 4];
78
+ case 2:
79
+ err_1 = _a.sent();
80
+ console.error(err_1);
81
+ onError === null || onError === void 0 ? void 0 : onError(err_1);
82
+ return [3 /*break*/, 4];
83
+ case 3:
84
+ onFinally === null || onFinally === void 0 ? void 0 : onFinally();
85
+ return [7 /*endfinally*/];
86
+ case 4: return [2 /*return*/];
87
+ }
88
+ });
89
+ }); };
90
+ return ((0, jsx_runtime_1.jsx)(ConfirmByPasscode_1.default, { onConfirmSuccess: handleConfirmSendExternal, children: children }));
91
+ };
92
+ exports.ConfirmSendExternal = ConfirmSendExternal;
93
+ exports.default = exports.ConfirmSendExternal;
@@ -0,0 +1,15 @@
1
+ import { TransferInternalBody, TransferInternalResponse } from "../../../services/axios/transfer-internal-service/type";
2
+ export interface SendInternalDataType extends Omit<TransferInternalBody, "passcode"> {
3
+ }
4
+ export interface SendInternalResponse extends TransferInternalResponse {
5
+ }
6
+ export interface ConfirmSendInternalProps {
7
+ payload: SendInternalDataType;
8
+ onSuccess?: (data: SendInternalResponse) => unknown;
9
+ onStart?: () => void;
10
+ onFinally?: () => void;
11
+ onError?: (error: Error | unknown) => void;
12
+ children: React.ReactNode;
13
+ }
14
+ export declare function ConfirmSendInternal({ payload, onSuccess, onStart, onFinally, onError, children, }: ConfirmSendInternalProps): import("react/jsx-runtime").JSX.Element;
15
+ export default ConfirmSendInternal;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ "use client";
3
+ var __assign = (this && this.__assign) || function () {
4
+ __assign = Object.assign || function(t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8
+ t[p] = s[p];
9
+ }
10
+ return t;
11
+ };
12
+ return __assign.apply(this, arguments);
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var __generator = (this && this.__generator) || function (thisArg, body) {
24
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
25
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
26
+ function verb(n) { return function (v) { return step([n, v]); }; }
27
+ function step(op) {
28
+ if (f) throw new TypeError("Generator is already executing.");
29
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
+ if (y = 0, t) op = [op[0] & 2, t.value];
32
+ switch (op[0]) {
33
+ case 0: case 1: t = op; break;
34
+ case 4: _.label++; return { value: op[1], done: false };
35
+ case 5: _.label++; y = op[1]; op = [0]; continue;
36
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
37
+ default:
38
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
39
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
40
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
41
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
42
+ if (t[2]) _.ops.pop();
43
+ _.trys.pop(); continue;
44
+ }
45
+ op = body.call(thisArg, _);
46
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
47
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
48
+ }
49
+ };
50
+ var __importDefault = (this && this.__importDefault) || function (mod) {
51
+ return (mod && mod.__esModule) ? mod : { "default": mod };
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.ConfirmSendInternal = ConfirmSendInternal;
55
+ var jsx_runtime_1 = require("react/jsx-runtime");
56
+ var transfer_internal_service_1 = __importDefault(require("../../../services/axios/transfer-internal-service"));
57
+ var ConfirmByPasscode_1 = __importDefault(require("../ConfirmByPasscode"));
58
+ function ConfirmSendInternal(_a) {
59
+ var _this = this;
60
+ var payload = _a.payload, onSuccess = _a.onSuccess, onStart = _a.onStart, onFinally = _a.onFinally, onError = _a.onError, children = _a.children;
61
+ var handleConfirmSendInternal = function (passcode) { return __awaiter(_this, void 0, void 0, function () {
62
+ var response, err_1;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0:
66
+ _a.trys.push([0, 2, 3, 4]);
67
+ onStart === null || onStart === void 0 ? void 0 : onStart();
68
+ return [4 /*yield*/, (0, transfer_internal_service_1.default)(__assign(__assign({}, payload), { passcode: passcode }))];
69
+ case 1:
70
+ response = _a.sent();
71
+ if (response.success) {
72
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(response);
73
+ }
74
+ else {
75
+ throw new Error("Send internal failed", { cause: response });
76
+ }
77
+ return [3 /*break*/, 4];
78
+ case 2:
79
+ err_1 = _a.sent();
80
+ console.error(err_1);
81
+ onError === null || onError === void 0 ? void 0 : onError(err_1);
82
+ return [3 /*break*/, 4];
83
+ case 3:
84
+ onFinally === null || onFinally === void 0 ? void 0 : onFinally();
85
+ return [7 /*endfinally*/];
86
+ case 4: return [2 /*return*/];
87
+ }
88
+ });
89
+ }); };
90
+ return ((0, jsx_runtime_1.jsx)(ConfirmByPasscode_1.default, { onConfirmSuccess: handleConfirmSendInternal, children: children }));
91
+ }
92
+ exports.default = ConfirmSendInternal;
@@ -2,13 +2,17 @@ import React, { PropsWithChildren, HTMLAttributes } from "react";
2
2
  import { BUTTON_STATUS } from "../Button";
3
3
  import { InstructionBody } from "../../../services/axios/instructions-service/type";
4
4
  import { GeneralProps } from "../../../types/ui";
5
+ import { InstructionResponse } from "../../../services/axios/instructions-service/response.type";
5
6
  type ConfirmTransactionProps = {
6
7
  transactionSlug: string;
7
8
  transactionData: Omit<InstructionBody, "passcode">;
8
9
  renderChildren: (props: PropsWithChildren<HTMLAttributes<HTMLElement>> & {
9
10
  status: BUTTON_STATUS;
10
11
  }) => React.ReactElement<any>;
11
- onTransferSuccess?: (data: any) => void;
12
+ onSuccess?: (data: InstructionResponse) => void;
13
+ onError?: (error: any) => void;
14
+ onStart?: () => void;
15
+ onFinally?: () => void;
12
16
  } & GeneralProps;
13
- export declare function ConfirmTransaction({ renderChildren, transactionSlug, transactionData, onTransferSuccess, }: ConfirmTransactionProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function ConfirmTransaction({ renderChildren, transactionSlug, transactionData, onSuccess, onError, onStart, onFinally, }: ConfirmTransactionProps): import("react/jsx-runtime").JSX.Element;
14
18
  export default ConfirmTransaction;
@@ -59,35 +59,40 @@ var Button_1 = require("../Button");
59
59
  var instructions_service_1 = __importDefault(require("../../../services/axios/instructions-service"));
60
60
  function ConfirmTransaction(_a) {
61
61
  var _this = this;
62
- var renderChildren = _a.renderChildren, transactionSlug = _a.transactionSlug, transactionData = _a.transactionData, onTransferSuccess = _a.onTransferSuccess;
62
+ var renderChildren = _a.renderChildren, transactionSlug = _a.transactionSlug, transactionData = _a.transactionData, onSuccess = _a.onSuccess, onError = _a.onError, onStart = _a.onStart, onFinally = _a.onFinally;
63
63
  var _b = (0, react_1.useState)(Button_1.BUTTON_STATUS.ENABLED), buttonStatus = _b[0], setButtonStatus = _b[1];
64
64
  var handleConfirmPasscode = function (passcode) { return __awaiter(_this, void 0, void 0, function () {
65
65
  var response, err_1;
66
66
  return __generator(this, function (_a) {
67
67
  switch (_a.label) {
68
68
  case 0:
69
- _a.trys.push([0, 2, , 3]);
69
+ _a.trys.push([0, 2, 3, 4]);
70
70
  setButtonStatus(Button_1.BUTTON_STATUS.LOADING);
71
+ onStart === null || onStart === void 0 ? void 0 : onStart();
71
72
  return [4 /*yield*/, (0, instructions_service_1.default)(__assign(__assign({}, transactionData), { passcode: passcode }))];
72
73
  case 1:
73
74
  response = _a.sent();
74
75
  if (response.success) {
75
76
  setButtonStatus(Button_1.BUTTON_STATUS.ENABLED);
76
- onTransferSuccess === null || onTransferSuccess === void 0 ? void 0 : onTransferSuccess(response);
77
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(response);
77
78
  }
78
79
  else {
79
80
  throw new Error("Send internal failed");
80
81
  }
81
- return [3 /*break*/, 3];
82
+ return [3 /*break*/, 4];
82
83
  case 2:
83
84
  err_1 = _a.sent();
84
85
  console.error(err_1);
86
+ onError === null || onError === void 0 ? void 0 : onError(err_1);
85
87
  setButtonStatus(Button_1.BUTTON_STATUS.ERROR);
86
88
  setTimeout(function () {
87
89
  setButtonStatus(Button_1.BUTTON_STATUS.ENABLED);
88
90
  }, 1200);
89
- return [3 /*break*/, 3];
90
- case 3: return [2 /*return*/];
91
+ return [3 /*break*/, 4];
92
+ case 3:
93
+ onFinally === null || onFinally === void 0 ? void 0 : onFinally();
94
+ return [7 /*endfinally*/];
95
+ case 4: return [2 /*return*/];
91
96
  }
92
97
  });
93
98
  }); };
@@ -0,0 +1,28 @@
1
+ import { ConfirmLayoutProps } from "../ConfirmLayout";
2
+ import { SendInternalResponse } from "../../../services/axios/send-internal-service/type";
3
+ import { InstructionBody } from "../../../services/axios/instructions-service/type";
4
+ export type TransferConfirmationData = InstructionBody & {
5
+ amount: number;
6
+ currency_slug: string;
7
+ to_address: string;
8
+ isEnoughBalance: boolean;
9
+ };
10
+ interface TransferConfirmationProps extends Omit<ConfirmLayoutProps, "action"> {
11
+ transferData: TransferConfirmationData;
12
+ transferContent: React.ReactNode;
13
+ titleHeader: string;
14
+ onTransferSuccess?: (data: SendInternalResponse) => any;
15
+ }
16
+ export interface TransferConfirmationTokenRef {
17
+ open: () => void;
18
+ close: () => void;
19
+ }
20
+ export declare enum TransferConfirmationError {
21
+ TOKEN_NOT_FOUND = "\u24D8 Token not found",
22
+ NOT_ENOUGH_BALANCE = "\u24D8 Not enough balance",
23
+ MAX_AMOUNT = "\u24D8 Max amount",
24
+ MIN_AMOUNT = "\u24D8 Min amount",
25
+ FAILED = "\u24D8 Failed"
26
+ }
27
+ export declare const TransferConfirmation: import("react").ForwardRefExoticComponent<Omit<TransferConfirmationProps, "ref"> & import("react").RefAttributes<TransferConfirmationTokenRef>>;
28
+ export default TransferConfirmation;
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ "use client";
4
+ var __assign = (this && this.__assign) || function () {
5
+ __assign = Object.assign || function(t) {
6
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
7
+ s = arguments[i];
8
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
9
+ t[p] = s[p];
10
+ }
11
+ return t;
12
+ };
13
+ return __assign.apply(this, arguments);
14
+ };
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
49
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
50
+ return new (P || (P = Promise))(function (resolve, reject) {
51
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
52
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
53
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
54
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
55
+ });
56
+ };
57
+ var __generator = (this && this.__generator) || function (thisArg, body) {
58
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
59
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
60
+ function verb(n) { return function (v) { return step([n, v]); }; }
61
+ function step(op) {
62
+ if (f) throw new TypeError("Generator is already executing.");
63
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
64
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
65
+ if (y = 0, t) op = [op[0] & 2, t.value];
66
+ switch (op[0]) {
67
+ case 0: case 1: t = op; break;
68
+ case 4: _.label++; return { value: op[1], done: false };
69
+ case 5: _.label++; y = op[1]; op = [0]; continue;
70
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
71
+ default:
72
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
73
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
74
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
75
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
76
+ if (t[2]) _.ops.pop();
77
+ _.trys.pop(); continue;
78
+ }
79
+ op = body.call(thisArg, _);
80
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
81
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
82
+ }
83
+ };
84
+ var __importDefault = (this && this.__importDefault) || function (mod) {
85
+ return (mod && mod.__esModule) ? mod : { "default": mod };
86
+ };
87
+ Object.defineProperty(exports, "__esModule", { value: true });
88
+ exports.TransferConfirmation = exports.TransferConfirmationError = void 0;
89
+ var jsx_runtime_1 = require("react/jsx-runtime");
90
+ var Button_1 = __importStar(require("../Button"));
91
+ var DrawerComponent_1 = require("../DrawerComponent");
92
+ var ConfirmLayout_1 = __importDefault(require("../ConfirmLayout"));
93
+ var Formatter_1 = __importDefault(require("../Formatter"));
94
+ var react_1 = require("react");
95
+ var Text_1 = __importDefault(require("../Text"));
96
+ var RequireConnect_1 = __importDefault(require("../RequireConnect"));
97
+ var type_1 = require("../../../services/axios/get-activities-service/type");
98
+ var validate_wallet_address_service_1 = __importDefault(require("../../../services/axios/validate-wallet-address-service"));
99
+ var type_2 = require("../../../services/axios/validate-wallet-address-service/type");
100
+ var ConfirmByPasscode_1 = __importDefault(require("../ConfirmByPasscode"));
101
+ var instructions_service_1 = __importDefault(require("../../../services/axios/instructions-service"));
102
+ var providers_1 = require("../../../providers");
103
+ var useWallet_1 = __importDefault(require("../../../hooks/useWallet"));
104
+ var TransferConfirmationError;
105
+ (function (TransferConfirmationError) {
106
+ TransferConfirmationError["TOKEN_NOT_FOUND"] = "\u24D8 Token not found";
107
+ TransferConfirmationError["NOT_ENOUGH_BALANCE"] = "\u24D8 Not enough balance";
108
+ TransferConfirmationError["MAX_AMOUNT"] = "\u24D8 Max amount";
109
+ TransferConfirmationError["MIN_AMOUNT"] = "\u24D8 Min amount";
110
+ TransferConfirmationError["FAILED"] = "\u24D8 Failed";
111
+ })(TransferConfirmationError || (exports.TransferConfirmationError = TransferConfirmationError = {}));
112
+ exports.TransferConfirmation = (0, react_1.forwardRef)(function (props, ref) {
113
+ var _a, _b;
114
+ var theme = (0, providers_1.useTheme)();
115
+ var transferData = props.transferData, transferContent = props.transferContent;
116
+ var _c = (0, useWallet_1.default)(), isInitPasscode = _c.isInitPasscode, sendInternalTokens = _c.sendInternalTokens, updateSendInternalToken = _c.updateSendInternalToken;
117
+ var confirmLayoutDrawerRef = (0, react_1.useRef)(null);
118
+ var _d = (0, react_1.useState)(undefined), error = _d[0], setError = _d[1];
119
+ var _e = (0, react_1.useState)(undefined), errorAmount = _e[0], setErrorAmount = _e[1];
120
+ var _f = (0, react_1.useState)(Button_1.BUTTON_STATUS.ENABLED), buttonStatus = _f[0], setButtonStatus = _f[1];
121
+ var _g = (0, react_1.useState)(false), isValidatingAddress = _g[0], setIsValidatingAddress = _g[1];
122
+ var _h = (0, react_1.useState)(undefined), errorAddress = _h[0], setErrorAddress = _h[1];
123
+ var toAddress = transferData.to_address;
124
+ var amount = transferData.amount;
125
+ var currencySlug = transferData.currency_slug;
126
+ var isEnoughBalance = transferData.isEnoughBalance;
127
+ var token = (0, react_1.useMemo)(function () {
128
+ return sendInternalTokens === null || sendInternalTokens === void 0 ? void 0 : sendInternalTokens.find(function (token) { return token.slug === currencySlug; });
129
+ }, [currencySlug, sendInternalTokens]);
130
+ var validateAmount = (0, react_1.useCallback)(function () {
131
+ if (!token) {
132
+ setError(TransferConfirmationError.TOKEN_NOT_FOUND);
133
+ return false;
134
+ }
135
+ if (amount > token.max_value) {
136
+ setError(TransferConfirmationError.MAX_AMOUNT);
137
+ setErrorAmount(token.max_value);
138
+ return false;
139
+ }
140
+ if (amount < token.min_value) {
141
+ setError(TransferConfirmationError.MIN_AMOUNT);
142
+ setErrorAmount(token.min_value);
143
+ return false;
144
+ }
145
+ if (!isEnoughBalance) {
146
+ setError(TransferConfirmationError.NOT_ENOUGH_BALANCE);
147
+ setErrorAmount(token.balance);
148
+ return false;
149
+ }
150
+ setError(undefined);
151
+ setErrorAmount(undefined);
152
+ return true;
153
+ }, [token, amount]);
154
+ var validateAddress = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
155
+ var message;
156
+ return __generator(this, function (_a) {
157
+ switch (_a.label) {
158
+ case 0:
159
+ setIsValidatingAddress(true);
160
+ return [4 /*yield*/, (0, validate_wallet_address_service_1.default)({
161
+ address: toAddress,
162
+ })];
163
+ case 1:
164
+ message = (_a.sent()).message;
165
+ setIsValidatingAddress(false);
166
+ if (message === type_2.ValidateWalletAddressResultMessage.INTERNAL_WALLET ||
167
+ message === type_2.ValidateWalletAddressResultMessage.EXTERNAL_WALLET_BUT_ALSO_INTERNAL_WALLET) {
168
+ setErrorAddress(undefined);
169
+ return [2 /*return*/, true];
170
+ }
171
+ setErrorAddress("ⓘ This address is not a valid internal wallet address");
172
+ return [2 /*return*/, false];
173
+ }
174
+ });
175
+ }); }, [toAddress]);
176
+ var validateAll = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
177
+ var isAmountValid;
178
+ return __generator(this, function (_a) {
179
+ switch (_a.label) {
180
+ case 0:
181
+ isAmountValid = validateAmount();
182
+ if (!isAmountValid)
183
+ return [2 /*return*/, false];
184
+ return [4 /*yield*/, validateAddress()];
185
+ case 1:
186
+ _a.sent();
187
+ return [2 /*return*/];
188
+ }
189
+ });
190
+ }); }, [validateAmount, validateAddress]);
191
+ var handleSendInternalToken = function (passcode) { return __awaiter(void 0, void 0, void 0, function () {
192
+ var response, err_1;
193
+ var _a, _b;
194
+ return __generator(this, function (_c) {
195
+ switch (_c.label) {
196
+ case 0:
197
+ _c.trys.push([0, 2, , 3]);
198
+ setButtonStatus(Button_1.BUTTON_STATUS.LOADING);
199
+ return [4 /*yield*/, (0, instructions_service_1.default)(__assign(__assign({}, transferData), { passcode: passcode }))];
200
+ case 1:
201
+ response = _c.sent();
202
+ if (response.success) {
203
+ (_a = confirmLayoutDrawerRef.current) === null || _a === void 0 ? void 0 : _a.close();
204
+ setButtonStatus(Button_1.BUTTON_STATUS.ENABLED);
205
+ (_b = props.onTransferSuccess) === null || _b === void 0 ? void 0 : _b.call(props, response);
206
+ updateSendInternalToken();
207
+ }
208
+ else {
209
+ throw new Error("ⓘ Send internal failed");
210
+ }
211
+ return [3 /*break*/, 3];
212
+ case 2:
213
+ err_1 = _c.sent();
214
+ console.error(err_1);
215
+ setButtonStatus(Button_1.BUTTON_STATUS.ERROR);
216
+ setTimeout(function () {
217
+ setButtonStatus(Button_1.BUTTON_STATUS.ENABLED);
218
+ }, 1200);
219
+ return [3 /*break*/, 3];
220
+ case 3: return [2 /*return*/];
221
+ }
222
+ });
223
+ }); };
224
+ var handleOpen = function () {
225
+ var _a;
226
+ if (!isInitPasscode)
227
+ throw new Error("Please connect your wallet");
228
+ (_a = confirmLayoutDrawerRef.current) === null || _a === void 0 ? void 0 : _a.open();
229
+ validateAll();
230
+ };
231
+ var handleClose = function () {
232
+ var _a;
233
+ if (!isInitPasscode)
234
+ throw new Error("Please connect your wallet");
235
+ (_a = confirmLayoutDrawerRef.current) === null || _a === void 0 ? void 0 : _a.close();
236
+ };
237
+ (0, react_1.useImperativeHandle)(ref, function () { return ({
238
+ open: handleOpen,
239
+ close: handleClose,
240
+ }); });
241
+ (0, react_1.useEffect)(function () {
242
+ if (!sendInternalTokens && isInitPasscode) {
243
+ updateSendInternalToken();
244
+ }
245
+ }, [sendInternalTokens, updateSendInternalToken, isInitPasscode]);
246
+ return ((0, jsx_runtime_1.jsx)(RequireConnect_1.default, { children: (0, jsx_runtime_1.jsxs)(ConfirmLayout_1.default, { ref: confirmLayoutDrawerRef, action: props.titleHeader, trigger: props.children, onOpen: validateAll, confirmAction: (0, jsx_runtime_1.jsx)(ConfirmByPasscode_1.default, { action: type_1.TransactionSlug.TRANSFER_INTERNAL, onConfirmSuccess: handleSendInternalToken, triggerStatus: !!error || isValidatingAddress || errorAddress || !isEnoughBalance
247
+ ? DrawerComponent_1.DRAWER_TRIGGER_STATUS.DISABLED
248
+ : DrawerComponent_1.DRAWER_TRIGGER_STATUS.ENABLED, children: (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { status: !!error || isValidatingAddress || errorAddress || !isEnoughBalance
249
+ ? Button_1.BUTTON_STATUS.DISABLED
250
+ : buttonStatus, sx: { width: "100%" }, children: "Confirm" }) }), children: [transferContent, !!error && ((0, jsx_runtime_1.jsxs)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.validationError), { mt: (_a = theme.mixins.gaps) === null || _a === void 0 ? void 0 : _a.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) })] })), !!errorAddress && ((0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.validationError), { mt: (_b = theme.mixins.gaps) === null || _b === void 0 ? void 0 : _b.g6 }), children: errorAddress }))] }) }));
251
+ });
252
+ exports.TransferConfirmation.displayName = "TransferConfirmation";
253
+ exports.default = exports.TransferConfirmation;
@@ -0,0 +1,16 @@
1
+ import { FeesDataType } from "../../../services/axios/get-est-fee-service/type";
2
+ import { UserInfoDto } from "../../../types/expose-type";
3
+ export interface LockData {
4
+ amount: number;
5
+ tokenSlug: string;
6
+ }
7
+ export interface TransferInfoDto {
8
+ network?: string;
9
+ type?: string;
10
+ message?: string;
11
+ datetime?: string;
12
+ link?: string;
13
+ user?: UserInfoDto;
14
+ receiver?: UserInfoDto;
15
+ fee?: FeesDataType;
16
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -433,7 +433,7 @@ exports.ReceiveFunction = (0, react_1.forwardRef)(function (_a, ref) {
433
433
  }, trigger: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { gap: theme.mixins.gaps.g12, height: "fit-content", width: "100%" }), children: [functionsList.includes(ReceiveMethods.RECEIVE_INTERNAL) && ((0, jsx_runtime_1.jsx)(ListItemCustom_1.default, { title: "Top up via internal transfer", description: "Receive crypto from other Ting users", icon: (0, jsx_runtime_1.jsx)(material_1.SvgIcon, { sx: { width: 24, height: 24 }, children: SvgPath_1.IC_RECEIVE_INTERNAL }), onClick: function () { return handleSelectMethod(ReceiveMethods.RECEIVE_INTERNAL); }, recommended: true })), functionsList.includes(ReceiveMethods.RECEIVE_EXTERNAL) && ((0, jsx_runtime_1.jsx)(ListItemCustom_1.default, { title: "Top up via blockchain", description: "Deposit using a Web3 or an Exchange wallet", icon: (0, jsx_runtime_1.jsx)(material_1.SvgIcon, { sx: { width: 24, height: 24 }, children: SvgPath_1.IC_RECEIVE_EXTERNAL }), onClick: function () { return handleSelectMethod(ReceiveMethods.RECEIVE_EXTERNAL); }, recommended: true })), functionsList.includes(ReceiveMethods.RECEIVE_FIAT) && ((0, jsx_runtime_1.jsx)(FiatDeposit_1.default, { children: (0, jsx_runtime_1.jsx)(ListItemCustom_1.default, { title: "Fiat-Gateway", description: "Experimental deposit via bank transfer", icon: (0, jsx_runtime_1.jsx)(material_1.SvgIcon, { sx: { width: 24, height: 24 }, children: SvgPath_1.IC_RECEIVE_EXTERNAL }), recommended: false }) }))] }), children: (0, jsx_runtime_1.jsx)(ChildPageLayout_1.default, { sx: {
434
434
  position: "relative",
435
435
  sx: "100dvh",
436
- }, header: (0, jsx_runtime_1.jsx)(PageHeader_1.default, { title: RECEIVE_STEP_NAME[Math.max(currentStep, ReceiveStep.SELECT_TOKEN)], overrideBack: handleBack, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g8, marginLeft: "auto" }), children: [(0, jsx_runtime_1.jsx)(HelpButton_1.default, {}), false && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Divider, { orientation: "vertical", sx: {
436
+ }, header: (0, jsx_runtime_1.jsx)(PageHeader_1.default, { title: RECEIVE_STEP_NAME[Math.max(currentStep, ReceiveStep.SELECT_TOKEN)], overrideBack: handleBack, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g8, marginLeft: "auto" }), children: [(0, jsx_runtime_1.jsx)(HelpButton_1.default, {}), !!handleGotoHistory && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Divider, { orientation: "vertical", sx: {
437
437
  height: "1rem",
438
438
  width: "1px",
439
439
  backgroundColor: theme.palette.border.accent3,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tek-wallet",
3
- "version": "0.0.749",
3
+ "version": "0.0.752",
4
4
  "description": "A custom React provider with TypeScript support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",