tek-wallet 0.0.355 → 0.0.356
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/dist/components/ui/BackArrow/index.d.ts +2 -2
- package/dist/components/ui/Button/index.js +2 -2
- package/dist/components/ui/Icon/index.d.ts +3 -2
- package/dist/components/ui/Icon/index.js +2 -2
- package/dist/components/ui/Image/index.d.ts +2 -2
- package/dist/components/ui/WithdrawFunction/index.d.ts +4 -3
- package/dist/components/ui/WithdrawFunction/index.js +31 -11
- package/dist/providers/RealtimeProvider/index.d.ts +13 -0
- package/dist/providers/RealtimeProvider/index.js +107 -0
- package/dist/providers/RealtimeProvider/type.d.ts +11 -0
- package/dist/providers/RealtimeProvider/type.js +2 -0
- package/dist/providers/TekWalletProvider/index.js +2 -1
- package/dist/services/ably/ably.service.d.ts +13 -0
- package/dist/services/ably/ably.service.js +153 -0
- package/dist/services/ably/type.d.ts +3 -0
- package/dist/services/ably/type.js +7 -0
- package/dist/services/axios/send-external-service/index.d.ts +3 -0
- package/dist/services/axios/send-external-service/index.js +58 -0
- package/dist/services/axios/send-external-service/type.d.ts +13 -0
- package/dist/services/axios/send-external-service/type.js +2 -0
- package/dist/services/axios/send-internal-service/index.d.ts +3 -0
- package/dist/services/axios/send-internal-service/index.js +58 -0
- package/dist/services/axios/send-internal-service/type.d.ts +11 -0
- package/dist/services/axios/send-internal-service/type.js +2 -0
- package/package.json +3 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
interface BackArrowProps extends
|
|
1
|
+
import { IconProps } from "../Icon";
|
|
2
|
+
interface BackArrowProps extends IconProps {
|
|
3
3
|
}
|
|
4
4
|
declare const BackArrow: (props: BackArrowProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
5
|
export default BackArrow;
|
|
@@ -38,9 +38,9 @@ var Button = function (props) {
|
|
|
38
38
|
};
|
|
39
39
|
Button.displayName = "Button";
|
|
40
40
|
Button.Primary = function (props) {
|
|
41
|
-
var sx = props.sx, rest = __rest(props, ["sx"]);
|
|
41
|
+
var sx = props.sx, children = props.children, rest = __rest(props, ["sx", "children"]);
|
|
42
42
|
var theme = (0, material_1.useTheme)();
|
|
43
|
-
return ((0, jsx_runtime_1.jsx)(Button, __assign({}, rest, { variant: "contained", color: "primary", sx: __assign({ borderRadius: theme.mixins.theBorderRadius.full }, sx) })));
|
|
43
|
+
return ((0, jsx_runtime_1.jsx)(Button, __assign({}, rest, { variant: "contained", color: "primary", sx: __assign({ borderRadius: theme.mixins.theBorderRadius.full }, sx), children: children })));
|
|
44
44
|
};
|
|
45
45
|
Button.Primary.displayName = "Button.Primary";
|
|
46
46
|
Button.Secondary = function (props) {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export interface IconProps extends
|
|
1
|
+
import { SxProps } from "@mui/material";
|
|
2
|
+
export interface IconProps extends React.ImgHTMLAttributes<HTMLImageElement> {
|
|
3
3
|
src?: string;
|
|
4
4
|
alt?: string;
|
|
5
5
|
width?: number;
|
|
6
6
|
height?: number;
|
|
7
|
+
sx?: SxProps;
|
|
7
8
|
}
|
|
8
9
|
declare const Icon: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
10
|
export default Icon;
|
|
@@ -26,11 +26,11 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
26
26
|
var material_1 = require("@mui/material");
|
|
27
27
|
var Icon = function (props) {
|
|
28
28
|
var _a, _b;
|
|
29
|
-
var src = props.src, alt = props.alt, onClick = props.onClick, width = props.width, height = props.height, rest = __rest(props, ["src", "alt", "onClick", "width", "height"]);
|
|
29
|
+
var src = props.src, alt = props.alt, onClick = props.onClick, width = props.width, height = props.height, sx = props.sx, rest = __rest(props, ["src", "alt", "onClick", "width", "height", "sx"]);
|
|
30
30
|
return ((0, jsx_runtime_1.jsx)(material_1.Box, __assign({ component: "img", src: src, alt: alt, onClick: onClick }, rest, { sx: __assign({ display: "block", width: ((_a = width !== null && width !== void 0 ? width : height) !== null && _a !== void 0 ? _a : false)
|
|
31
31
|
? "".concat((width || height || 0) / 16, "rem")
|
|
32
32
|
: "auto", height: ((_b = height !== null && height !== void 0 ? height : width) !== null && _b !== void 0 ? _b : false)
|
|
33
33
|
? "".concat((height || width || 0) / 16, "rem")
|
|
34
|
-
: "auto" },
|
|
34
|
+
: "auto" }, sx) })));
|
|
35
35
|
};
|
|
36
36
|
exports.default = Icon;
|
|
@@ -10,14 +10,15 @@ type WithdrawFunctionRef = {
|
|
|
10
10
|
};
|
|
11
11
|
export declare enum SendMethods {
|
|
12
12
|
SCAN_QR_CODE = "scan qr code",
|
|
13
|
-
TRANSFER_INTERNAL = "
|
|
14
|
-
TRANSFER_EXTERNAL = "
|
|
13
|
+
TRANSFER_INTERNAL = "send internal",
|
|
14
|
+
TRANSFER_EXTERNAL = "send external"
|
|
15
15
|
}
|
|
16
16
|
export declare enum WithdrawStep {
|
|
17
17
|
SELECT_METHOD = 0,
|
|
18
18
|
SELECT_TOKEN = 1,
|
|
19
19
|
SELECT_NETWORK = 2,
|
|
20
|
-
|
|
20
|
+
FORM = 3,
|
|
21
|
+
CONFIRM = 4
|
|
21
22
|
}
|
|
22
23
|
export declare enum AmountError {
|
|
23
24
|
INSUFFICIENT_BALANCE = "Your balance is insufficient",
|
|
@@ -116,20 +116,22 @@ var Formatter_1 = __importDefault(require("../Formatter"));
|
|
|
116
116
|
var SendMethods;
|
|
117
117
|
(function (SendMethods) {
|
|
118
118
|
SendMethods["SCAN_QR_CODE"] = "scan qr code";
|
|
119
|
-
SendMethods["TRANSFER_INTERNAL"] = "
|
|
120
|
-
SendMethods["TRANSFER_EXTERNAL"] = "
|
|
119
|
+
SendMethods["TRANSFER_INTERNAL"] = "send internal";
|
|
120
|
+
SendMethods["TRANSFER_EXTERNAL"] = "send external";
|
|
121
121
|
})(SendMethods || (exports.SendMethods = SendMethods = {}));
|
|
122
122
|
var WithdrawStep;
|
|
123
123
|
(function (WithdrawStep) {
|
|
124
124
|
WithdrawStep[WithdrawStep["SELECT_METHOD"] = 0] = "SELECT_METHOD";
|
|
125
125
|
WithdrawStep[WithdrawStep["SELECT_TOKEN"] = 1] = "SELECT_TOKEN";
|
|
126
126
|
WithdrawStep[WithdrawStep["SELECT_NETWORK"] = 2] = "SELECT_NETWORK";
|
|
127
|
-
WithdrawStep[WithdrawStep["
|
|
127
|
+
WithdrawStep[WithdrawStep["FORM"] = 3] = "FORM";
|
|
128
|
+
WithdrawStep[WithdrawStep["CONFIRM"] = 4] = "CONFIRM";
|
|
128
129
|
})(WithdrawStep || (exports.WithdrawStep = WithdrawStep = {}));
|
|
129
130
|
var WITHDRAW_STEP_NAME = (_a = {},
|
|
130
131
|
_a[WithdrawStep.SELECT_METHOD] = "Select method",
|
|
131
132
|
_a[WithdrawStep.SELECT_TOKEN] = "Select token",
|
|
132
133
|
_a[WithdrawStep.SELECT_NETWORK] = "Select network",
|
|
134
|
+
_a[WithdrawStep.FORM] = "Form",
|
|
133
135
|
_a[WithdrawStep.CONFIRM] = "Confirm",
|
|
134
136
|
_a);
|
|
135
137
|
var AmountError;
|
|
@@ -284,7 +286,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
284
286
|
}
|
|
285
287
|
else {
|
|
286
288
|
setSelectedToken(tokenSet);
|
|
287
|
-
gotoStep(WithdrawStep.
|
|
289
|
+
gotoStep(WithdrawStep.FORM);
|
|
288
290
|
}
|
|
289
291
|
};
|
|
290
292
|
var handleSelectContinueTransferExternal = function (dataPromptly) {
|
|
@@ -304,7 +306,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
304
306
|
else {
|
|
305
307
|
setSelectedToken(tokenSet);
|
|
306
308
|
setSelectedNetwork(tokenSet === null || tokenSet === void 0 ? void 0 : tokenSet.network_data);
|
|
307
|
-
gotoStep(WithdrawStep.
|
|
309
|
+
gotoStep(WithdrawStep.FORM);
|
|
308
310
|
}
|
|
309
311
|
setAmount(getAmountAfterDecimal((data === null || data === void 0 ? void 0 : data.amount) || 0, (tokenSet === null || tokenSet === void 0 ? void 0 : tokenSet.decimal) || 0));
|
|
310
312
|
setMemo(data === null || data === void 0 ? void 0 : data.text);
|
|
@@ -339,7 +341,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
339
341
|
return amountNumber || "";
|
|
340
342
|
};
|
|
341
343
|
var handleBack = function () {
|
|
342
|
-
if (currentStep === WithdrawStep.
|
|
344
|
+
if (currentStep === WithdrawStep.FORM &&
|
|
343
345
|
selectedMethod === SendMethods.TRANSFER_INTERNAL) {
|
|
344
346
|
gotoStep(WithdrawStep.SELECT_TOKEN);
|
|
345
347
|
return;
|
|
@@ -351,7 +353,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
351
353
|
setSelectedToken(token);
|
|
352
354
|
if (!!token) {
|
|
353
355
|
if (selectedMethod === SendMethods.TRANSFER_INTERNAL) {
|
|
354
|
-
gotoStep(WithdrawStep.
|
|
356
|
+
gotoStep(WithdrawStep.FORM);
|
|
355
357
|
}
|
|
356
358
|
else {
|
|
357
359
|
gotoStep(WithdrawStep.SELECT_NETWORK);
|
|
@@ -361,7 +363,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
361
363
|
var handleSelectNetwork = function (network) {
|
|
362
364
|
console.warn("network", selectedNetwork);
|
|
363
365
|
setSelectedNetwork(network);
|
|
364
|
-
gotoStep(WithdrawStep.
|
|
366
|
+
gotoStep(WithdrawStep.FORM);
|
|
365
367
|
};
|
|
366
368
|
var handleValidateWalletAddress = function (address, network) { return __awaiter(void 0, void 0, void 0, function () {
|
|
367
369
|
var validateWalletAddress;
|
|
@@ -461,6 +463,24 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
461
463
|
return [2 /*return*/];
|
|
462
464
|
});
|
|
463
465
|
}); };
|
|
466
|
+
var handleWithdrawInternal = function () {
|
|
467
|
+
console.warn("withdraw internal");
|
|
468
|
+
};
|
|
469
|
+
var handleWithdrawExternal = function () {
|
|
470
|
+
console.warn("withdraw external");
|
|
471
|
+
};
|
|
472
|
+
var handleWithdraw = function () {
|
|
473
|
+
switch (selectedMethod) {
|
|
474
|
+
case SendMethods.TRANSFER_INTERNAL:
|
|
475
|
+
handleWithdrawInternal();
|
|
476
|
+
break;
|
|
477
|
+
case SendMethods.TRANSFER_EXTERNAL:
|
|
478
|
+
handleWithdrawExternal();
|
|
479
|
+
break;
|
|
480
|
+
default:
|
|
481
|
+
break;
|
|
482
|
+
}
|
|
483
|
+
};
|
|
464
484
|
(0, react_1.useEffect)(function () {
|
|
465
485
|
if (isAuthenticated && !withdrawTokens) {
|
|
466
486
|
console.warn("🚀 ~ updateWithdrawToken ~ isAuthenticated:", isAuthenticated);
|
|
@@ -476,7 +496,7 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
476
496
|
alignItems: "center",
|
|
477
497
|
minHeight: "2rem",
|
|
478
498
|
mb: theme.mixins.customMargin.m20,
|
|
479
|
-
}, overrideBack: handleBack, hideBack: currentStep === WithdrawStep.SELECT_METHOD, center: currentStep === WithdrawStep.
|
|
499
|
+
}, overrideBack: handleBack, hideBack: currentStep === WithdrawStep.SELECT_METHOD, center: currentStep === WithdrawStep.FORM
|
|
480
500
|
? "Send ".concat(selectedToken === null || selectedToken === void 0 ? void 0 : selectedToken.name, " ").concat(selectedMethod === SendMethods.TRANSFER_EXTERNAL ? "externally" : "internally")
|
|
481
501
|
: WITHDRAW_STEP_NAME[currentStep], children: (0, jsx_runtime_1.jsx)(CloseModal_1.default, { sx: { marginLeft: "auto" }, onClick: close }) }), children: [(0, jsx_runtime_1.jsxs)(SwiperControlled_1.default, { ref: swiperRef, swiperProps: {
|
|
482
502
|
autoHeight: true,
|
|
@@ -517,13 +537,13 @@ var WithdrawFunction = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
517
537
|
placeholder: "Enter memo",
|
|
518
538
|
value: memo,
|
|
519
539
|
onChange: handleChangeMemo,
|
|
520
|
-
} })] })), (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { sx: { width: "100%" }, status: !!amountError ||
|
|
540
|
+
} })] })), (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { sx: { width: "100%" }, onClick: handleWithdraw, status: !!amountError ||
|
|
521
541
|
!recipientAddress ||
|
|
522
542
|
!amount ||
|
|
523
543
|
!selectedToken ||
|
|
524
544
|
!!recipientAddressError
|
|
525
545
|
? Button_1.BUTTON_STATUS.DISABLED
|
|
526
|
-
: Button_1.BUTTON_STATUS.ENABLED, children: "
|
|
546
|
+
: Button_1.BUTTON_STATUS.ENABLED, children: "Continue" })] }) }, WithdrawStep.FORM)] }, withdrawTokens === null || withdrawTokens === void 0 ? void 0 : withdrawTokens.length), (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: {
|
|
527
547
|
textAlign: "center",
|
|
528
548
|
display: "inline-block",
|
|
529
549
|
width: "100%",
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { RealtimeProviderDataType } from "./type";
|
|
3
|
+
import { VariantType } from "notistack";
|
|
4
|
+
export declare const initialRealtime: RealtimeProviderDataType;
|
|
5
|
+
export interface Notification {
|
|
6
|
+
message: string;
|
|
7
|
+
variant: VariantType;
|
|
8
|
+
}
|
|
9
|
+
export declare const RealtimeContext: React.Context<RealtimeProviderDataType>;
|
|
10
|
+
declare function RealtimeProvider({ children }: {
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default RealtimeProvider;
|
|
@@ -0,0 +1,107 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
48
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
49
|
+
if (ar || !(i in from)) {
|
|
50
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
51
|
+
ar[i] = from[i];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
55
|
+
};
|
|
56
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
57
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
58
|
+
};
|
|
59
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
+
exports.RealtimeContext = exports.initialRealtime = void 0;
|
|
61
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
62
|
+
var react_1 = __importStar(require("react"));
|
|
63
|
+
var useWalletData_1 = __importDefault(require("../../hooks/useWalletData"));
|
|
64
|
+
var ably_service_1 = require("../../services/ably/ably.service");
|
|
65
|
+
var material_1 = require("@mui/material");
|
|
66
|
+
var notistack_1 = require("notistack");
|
|
67
|
+
var Slide_1 = __importDefault(require("@mui/material/Slide"));
|
|
68
|
+
exports.initialRealtime = {
|
|
69
|
+
transaction: undefined,
|
|
70
|
+
isConnected: false,
|
|
71
|
+
pushNotification: function () { },
|
|
72
|
+
};
|
|
73
|
+
function SlideTransition(props) {
|
|
74
|
+
return (0, jsx_runtime_1.jsx)(Slide_1.default, __assign({}, props, { direction: "up" }));
|
|
75
|
+
}
|
|
76
|
+
exports.RealtimeContext = react_1.default.createContext(exports.initialRealtime);
|
|
77
|
+
function RealtimeProvider(_a) {
|
|
78
|
+
var children = _a.children;
|
|
79
|
+
var masterWallet = (0, useWalletData_1.default)().masterWallet;
|
|
80
|
+
var _b = (0, react_1.useState)(exports.initialRealtime.isConnected), isConnected = _b[0], setIsConnected = _b[1];
|
|
81
|
+
var _c = (0, react_1.useState)(exports.initialRealtime.transaction), transaction = _c[0], setTransaction = _c[1];
|
|
82
|
+
var _d = (0, react_1.useState)([]), notifications = _d[0], setNotifications = _d[1];
|
|
83
|
+
var pushNotification = function (notification) {
|
|
84
|
+
setNotifications(function (prev) { return __spreadArray(__spreadArray([], prev, true), [notification], false); });
|
|
85
|
+
};
|
|
86
|
+
(0, react_1.useEffect)(function () {
|
|
87
|
+
if (!masterWallet)
|
|
88
|
+
return;
|
|
89
|
+
var ablyService = new ably_service_1.AblyService();
|
|
90
|
+
console.warn("Connecting to realtime");
|
|
91
|
+
ablyService.listenMessage(masterWallet, function (message) {
|
|
92
|
+
// eslint-disable-next-line no-console
|
|
93
|
+
console.log("🚀 ~ ablyService.listenMessage ~ message:", message);
|
|
94
|
+
setIsConnected(true);
|
|
95
|
+
setTransaction(message);
|
|
96
|
+
});
|
|
97
|
+
}, [masterWallet]);
|
|
98
|
+
return ((0, jsx_runtime_1.jsxs)(exports.RealtimeContext.Provider, { value: {
|
|
99
|
+
isConnected: isConnected,
|
|
100
|
+
transaction: transaction,
|
|
101
|
+
pushNotification: pushNotification,
|
|
102
|
+
}, children: [children, (0, jsx_runtime_1.jsx)(notistack_1.SnackbarProvider, { maxSnack: 2, children: notifications.map(function (notification) {
|
|
103
|
+
var _a;
|
|
104
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Snackbar, { open: true, onClose: function () { }, slots: { transition: SlideTransition }, message: notification.message, autoHideDuration: (_a = notification.duration) !== null && _a !== void 0 ? _a : 2000 }, notification.id));
|
|
105
|
+
}) })] }));
|
|
106
|
+
}
|
|
107
|
+
exports.default = RealtimeProvider;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface RealtimeProviderDataType {
|
|
2
|
+
transaction: any;
|
|
3
|
+
isConnected: boolean;
|
|
4
|
+
pushNotification: (notification: NotificationType) => void;
|
|
5
|
+
}
|
|
6
|
+
export interface NotificationType {
|
|
7
|
+
message: string;
|
|
8
|
+
type: "success" | "error" | "warning" | "info";
|
|
9
|
+
duration?: number;
|
|
10
|
+
id: string;
|
|
11
|
+
}
|
|
@@ -10,8 +10,9 @@ var mui_1 = __importDefault(require("../../theme/mui"));
|
|
|
10
10
|
var DepositProvider_1 = __importDefault(require("../DepositProvider"));
|
|
11
11
|
var LockTokenProvider_1 = __importDefault(require("../LockTokenProvider"));
|
|
12
12
|
var WithdrawProvider_1 = __importDefault(require("../WithdrawProvider"));
|
|
13
|
+
var RealtimeProvider_1 = __importDefault(require("../RealtimeProvider"));
|
|
13
14
|
function TekWalletProvider(_a) {
|
|
14
15
|
var children = _a.children;
|
|
15
|
-
return ((0, jsx_runtime_1.jsx)(WalletDataProvider_1.default, { children: (0, jsx_runtime_1.jsx)(DepositProvider_1.default, { children: (0, jsx_runtime_1.jsx)(LockTokenProvider_1.default, { children: (0, jsx_runtime_1.jsx)(WithdrawProvider_1.default, { children: (0, jsx_runtime_1.jsx)(mui_1.default, { children: children }) }) }) }) }));
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)(WalletDataProvider_1.default, { children: (0, jsx_runtime_1.jsx)(RealtimeProvider_1.default, { children: (0, jsx_runtime_1.jsx)(DepositProvider_1.default, { children: (0, jsx_runtime_1.jsx)(LockTokenProvider_1.default, { children: (0, jsx_runtime_1.jsx)(WithdrawProvider_1.default, { children: (0, jsx_runtime_1.jsx)(mui_1.default, { children: children }) }) }) }) }) }));
|
|
16
17
|
}
|
|
17
18
|
exports.default = TekWalletProvider;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as Ably from "ably";
|
|
2
|
+
import { Message } from "ably";
|
|
3
|
+
export declare class AblyService {
|
|
4
|
+
private readonly ably;
|
|
5
|
+
private readonly channels;
|
|
6
|
+
constructor();
|
|
7
|
+
getChannels(): Map<string, Ably.RealtimeChannel>;
|
|
8
|
+
getClient(): Ably.Realtime;
|
|
9
|
+
listenMessage(walletAddress: string, onMessage: (message: Message) => void): Promise<void>;
|
|
10
|
+
publish(channel: string, event: string, data: any): Promise<void>;
|
|
11
|
+
subscribe(channel: string, event: string, callback: (message: any) => void): Promise<void>;
|
|
12
|
+
cleanup(walletAddress: string): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
45
|
+
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);
|
|
46
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
47
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
48
|
+
function step(op) {
|
|
49
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
50
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
51
|
+
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;
|
|
52
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
53
|
+
switch (op[0]) {
|
|
54
|
+
case 0: case 1: t = op; break;
|
|
55
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
56
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
57
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
58
|
+
default:
|
|
59
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
60
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
61
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
62
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
63
|
+
if (t[2]) _.ops.pop();
|
|
64
|
+
_.trys.pop(); continue;
|
|
65
|
+
}
|
|
66
|
+
op = body.call(thisArg, _);
|
|
67
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
68
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
72
|
+
exports.AblyService = void 0;
|
|
73
|
+
var Ably = __importStar(require("ably"));
|
|
74
|
+
var type_1 = require("./type");
|
|
75
|
+
var AblyService = /** @class */ (function () {
|
|
76
|
+
function AblyService() {
|
|
77
|
+
this.channels = new Map();
|
|
78
|
+
this.ably = new Ably.Realtime({
|
|
79
|
+
key: process.env.NEXT_PUBLIC_TEK_WALLET_ABLY_API_KEY,
|
|
80
|
+
clientId: "".concat(process.env.NEXT_PUBLIC_TEK_WALLET_APP_SLUG, "-FE"),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
AblyService.prototype.getChannels = function () {
|
|
84
|
+
return this.channels;
|
|
85
|
+
};
|
|
86
|
+
AblyService.prototype.getClient = function () {
|
|
87
|
+
return this.ably;
|
|
88
|
+
};
|
|
89
|
+
AblyService.prototype.listenMessage = function (walletAddress, onMessage) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
91
|
+
var channel, error_1;
|
|
92
|
+
return __generator(this, function (_a) {
|
|
93
|
+
switch (_a.label) {
|
|
94
|
+
case 0:
|
|
95
|
+
_a.trys.push([0, 2, , 3]);
|
|
96
|
+
channel = this.ably.channels.get(walletAddress);
|
|
97
|
+
return [4 /*yield*/, channel.subscribe(type_1.ABLY_CHANNELS_NAME.TRANSACTION, function (message) {
|
|
98
|
+
onMessage(message);
|
|
99
|
+
})];
|
|
100
|
+
case 1:
|
|
101
|
+
_a.sent();
|
|
102
|
+
return [3 /*break*/, 3];
|
|
103
|
+
case 2:
|
|
104
|
+
error_1 = _a.sent();
|
|
105
|
+
console.error("Test failed for wallet ".concat(walletAddress, ":"), error_1);
|
|
106
|
+
return [3 /*break*/, 3];
|
|
107
|
+
case 3: return [2 /*return*/];
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
AblyService.prototype.publish = function (channel, event, data) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
114
|
+
var message;
|
|
115
|
+
return __generator(this, function (_a) {
|
|
116
|
+
message = {
|
|
117
|
+
name: event,
|
|
118
|
+
data: data,
|
|
119
|
+
};
|
|
120
|
+
return [2 /*return*/, this.ably.channels.get(channel).publish(message)];
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
AblyService.prototype.subscribe = function (channel, event, callback) {
|
|
125
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
126
|
+
return __generator(this, function (_a) {
|
|
127
|
+
switch (_a.label) {
|
|
128
|
+
case 0: return [4 /*yield*/, this.ably.channels.get(channel).subscribe(event, callback)];
|
|
129
|
+
case 1:
|
|
130
|
+
_a.sent();
|
|
131
|
+
return [2 /*return*/];
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
AblyService.prototype.cleanup = function (walletAddress) {
|
|
137
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
138
|
+
var channel;
|
|
139
|
+
return __generator(this, function (_a) {
|
|
140
|
+
channel = this.channels.get(walletAddress);
|
|
141
|
+
if (channel) {
|
|
142
|
+
channel.unsubscribe();
|
|
143
|
+
this.channels.delete(walletAddress);
|
|
144
|
+
// eslint-disable-next-line no-console
|
|
145
|
+
console.log("Unsubscribed from wallet ".concat(walletAddress));
|
|
146
|
+
}
|
|
147
|
+
return [2 /*return*/];
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
return AblyService;
|
|
152
|
+
}());
|
|
153
|
+
exports.AblyService = AblyService;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ABLY_CHANNELS_NAME = void 0;
|
|
4
|
+
var ABLY_CHANNELS_NAME;
|
|
5
|
+
(function (ABLY_CHANNELS_NAME) {
|
|
6
|
+
ABLY_CHANNELS_NAME["TRANSACTION"] = "transaction";
|
|
7
|
+
})(ABLY_CHANNELS_NAME || (exports.ABLY_CHANNELS_NAME = ABLY_CHANNELS_NAME = {}));
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
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);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
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;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
var userClientRequest_1 = __importDefault(require("../clients/userClientRequest"));
|
|
43
|
+
var sendExternalService = function (body) { return __awaiter(void 0, void 0, void 0, function () {
|
|
44
|
+
var response;
|
|
45
|
+
return __generator(this, function (_a) {
|
|
46
|
+
switch (_a.label) {
|
|
47
|
+
case 0: return [4 /*yield*/, userClientRequest_1.default.post("/transaction/withdrawn", body, {
|
|
48
|
+
headers: {
|
|
49
|
+
"c-payload-signature": "text",
|
|
50
|
+
},
|
|
51
|
+
})];
|
|
52
|
+
case 1:
|
|
53
|
+
response = _a.sent();
|
|
54
|
+
return [2 /*return*/, response.data];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}); };
|
|
58
|
+
exports.default = sendExternalService;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface SendExternalBody {
|
|
2
|
+
amount: string;
|
|
3
|
+
currency_slug: string;
|
|
4
|
+
passcode: string;
|
|
5
|
+
to_address: string;
|
|
6
|
+
network: string;
|
|
7
|
+
memo: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SendExternalResponse {
|
|
10
|
+
success: boolean;
|
|
11
|
+
message: string;
|
|
12
|
+
timestamp: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
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);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
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;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
var userClientRequest_1 = __importDefault(require("../clients/userClientRequest"));
|
|
43
|
+
var sendInternalService = function (body) { return __awaiter(void 0, void 0, void 0, function () {
|
|
44
|
+
var response;
|
|
45
|
+
return __generator(this, function (_a) {
|
|
46
|
+
switch (_a.label) {
|
|
47
|
+
case 0: return [4 /*yield*/, userClientRequest_1.default.post("/transaction/transfer-internal", body, {
|
|
48
|
+
headers: {
|
|
49
|
+
"c-payload-signature": "text",
|
|
50
|
+
},
|
|
51
|
+
})];
|
|
52
|
+
case 1:
|
|
53
|
+
response = _a.sent();
|
|
54
|
+
return [2 /*return*/, response.data];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}); };
|
|
58
|
+
exports.default = sendInternalService;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tek-wallet",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.356",
|
|
4
4
|
"description": "A custom React provider with TypeScript support",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"@mui/material": "^6.4.7",
|
|
33
33
|
"@mui/system": "^7.0.2",
|
|
34
34
|
"@yudiel/react-qr-scanner": "^2.2.1",
|
|
35
|
+
"ably": "^2.7.0",
|
|
35
36
|
"axios": "^1.8.4",
|
|
36
37
|
"clsx": "^2.1.1",
|
|
37
38
|
"date-fns": "^4.1.0",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"html-to-image": "^1.11.13",
|
|
43
44
|
"jsonwebtoken": "^9.0.2",
|
|
44
45
|
"next": "^15.2.4",
|
|
46
|
+
"notistack": "^3.0.2",
|
|
45
47
|
"qrcode.react": "^4.2.0",
|
|
46
48
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
47
49
|
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
|