@kryptos_connect/mobile-sdk 1.0.2 → 1.0.4
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/index.js +657 -448
- package/dist/index.mjs +575 -365
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -38,8 +38,8 @@ __export(index_exports, {
|
|
|
38
38
|
module.exports = __toCommonJS(index_exports);
|
|
39
39
|
|
|
40
40
|
// src/KryptosConnectButton.tsx
|
|
41
|
-
var
|
|
42
|
-
var
|
|
41
|
+
var import_react37 = __toESM(require("react"));
|
|
42
|
+
var import_react_native22 = require("react-native");
|
|
43
43
|
|
|
44
44
|
// src/assets/LogoIcon.tsx
|
|
45
45
|
var import_react = __toESM(require("react"));
|
|
@@ -88,6 +88,11 @@ var import_axios = __toESM(require("axios"));
|
|
|
88
88
|
var getBaseUrl = () => {
|
|
89
89
|
return getGlobalBaseUrl() || "https://connect-api.kryptos.io/";
|
|
90
90
|
};
|
|
91
|
+
var isSvgUrl = (url) => {
|
|
92
|
+
if (!url) return false;
|
|
93
|
+
const urlWithoutParams = url.split("?")[0].split("#")[0];
|
|
94
|
+
return /\.svg$/i.test(urlWithoutParams);
|
|
95
|
+
};
|
|
91
96
|
|
|
92
97
|
// src/services/api.ts
|
|
93
98
|
var api = import_axios.default.create({
|
|
@@ -1283,26 +1288,32 @@ var styles8 = import_react_native8.StyleSheet.create({
|
|
|
1283
1288
|
|
|
1284
1289
|
// src/components/Footer.tsx
|
|
1285
1290
|
var Footer = () => {
|
|
1286
|
-
|
|
1291
|
+
const { clientInfo } = useKryptosConnect();
|
|
1292
|
+
const isSandbox = clientInfo?.project_stage === "sandbox";
|
|
1293
|
+
return /* @__PURE__ */ import_react13.default.createElement(
|
|
1294
|
+
import_react_native9.View,
|
|
1295
|
+
{
|
|
1296
|
+
style: [
|
|
1297
|
+
styles9.container,
|
|
1298
|
+
{ justifyContent: isSandbox ? "space-between" : "center" }
|
|
1299
|
+
]
|
|
1300
|
+
},
|
|
1301
|
+
/* @__PURE__ */ import_react13.default.createElement(PoweredByKryptos, null),
|
|
1302
|
+
/* @__PURE__ */ import_react13.default.createElement(Mode, null)
|
|
1303
|
+
);
|
|
1287
1304
|
};
|
|
1288
1305
|
var styles9 = import_react_native9.StyleSheet.create({
|
|
1289
1306
|
container: {
|
|
1290
1307
|
width: "100%",
|
|
1291
1308
|
paddingVertical: 8,
|
|
1292
1309
|
alignItems: "center",
|
|
1293
|
-
|
|
1294
|
-
},
|
|
1295
|
-
// Anchor Mode to the right side
|
|
1296
|
-
modeWrapper: {
|
|
1297
|
-
position: "absolute",
|
|
1298
|
-
right: 8,
|
|
1299
|
-
top: 4
|
|
1310
|
+
flexDirection: "row"
|
|
1300
1311
|
}
|
|
1301
1312
|
});
|
|
1302
1313
|
|
|
1303
1314
|
// src/molecules/Auth.tsx
|
|
1304
|
-
var
|
|
1305
|
-
var
|
|
1315
|
+
var import_react20 = __toESM(require("react"));
|
|
1316
|
+
var import_react_native12 = require("react-native");
|
|
1306
1317
|
|
|
1307
1318
|
// src/assets/LinkIcon.tsx
|
|
1308
1319
|
var import_react14 = __toESM(require("react"));
|
|
@@ -1371,8 +1382,8 @@ var EyeIcon = ({
|
|
|
1371
1382
|
};
|
|
1372
1383
|
|
|
1373
1384
|
// src/molecules/ConnectLogo.tsx
|
|
1374
|
-
var
|
|
1375
|
-
var
|
|
1385
|
+
var import_react19 = __toESM(require("react"));
|
|
1386
|
+
var import_react_native11 = require("react-native");
|
|
1376
1387
|
|
|
1377
1388
|
// src/assets/UnplugIcon.tsx
|
|
1378
1389
|
var import_react17 = __toESM(require("react"));
|
|
@@ -1431,15 +1442,40 @@ var UnplugIcon = ({
|
|
|
1431
1442
|
));
|
|
1432
1443
|
};
|
|
1433
1444
|
|
|
1445
|
+
// src/components/remote-svg.tsx
|
|
1446
|
+
var import_react18 = __toESM(require("react"));
|
|
1447
|
+
var import_react_native10 = require("react-native");
|
|
1448
|
+
var import_react_native_svg7 = require("react-native-svg");
|
|
1449
|
+
function RemoteSvg({
|
|
1450
|
+
uri,
|
|
1451
|
+
width = 32,
|
|
1452
|
+
height = 32
|
|
1453
|
+
}) {
|
|
1454
|
+
const [svgXml, setSvgXml] = (0, import_react18.useState)(null);
|
|
1455
|
+
(0, import_react18.useEffect)(() => {
|
|
1456
|
+
fetch(uri).then((res) => res.text()).then((text) => setSvgXml(text)).catch((err) => console.error("SVG load error:", err));
|
|
1457
|
+
}, [uri]);
|
|
1458
|
+
if (!svgXml) return /* @__PURE__ */ import_react18.default.createElement(import_react_native10.ActivityIndicator, null);
|
|
1459
|
+
return /* @__PURE__ */ import_react18.default.createElement(
|
|
1460
|
+
import_react_native_svg7.SvgXml,
|
|
1461
|
+
{
|
|
1462
|
+
xml: svgXml,
|
|
1463
|
+
width,
|
|
1464
|
+
height,
|
|
1465
|
+
style: { borderRadius: 8 }
|
|
1466
|
+
}
|
|
1467
|
+
);
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1434
1470
|
// src/molecules/ConnectLogo.tsx
|
|
1435
1471
|
var KryptosLogo = () => {
|
|
1436
1472
|
const theme = useTheme();
|
|
1437
|
-
return /* @__PURE__ */
|
|
1438
|
-
|
|
1473
|
+
return /* @__PURE__ */ import_react19.default.createElement(
|
|
1474
|
+
import_react_native11.View,
|
|
1439
1475
|
{
|
|
1440
1476
|
style: [styles10.logoContainer, { backgroundColor: theme.colors.surface }]
|
|
1441
1477
|
},
|
|
1442
|
-
/* @__PURE__ */
|
|
1478
|
+
/* @__PURE__ */ import_react19.default.createElement(LogoIcon, { size: 36 })
|
|
1443
1479
|
);
|
|
1444
1480
|
};
|
|
1445
1481
|
var ConnectLogo = () => {
|
|
@@ -1454,11 +1490,11 @@ var ConnectLogo = () => {
|
|
|
1454
1490
|
}
|
|
1455
1491
|
};
|
|
1456
1492
|
const renderLogo = () => {
|
|
1457
|
-
if ((0,
|
|
1493
|
+
if ((0, import_react19.isValidElement)(appLogo)) {
|
|
1458
1494
|
return appLogo;
|
|
1459
1495
|
} else if (typeof appLogo === "string" && isValidUrl(appLogo)) {
|
|
1460
|
-
return /* @__PURE__ */
|
|
1461
|
-
|
|
1496
|
+
return isSvgUrl(appLogo) ? /* @__PURE__ */ import_react19.default.createElement(RemoteSvg, { uri: appLogo }) : /* @__PURE__ */ import_react19.default.createElement(
|
|
1497
|
+
import_react_native11.Image,
|
|
1462
1498
|
{
|
|
1463
1499
|
source: { uri: appLogo },
|
|
1464
1500
|
style: styles10.appLogoImage,
|
|
@@ -1466,8 +1502,8 @@ var ConnectLogo = () => {
|
|
|
1466
1502
|
}
|
|
1467
1503
|
);
|
|
1468
1504
|
} else if (typeof appLogo === "number" || typeof appLogo === "object" && appLogo !== null) {
|
|
1469
|
-
return /* @__PURE__ */
|
|
1470
|
-
|
|
1505
|
+
return /* @__PURE__ */ import_react19.default.createElement(
|
|
1506
|
+
import_react_native11.Image,
|
|
1471
1507
|
{
|
|
1472
1508
|
source: appLogo,
|
|
1473
1509
|
style: styles10.appLogoImage,
|
|
@@ -1475,12 +1511,12 @@ var ConnectLogo = () => {
|
|
|
1475
1511
|
}
|
|
1476
1512
|
);
|
|
1477
1513
|
} else if (appName) {
|
|
1478
|
-
return /* @__PURE__ */
|
|
1514
|
+
return /* @__PURE__ */ import_react19.default.createElement(import_react_native11.Text, { style: [styles10.appLogoText, { color: theme.colors.text }] }, appName.charAt(0).toUpperCase());
|
|
1479
1515
|
}
|
|
1480
|
-
return /* @__PURE__ */
|
|
1516
|
+
return /* @__PURE__ */ import_react19.default.createElement(import_react_native11.Text, { style: [styles10.appLogoText, { color: theme.colors.text }] }, "?");
|
|
1481
1517
|
};
|
|
1482
|
-
return /* @__PURE__ */
|
|
1483
|
-
|
|
1518
|
+
return /* @__PURE__ */ import_react19.default.createElement(import_react_native11.View, { style: styles10.container }, /* @__PURE__ */ import_react19.default.createElement(KryptosLogo, null), /* @__PURE__ */ import_react19.default.createElement(import_react_native11.View, { style: styles10.iconContainer }, /* @__PURE__ */ import_react19.default.createElement(UnplugIcon, { size: 24, color: theme.colors.textSecondary })), /* @__PURE__ */ import_react19.default.createElement(
|
|
1519
|
+
import_react_native11.View,
|
|
1484
1520
|
{
|
|
1485
1521
|
style: [
|
|
1486
1522
|
styles10.logoContainer,
|
|
@@ -1490,7 +1526,7 @@ var ConnectLogo = () => {
|
|
|
1490
1526
|
renderLogo()
|
|
1491
1527
|
));
|
|
1492
1528
|
};
|
|
1493
|
-
var styles10 =
|
|
1529
|
+
var styles10 = import_react_native11.StyleSheet.create({
|
|
1494
1530
|
container: {
|
|
1495
1531
|
flexDirection: "row",
|
|
1496
1532
|
alignItems: "center",
|
|
@@ -1531,11 +1567,11 @@ var Auth = ({
|
|
|
1531
1567
|
}) => {
|
|
1532
1568
|
const { appName, linkToken, clientId, setUser, setEmail } = useKryptosConnect();
|
|
1533
1569
|
const theme = useTheme();
|
|
1534
|
-
const [isLoading, setIsLoading] =
|
|
1535
|
-
const [errorMessage, setErrorMessage] =
|
|
1536
|
-
const [emailValue, setEmailValue] =
|
|
1537
|
-
const [emailError, setEmailError] =
|
|
1538
|
-
const [loadingType, setLoadingType] =
|
|
1570
|
+
const [isLoading, setIsLoading] = import_react20.default.useState(false);
|
|
1571
|
+
const [errorMessage, setErrorMessage] = import_react20.default.useState("");
|
|
1572
|
+
const [emailValue, setEmailValue] = import_react20.default.useState("");
|
|
1573
|
+
const [emailError, setEmailError] = import_react20.default.useState("");
|
|
1574
|
+
const [loadingType, setLoadingType] = import_react20.default.useState(null);
|
|
1539
1575
|
const validateEmail = (email) => {
|
|
1540
1576
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1541
1577
|
if (!email) {
|
|
@@ -1597,29 +1633,29 @@ var Auth = ({
|
|
|
1597
1633
|
};
|
|
1598
1634
|
const infoSections = [
|
|
1599
1635
|
{
|
|
1600
|
-
icon: /* @__PURE__ */
|
|
1636
|
+
icon: /* @__PURE__ */ import_react20.default.createElement(LinkIcon, { size: 20, color: theme.colors.primary }),
|
|
1601
1637
|
title: "Simple and secure",
|
|
1602
1638
|
text: "Link your accounts in just a few clicks"
|
|
1603
1639
|
},
|
|
1604
1640
|
{
|
|
1605
|
-
icon: /* @__PURE__ */
|
|
1641
|
+
icon: /* @__PURE__ */ import_react20.default.createElement(ShieldIcon, { size: 20, color: theme.colors.primary }),
|
|
1606
1642
|
title: "Control what you share",
|
|
1607
1643
|
text: "We never share your data without your permission"
|
|
1608
1644
|
},
|
|
1609
1645
|
{
|
|
1610
|
-
icon: /* @__PURE__ */
|
|
1646
|
+
icon: /* @__PURE__ */ import_react20.default.createElement(EyeIcon, { size: 20, color: theme.colors.primary }),
|
|
1611
1647
|
title: "View Only Access",
|
|
1612
1648
|
text: "Kryptos retrieves view-only data and cannot perform any transactions on your behalf."
|
|
1613
1649
|
}
|
|
1614
1650
|
];
|
|
1615
|
-
return /* @__PURE__ */
|
|
1616
|
-
|
|
1651
|
+
return /* @__PURE__ */ import_react20.default.createElement(Modal, { isOpen: open, onClose: handleClose, size: "full" }, /* @__PURE__ */ import_react20.default.createElement(ModalHeader, { onClose: handleClose }, ""), /* @__PURE__ */ import_react20.default.createElement(ModalBody, null, /* @__PURE__ */ import_react20.default.createElement(import_react_native12.View, { style: styles11.container }, /* @__PURE__ */ import_react20.default.createElement(import_react_native12.View, { style: styles11.header }, /* @__PURE__ */ import_react20.default.createElement(import_react_native12.Text, { style: [styles11.title, { color: theme.colors.text }] }, "Link your accounts to", " ", /* @__PURE__ */ import_react20.default.createElement(import_react_native12.Text, { style: { fontWeight: "700" } }, appName), " using Kryptos"), /* @__PURE__ */ import_react20.default.createElement(ConnectLogo, null), infoSections.map((section, index) => /* @__PURE__ */ import_react20.default.createElement(import_react_native12.View, { key: `info-${index}`, style: styles11.infoSection }, /* @__PURE__ */ import_react20.default.createElement(import_react_native12.View, { style: styles11.infoIcon }, section.icon), /* @__PURE__ */ import_react20.default.createElement(import_react_native12.View, { style: styles11.infoContent }, /* @__PURE__ */ import_react20.default.createElement(
|
|
1652
|
+
import_react_native12.Text,
|
|
1617
1653
|
{
|
|
1618
1654
|
style: [styles11.infoTitle, { color: theme.colors.text }]
|
|
1619
1655
|
},
|
|
1620
1656
|
section.title
|
|
1621
|
-
), /* @__PURE__ */
|
|
1622
|
-
|
|
1657
|
+
), /* @__PURE__ */ import_react20.default.createElement(
|
|
1658
|
+
import_react_native12.Text,
|
|
1623
1659
|
{
|
|
1624
1660
|
style: [
|
|
1625
1661
|
styles11.infoDescription,
|
|
@@ -1627,7 +1663,7 @@ var Auth = ({
|
|
|
1627
1663
|
]
|
|
1628
1664
|
},
|
|
1629
1665
|
section.text
|
|
1630
|
-
)))), errorMessage ? /* @__PURE__ */
|
|
1666
|
+
)))), errorMessage ? /* @__PURE__ */ import_react20.default.createElement(Alert, { variant: "destructive" }, /* @__PURE__ */ import_react20.default.createElement(AlertDescription, null, errorMessage)) : null), /* @__PURE__ */ import_react20.default.createElement(import_react_native12.View, { style: styles11.footer }, /* @__PURE__ */ import_react20.default.createElement(
|
|
1631
1667
|
Button,
|
|
1632
1668
|
{
|
|
1633
1669
|
variant: "outline",
|
|
@@ -1638,41 +1674,41 @@ var Auth = ({
|
|
|
1638
1674
|
style: styles11.button
|
|
1639
1675
|
},
|
|
1640
1676
|
"Continue"
|
|
1641
|
-
), /* @__PURE__ */
|
|
1642
|
-
|
|
1677
|
+
), /* @__PURE__ */ import_react20.default.createElement(
|
|
1678
|
+
import_react_native12.Text,
|
|
1643
1679
|
{
|
|
1644
1680
|
style: [styles11.footerText, { color: theme.colors.textSecondary }]
|
|
1645
1681
|
},
|
|
1646
1682
|
"By continuing, you agree to Kryptos",
|
|
1647
1683
|
" ",
|
|
1648
|
-
/* @__PURE__ */
|
|
1649
|
-
|
|
1684
|
+
/* @__PURE__ */ import_react20.default.createElement(
|
|
1685
|
+
import_react_native12.Text,
|
|
1650
1686
|
{
|
|
1651
1687
|
style: {
|
|
1652
1688
|
color: theme.colors.primary,
|
|
1653
1689
|
textDecorationLine: "underline"
|
|
1654
1690
|
},
|
|
1655
|
-
onPress: () =>
|
|
1691
|
+
onPress: () => import_react_native12.Linking.openURL("https://kryptos.io/privacy-policy")
|
|
1656
1692
|
},
|
|
1657
1693
|
"Privacy Policy"
|
|
1658
1694
|
),
|
|
1659
1695
|
" ",
|
|
1660
1696
|
"and",
|
|
1661
1697
|
" ",
|
|
1662
|
-
/* @__PURE__ */
|
|
1663
|
-
|
|
1698
|
+
/* @__PURE__ */ import_react20.default.createElement(
|
|
1699
|
+
import_react_native12.Text,
|
|
1664
1700
|
{
|
|
1665
1701
|
style: {
|
|
1666
1702
|
color: theme.colors.primary,
|
|
1667
1703
|
textDecorationLine: "underline"
|
|
1668
1704
|
},
|
|
1669
|
-
onPress: () =>
|
|
1705
|
+
onPress: () => import_react_native12.Linking.openURL("https://kryptos.io/terms-of-services")
|
|
1670
1706
|
},
|
|
1671
1707
|
"Terms of Service"
|
|
1672
1708
|
)
|
|
1673
|
-
)))), /* @__PURE__ */
|
|
1709
|
+
)))), /* @__PURE__ */ import_react20.default.createElement(ModalFooter, { style: { paddingVertical: 0 } }, /* @__PURE__ */ import_react20.default.createElement(Footer, null)));
|
|
1674
1710
|
};
|
|
1675
|
-
var styles11 =
|
|
1711
|
+
var styles11 = import_react_native12.StyleSheet.create({
|
|
1676
1712
|
container: {
|
|
1677
1713
|
flex: 1,
|
|
1678
1714
|
flexDirection: "column",
|
|
@@ -1737,8 +1773,8 @@ var styles11 = import_react_native11.StyleSheet.create({
|
|
|
1737
1773
|
});
|
|
1738
1774
|
|
|
1739
1775
|
// src/molecules/Init.tsx
|
|
1740
|
-
var
|
|
1741
|
-
var
|
|
1776
|
+
var import_react21 = __toESM(require("react"));
|
|
1777
|
+
var import_react_native13 = require("react-native");
|
|
1742
1778
|
var Init = ({
|
|
1743
1779
|
open,
|
|
1744
1780
|
onSuccess,
|
|
@@ -1753,9 +1789,9 @@ var Init = ({
|
|
|
1753
1789
|
setUser
|
|
1754
1790
|
} = useKryptosConnect();
|
|
1755
1791
|
const theme = useTheme();
|
|
1756
|
-
const [isFetching, setIsFetching] =
|
|
1757
|
-
const [error, setError] =
|
|
1758
|
-
const fetchLinkToken =
|
|
1792
|
+
const [isFetching, setIsFetching] = import_react21.default.useState(false);
|
|
1793
|
+
const [error, setError] = import_react21.default.useState(null);
|
|
1794
|
+
const fetchLinkToken = import_react21.default.useCallback(async () => {
|
|
1759
1795
|
if (!open) return;
|
|
1760
1796
|
setIsFetching(true);
|
|
1761
1797
|
setError(null);
|
|
@@ -1782,17 +1818,17 @@ var Init = ({
|
|
|
1782
1818
|
setIsFetching(false);
|
|
1783
1819
|
}
|
|
1784
1820
|
}, []);
|
|
1785
|
-
|
|
1821
|
+
import_react21.default.useEffect(() => {
|
|
1786
1822
|
fetchLinkToken();
|
|
1787
1823
|
}, [fetchLinkToken]);
|
|
1788
|
-
return /* @__PURE__ */
|
|
1789
|
-
|
|
1824
|
+
return /* @__PURE__ */ import_react21.default.createElement(Modal, { isOpen: open, onClose, size: "xs" }, /* @__PURE__ */ import_react21.default.createElement(ModalHeader, { onClose }, "Kryptos Connect"), /* @__PURE__ */ import_react21.default.createElement(ModalBody, null, /* @__PURE__ */ import_react21.default.createElement(import_react_native13.View, { style: styles12.container }, isFetching && /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, /* @__PURE__ */ import_react21.default.createElement(
|
|
1825
|
+
import_react_native13.ActivityIndicator,
|
|
1790
1826
|
{
|
|
1791
1827
|
size: "large",
|
|
1792
1828
|
color: theme.colors.primary,
|
|
1793
1829
|
style: styles12.spinner
|
|
1794
1830
|
}
|
|
1795
|
-
), /* @__PURE__ */
|
|
1831
|
+
), /* @__PURE__ */ import_react21.default.createElement(import_react_native13.Text, { style: [styles12.message, { color: theme.colors.text }] }, isInitialized ? "Fetching link token..." : "Initializing...")), !isFetching && error && /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, /* @__PURE__ */ import_react21.default.createElement(Alert, { variant: "destructive" }, /* @__PURE__ */ import_react21.default.createElement(AlertDescription, null, error)), /* @__PURE__ */ import_react21.default.createElement(
|
|
1796
1832
|
Button,
|
|
1797
1833
|
{
|
|
1798
1834
|
variant: "primary",
|
|
@@ -1801,9 +1837,9 @@ var Init = ({
|
|
|
1801
1837
|
style: styles12.retryButton
|
|
1802
1838
|
},
|
|
1803
1839
|
"Retry"
|
|
1804
|
-
)))), /* @__PURE__ */
|
|
1840
|
+
)))), /* @__PURE__ */ import_react21.default.createElement(ModalFooter, { style: { paddingVertical: 0 } }, /* @__PURE__ */ import_react21.default.createElement(Footer, null)));
|
|
1805
1841
|
};
|
|
1806
|
-
var styles12 =
|
|
1842
|
+
var styles12 = import_react_native13.StyleSheet.create({
|
|
1807
1843
|
container: {
|
|
1808
1844
|
flex: 1,
|
|
1809
1845
|
alignItems: "center",
|
|
@@ -1830,18 +1866,18 @@ var styles12 = import_react_native12.StyleSheet.create({
|
|
|
1830
1866
|
});
|
|
1831
1867
|
|
|
1832
1868
|
// src/molecules/Integration.tsx
|
|
1833
|
-
var
|
|
1834
|
-
var
|
|
1869
|
+
var import_react32 = __toESM(require("react"));
|
|
1870
|
+
var import_react_native17 = require("react-native");
|
|
1835
1871
|
|
|
1836
1872
|
// src/assets/ArrowLeftIcon.tsx
|
|
1837
|
-
var
|
|
1838
|
-
var
|
|
1873
|
+
var import_react22 = __toESM(require("react"));
|
|
1874
|
+
var import_react_native_svg8 = __toESM(require("react-native-svg"));
|
|
1839
1875
|
var ArrowLeftIcon = ({
|
|
1840
1876
|
size = 20,
|
|
1841
1877
|
color = "#000"
|
|
1842
1878
|
}) => {
|
|
1843
|
-
return /* @__PURE__ */
|
|
1844
|
-
|
|
1879
|
+
return /* @__PURE__ */ import_react22.default.createElement(import_react_native_svg8.default, { width: size, height: size, viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ import_react22.default.createElement(
|
|
1880
|
+
import_react_native_svg8.Path,
|
|
1845
1881
|
{
|
|
1846
1882
|
d: "M19 12H5M12 19l-7-7 7-7",
|
|
1847
1883
|
stroke: color,
|
|
@@ -1853,14 +1889,14 @@ var ArrowLeftIcon = ({
|
|
|
1853
1889
|
};
|
|
1854
1890
|
|
|
1855
1891
|
// src/assets/CheckCircleIcon.tsx
|
|
1856
|
-
var
|
|
1857
|
-
var
|
|
1892
|
+
var import_react23 = __toESM(require("react"));
|
|
1893
|
+
var import_react_native_svg9 = __toESM(require("react-native-svg"));
|
|
1858
1894
|
var CheckCircleIcon = ({
|
|
1859
1895
|
size = 20,
|
|
1860
1896
|
color = "#10B981"
|
|
1861
1897
|
}) => {
|
|
1862
|
-
return /* @__PURE__ */
|
|
1863
|
-
|
|
1898
|
+
return /* @__PURE__ */ import_react23.default.createElement(import_react_native_svg9.default, { width: size, height: size, viewBox: "0 0 24 24", fill: "none" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
1899
|
+
import_react_native_svg9.Circle,
|
|
1864
1900
|
{
|
|
1865
1901
|
cx: 12,
|
|
1866
1902
|
cy: 12,
|
|
@@ -1868,8 +1904,8 @@ var CheckCircleIcon = ({
|
|
|
1868
1904
|
stroke: color,
|
|
1869
1905
|
strokeWidth: 2
|
|
1870
1906
|
}
|
|
1871
|
-
), /* @__PURE__ */
|
|
1872
|
-
|
|
1907
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
1908
|
+
import_react_native_svg9.Path,
|
|
1873
1909
|
{
|
|
1874
1910
|
d: "m9 12 2 2 4-4",
|
|
1875
1911
|
stroke: color,
|
|
@@ -1881,21 +1917,21 @@ var CheckCircleIcon = ({
|
|
|
1881
1917
|
};
|
|
1882
1918
|
|
|
1883
1919
|
// src/assets/LoaderIcon.tsx
|
|
1884
|
-
var
|
|
1885
|
-
var
|
|
1886
|
-
var
|
|
1887
|
-
var AnimatedSvg =
|
|
1920
|
+
var import_react24 = __toESM(require("react"));
|
|
1921
|
+
var import_react_native14 = require("react-native");
|
|
1922
|
+
var import_react_native_svg10 = __toESM(require("react-native-svg"));
|
|
1923
|
+
var AnimatedSvg = import_react_native14.Animated.createAnimatedComponent(import_react_native_svg10.default);
|
|
1888
1924
|
var LoaderIcon = ({
|
|
1889
1925
|
size = 20,
|
|
1890
1926
|
color = "#00C693"
|
|
1891
1927
|
}) => {
|
|
1892
|
-
const rotateAnim =
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1928
|
+
const rotateAnim = import_react24.default.useRef(new import_react_native14.Animated.Value(0)).current;
|
|
1929
|
+
import_react24.default.useEffect(() => {
|
|
1930
|
+
import_react_native14.Animated.loop(
|
|
1931
|
+
import_react_native14.Animated.timing(rotateAnim, {
|
|
1896
1932
|
toValue: 1,
|
|
1897
1933
|
duration: 1e3,
|
|
1898
|
-
easing:
|
|
1934
|
+
easing: import_react_native14.Easing.linear,
|
|
1899
1935
|
useNativeDriver: true
|
|
1900
1936
|
})
|
|
1901
1937
|
).start();
|
|
@@ -1904,7 +1940,7 @@ var LoaderIcon = ({
|
|
|
1904
1940
|
inputRange: [0, 1],
|
|
1905
1941
|
outputRange: ["0deg", "360deg"]
|
|
1906
1942
|
});
|
|
1907
|
-
return /* @__PURE__ */
|
|
1943
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
1908
1944
|
AnimatedSvg,
|
|
1909
1945
|
{
|
|
1910
1946
|
width: size,
|
|
@@ -1913,8 +1949,8 @@ var LoaderIcon = ({
|
|
|
1913
1949
|
fill: "none",
|
|
1914
1950
|
style: { transform: [{ rotate: spin }] }
|
|
1915
1951
|
},
|
|
1916
|
-
/* @__PURE__ */
|
|
1917
|
-
|
|
1952
|
+
/* @__PURE__ */ import_react24.default.createElement(
|
|
1953
|
+
import_react_native_svg10.Path,
|
|
1918
1954
|
{
|
|
1919
1955
|
d: "M21 12a9 9 0 1 1-6.219-8.56",
|
|
1920
1956
|
stroke: color,
|
|
@@ -1927,11 +1963,11 @@ var LoaderIcon = ({
|
|
|
1927
1963
|
};
|
|
1928
1964
|
|
|
1929
1965
|
// src/assets/SuccessIcon.tsx
|
|
1930
|
-
var
|
|
1931
|
-
var
|
|
1966
|
+
var import_react25 = __toESM(require("react"));
|
|
1967
|
+
var import_react_native_svg11 = __toESM(require("react-native-svg"));
|
|
1932
1968
|
var SuccessIcon = ({ size = 64 }) => {
|
|
1933
|
-
return /* @__PURE__ */
|
|
1934
|
-
|
|
1969
|
+
return /* @__PURE__ */ import_react25.default.createElement(import_react_native_svg11.default, { width: size, height: size, viewBox: "0 0 64 64", fill: "none" }, /* @__PURE__ */ import_react25.default.createElement(
|
|
1970
|
+
import_react_native_svg11.Circle,
|
|
1935
1971
|
{
|
|
1936
1972
|
cx: 32,
|
|
1937
1973
|
cy: 32,
|
|
@@ -1939,16 +1975,16 @@ var SuccessIcon = ({ size = 64 }) => {
|
|
|
1939
1975
|
fill: "#00C693",
|
|
1940
1976
|
opacity: 0.1
|
|
1941
1977
|
}
|
|
1942
|
-
), /* @__PURE__ */
|
|
1943
|
-
|
|
1978
|
+
), /* @__PURE__ */ import_react25.default.createElement(
|
|
1979
|
+
import_react_native_svg11.Circle,
|
|
1944
1980
|
{
|
|
1945
1981
|
cx: 32,
|
|
1946
1982
|
cy: 32,
|
|
1947
1983
|
r: 24,
|
|
1948
1984
|
fill: "#00C693"
|
|
1949
1985
|
}
|
|
1950
|
-
), /* @__PURE__ */
|
|
1951
|
-
|
|
1986
|
+
), /* @__PURE__ */ import_react25.default.createElement(
|
|
1987
|
+
import_react_native_svg11.Path,
|
|
1952
1988
|
{
|
|
1953
1989
|
d: "M24 32l6 6 12-12",
|
|
1954
1990
|
stroke: "white",
|
|
@@ -1960,11 +1996,11 @@ var SuccessIcon = ({ size = 64 }) => {
|
|
|
1960
1996
|
};
|
|
1961
1997
|
|
|
1962
1998
|
// src/assets/ErrorIcon.tsx
|
|
1963
|
-
var
|
|
1964
|
-
var
|
|
1999
|
+
var import_react26 = __toESM(require("react"));
|
|
2000
|
+
var import_react_native_svg12 = __toESM(require("react-native-svg"));
|
|
1965
2001
|
var ErrorIcon = ({ size = 64 }) => {
|
|
1966
|
-
return /* @__PURE__ */
|
|
1967
|
-
|
|
2002
|
+
return /* @__PURE__ */ import_react26.default.createElement(import_react_native_svg12.default, { width: size, height: size, viewBox: "0 0 64 64", fill: "none" }, /* @__PURE__ */ import_react26.default.createElement(
|
|
2003
|
+
import_react_native_svg12.Circle,
|
|
1968
2004
|
{
|
|
1969
2005
|
cx: 32,
|
|
1970
2006
|
cy: 32,
|
|
@@ -1972,16 +2008,16 @@ var ErrorIcon = ({ size = 64 }) => {
|
|
|
1972
2008
|
fill: "#EF4444",
|
|
1973
2009
|
opacity: 0.1
|
|
1974
2010
|
}
|
|
1975
|
-
), /* @__PURE__ */
|
|
1976
|
-
|
|
2011
|
+
), /* @__PURE__ */ import_react26.default.createElement(
|
|
2012
|
+
import_react_native_svg12.Circle,
|
|
1977
2013
|
{
|
|
1978
2014
|
cx: 32,
|
|
1979
2015
|
cy: 32,
|
|
1980
2016
|
r: 24,
|
|
1981
2017
|
fill: "#EF4444"
|
|
1982
2018
|
}
|
|
1983
|
-
), /* @__PURE__ */
|
|
1984
|
-
|
|
2019
|
+
), /* @__PURE__ */ import_react26.default.createElement(
|
|
2020
|
+
import_react_native_svg12.Path,
|
|
1985
2021
|
{
|
|
1986
2022
|
d: "M24 24l16 16M40 24l-16 16",
|
|
1987
2023
|
stroke: "white",
|
|
@@ -1993,18 +2029,18 @@ var ErrorIcon = ({ size = 64 }) => {
|
|
|
1993
2029
|
};
|
|
1994
2030
|
|
|
1995
2031
|
// src/assets/SearchIcon.tsx
|
|
1996
|
-
var import_react26 = __toESM(require("react"));
|
|
1997
|
-
var import_react_native_svg12 = __toESM(require("react-native-svg"));
|
|
1998
|
-
|
|
1999
|
-
// src/assets/PlusIcon.tsx
|
|
2000
2032
|
var import_react27 = __toESM(require("react"));
|
|
2001
2033
|
var import_react_native_svg13 = __toESM(require("react-native-svg"));
|
|
2034
|
+
|
|
2035
|
+
// src/assets/PlusIcon.tsx
|
|
2036
|
+
var import_react28 = __toESM(require("react"));
|
|
2037
|
+
var import_react_native_svg14 = __toESM(require("react-native-svg"));
|
|
2002
2038
|
var PlusIcon = ({
|
|
2003
2039
|
size = 14,
|
|
2004
2040
|
color = "#6B7280"
|
|
2005
2041
|
}) => {
|
|
2006
|
-
return /* @__PURE__ */
|
|
2007
|
-
|
|
2042
|
+
return /* @__PURE__ */ import_react28.default.createElement(import_react_native_svg14.default, { width: size, height: size, viewBox: "0 0 14 14", fill: "none" }, /* @__PURE__ */ import_react28.default.createElement(
|
|
2043
|
+
import_react_native_svg14.Path,
|
|
2008
2044
|
{
|
|
2009
2045
|
d: "M7 3.5v7M3.5 7h7",
|
|
2010
2046
|
stroke: color,
|
|
@@ -2016,8 +2052,8 @@ var PlusIcon = ({
|
|
|
2016
2052
|
|
|
2017
2053
|
// src/wallet-connect/index.tsx
|
|
2018
2054
|
var import_appkit_react_native3 = require("@reown/appkit-react-native");
|
|
2019
|
-
var
|
|
2020
|
-
var
|
|
2055
|
+
var import_react30 = __toESM(require("react"));
|
|
2056
|
+
var import_react_native15 = require("react-native");
|
|
2021
2057
|
|
|
2022
2058
|
// src/utils/uuid.ts
|
|
2023
2059
|
function generateUUID() {
|
|
@@ -2029,7 +2065,7 @@ function generateUUID() {
|
|
|
2029
2065
|
}
|
|
2030
2066
|
|
|
2031
2067
|
// src/wallet-connect/wallet-connect.tsx
|
|
2032
|
-
var
|
|
2068
|
+
var import_react29 = __toESM(require("react"));
|
|
2033
2069
|
var import_appkit_react_native2 = require("@reown/appkit-react-native");
|
|
2034
2070
|
|
|
2035
2071
|
// src/wallet-connect/AppKitConfig.ts
|
|
@@ -2128,7 +2164,7 @@ var createAppKitInstance = (projectId) => {
|
|
|
2128
2164
|
// src/wallet-connect/wallet-connect.tsx
|
|
2129
2165
|
var WalletConnectWrapper = ({ children }) => {
|
|
2130
2166
|
const { walletConnectProjectId } = useKryptosConnect();
|
|
2131
|
-
const appKit =
|
|
2167
|
+
const appKit = import_react29.default.useMemo(() => {
|
|
2132
2168
|
if (!walletConnectProjectId) {
|
|
2133
2169
|
console.warn(
|
|
2134
2170
|
"walletConnectProjectId is missing in KryptosConnectProvider config"
|
|
@@ -2138,9 +2174,9 @@ var WalletConnectWrapper = ({ children }) => {
|
|
|
2138
2174
|
return createAppKitInstance(walletConnectProjectId);
|
|
2139
2175
|
}, [walletConnectProjectId]);
|
|
2140
2176
|
if (!appKit) {
|
|
2141
|
-
return /* @__PURE__ */
|
|
2177
|
+
return /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, children);
|
|
2142
2178
|
}
|
|
2143
|
-
return /* @__PURE__ */
|
|
2179
|
+
return /* @__PURE__ */ import_react29.default.createElement(import_appkit_react_native2.AppKitProvider, { instance: appKit }, /* @__PURE__ */ import_react29.default.createElement(import_appkit_react_native2.AppKit, null), children);
|
|
2144
2180
|
};
|
|
2145
2181
|
var wallet_connect_default = WalletConnectWrapper;
|
|
2146
2182
|
|
|
@@ -2151,28 +2187,29 @@ var WalletConnectComponent = ({
|
|
|
2151
2187
|
onAddHandle,
|
|
2152
2188
|
handleClose,
|
|
2153
2189
|
modalOpen,
|
|
2154
|
-
setAddIntegrationMode
|
|
2190
|
+
setAddIntegrationMode,
|
|
2191
|
+
providersList
|
|
2155
2192
|
}) => {
|
|
2156
2193
|
const { walletConnectProjectId } = useKryptosConnect();
|
|
2157
2194
|
const theme = useTheme();
|
|
2158
2195
|
if (!walletConnectProjectId) {
|
|
2159
|
-
return /* @__PURE__ */
|
|
2160
|
-
|
|
2196
|
+
return /* @__PURE__ */ import_react30.default.createElement(Modal, { isOpen: modalOpen, onClose: handleClose, size: "full" }, /* @__PURE__ */ import_react30.default.createElement(ModalHeader, { onClose: handleClose }, /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.headerContent }, /* @__PURE__ */ import_react30.default.createElement(
|
|
2197
|
+
import_react_native15.TouchableOpacity,
|
|
2161
2198
|
{
|
|
2162
2199
|
onPress: () => {
|
|
2163
2200
|
setAddIntegrationMode(null);
|
|
2164
2201
|
},
|
|
2165
2202
|
style: styles13.backButton
|
|
2166
2203
|
},
|
|
2167
|
-
/* @__PURE__ */
|
|
2168
|
-
), /* @__PURE__ */
|
|
2169
|
-
|
|
2204
|
+
/* @__PURE__ */ import_react30.default.createElement(ArrowLeftIcon, { size: 20, color: theme.colors.text })
|
|
2205
|
+
), /* @__PURE__ */ import_react30.default.createElement(import_react_native15.Text, { style: [styles13.headerTitle, { color: theme.colors.text }] }, "Integration"))), /* @__PURE__ */ import_react30.default.createElement(ModalBody, { scrollable: false, style: styles13.contentContainer }, /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.emptyState }, /* @__PURE__ */ import_react30.default.createElement(
|
|
2206
|
+
import_react_native15.Text,
|
|
2170
2207
|
{
|
|
2171
2208
|
style: [styles13.emptyStateTitle, { color: theme.colors.text }]
|
|
2172
2209
|
},
|
|
2173
2210
|
"WalletConnect is not configured"
|
|
2174
|
-
), /* @__PURE__ */
|
|
2175
|
-
|
|
2211
|
+
), /* @__PURE__ */ import_react30.default.createElement(
|
|
2212
|
+
import_react_native15.Text,
|
|
2176
2213
|
{
|
|
2177
2214
|
style: [
|
|
2178
2215
|
styles13.infoText,
|
|
@@ -2180,7 +2217,7 @@ var WalletConnectComponent = ({
|
|
|
2180
2217
|
]
|
|
2181
2218
|
},
|
|
2182
2219
|
"Please add a walletConnectProjectId to KryptosConnectProvider to enable wallet connections."
|
|
2183
|
-
), /* @__PURE__ */
|
|
2220
|
+
), /* @__PURE__ */ import_react30.default.createElement(
|
|
2184
2221
|
Button,
|
|
2185
2222
|
{
|
|
2186
2223
|
variant: "outline",
|
|
@@ -2191,7 +2228,7 @@ var WalletConnectComponent = ({
|
|
|
2191
2228
|
"Go back"
|
|
2192
2229
|
))));
|
|
2193
2230
|
}
|
|
2194
|
-
return /* @__PURE__ */
|
|
2231
|
+
return /* @__PURE__ */ import_react30.default.createElement(wallet_connect_default, null, /* @__PURE__ */ import_react30.default.createElement(
|
|
2195
2232
|
ConnectButton,
|
|
2196
2233
|
{
|
|
2197
2234
|
integration,
|
|
@@ -2199,7 +2236,8 @@ var WalletConnectComponent = ({
|
|
|
2199
2236
|
onClose,
|
|
2200
2237
|
handleClose,
|
|
2201
2238
|
modalOpen,
|
|
2202
|
-
setAddIntegrationMode
|
|
2239
|
+
setAddIntegrationMode,
|
|
2240
|
+
providersList
|
|
2203
2241
|
}
|
|
2204
2242
|
));
|
|
2205
2243
|
};
|
|
@@ -2208,17 +2246,85 @@ function ConnectButton({
|
|
|
2208
2246
|
onAddHandle,
|
|
2209
2247
|
handleClose,
|
|
2210
2248
|
modalOpen,
|
|
2211
|
-
setAddIntegrationMode
|
|
2249
|
+
setAddIntegrationMode,
|
|
2250
|
+
providersList
|
|
2212
2251
|
}) {
|
|
2213
2252
|
const theme = useTheme();
|
|
2214
2253
|
const { open, disconnect } = (0, import_appkit_react_native3.useAppKit)();
|
|
2215
|
-
const { address, isConnected
|
|
2254
|
+
const { address, isConnected } = (0, import_appkit_react_native3.useAccount)();
|
|
2216
2255
|
const { linkToken, user, clientId } = useKryptosConnect();
|
|
2217
|
-
const [selectedChains, setSelectedChains] = (0,
|
|
2218
|
-
const [errorMessage, setErrorMessage] = (0,
|
|
2219
|
-
const [chainErrors, setChainErrors] = (0,
|
|
2220
|
-
const [isLoading, setIsLoading] = (0,
|
|
2221
|
-
const userUsedChains =
|
|
2256
|
+
const [selectedChains, setSelectedChains] = (0, import_react30.useState)(/* @__PURE__ */ new Set());
|
|
2257
|
+
const [errorMessage, setErrorMessage] = (0, import_react30.useState)("");
|
|
2258
|
+
const [chainErrors, setChainErrors] = (0, import_react30.useState)({});
|
|
2259
|
+
const [isLoading, setIsLoading] = (0, import_react30.useState)(false);
|
|
2260
|
+
const [userUsedChains, setUserUsedChains] = (0, import_react30.useState)([]);
|
|
2261
|
+
const [isFetchingChains, setIsFetchingChains] = (0, import_react30.useState)(false);
|
|
2262
|
+
const availableChains = (0, import_react30.useMemo)(() => {
|
|
2263
|
+
if (userUsedChains.length > 0) {
|
|
2264
|
+
return userUsedChains;
|
|
2265
|
+
}
|
|
2266
|
+
if (integration.walletSupportedChains && integration.walletSupportedChains.length > 0) {
|
|
2267
|
+
return integration.walletSupportedChains;
|
|
2268
|
+
}
|
|
2269
|
+
return [];
|
|
2270
|
+
}, [userUsedChains, integration.walletSupportedChains]);
|
|
2271
|
+
(0, import_react30.useEffect)(() => {
|
|
2272
|
+
if (!isConnected || !address || !address.trim()) {
|
|
2273
|
+
setUserUsedChains([]);
|
|
2274
|
+
setSelectedChains(/* @__PURE__ */ new Set());
|
|
2275
|
+
setIsFetchingChains(false);
|
|
2276
|
+
return;
|
|
2277
|
+
}
|
|
2278
|
+
const debounceTimer = setTimeout(async () => {
|
|
2279
|
+
if (linkToken && address && address.trim() && isConnected) {
|
|
2280
|
+
try {
|
|
2281
|
+
setIsFetchingChains(true);
|
|
2282
|
+
let chains = [];
|
|
2283
|
+
if (integration.isEvmWallet) {
|
|
2284
|
+
const res = await getUserUsedChains(linkToken, address.trim());
|
|
2285
|
+
if (res && Array.isArray(res) && res.length > 0) {
|
|
2286
|
+
chains = res;
|
|
2287
|
+
}
|
|
2288
|
+
}
|
|
2289
|
+
if (chains.length === 0 && integration.walletSupportedChains && integration.walletSupportedChains.length > 0) {
|
|
2290
|
+
chains = integration.walletSupportedChains;
|
|
2291
|
+
}
|
|
2292
|
+
if (chains.length > 0) {
|
|
2293
|
+
setUserUsedChains(chains);
|
|
2294
|
+
setSelectedChains(new Set(chains.map((chain) => chain.id)));
|
|
2295
|
+
} else {
|
|
2296
|
+
setUserUsedChains([]);
|
|
2297
|
+
setSelectedChains(/* @__PURE__ */ new Set());
|
|
2298
|
+
}
|
|
2299
|
+
} catch (error) {
|
|
2300
|
+
console.error("Failed to fetch user chains:", error);
|
|
2301
|
+
if (integration.walletSupportedChains && integration.walletSupportedChains.length > 0) {
|
|
2302
|
+
setUserUsedChains(integration.walletSupportedChains);
|
|
2303
|
+
setSelectedChains(
|
|
2304
|
+
new Set(
|
|
2305
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2306
|
+
integration.walletSupportedChains.map((chain) => chain.id)
|
|
2307
|
+
)
|
|
2308
|
+
);
|
|
2309
|
+
} else {
|
|
2310
|
+
setUserUsedChains([]);
|
|
2311
|
+
setSelectedChains(/* @__PURE__ */ new Set());
|
|
2312
|
+
}
|
|
2313
|
+
} finally {
|
|
2314
|
+
setIsFetchingChains(false);
|
|
2315
|
+
}
|
|
2316
|
+
}
|
|
2317
|
+
}, 500);
|
|
2318
|
+
return () => {
|
|
2319
|
+
clearTimeout(debounceTimer);
|
|
2320
|
+
};
|
|
2321
|
+
}, [
|
|
2322
|
+
linkToken,
|
|
2323
|
+
address,
|
|
2324
|
+
isConnected,
|
|
2325
|
+
integration.isEvmWallet,
|
|
2326
|
+
integration.walletSupportedChains
|
|
2327
|
+
]);
|
|
2222
2328
|
const validateForm = () => {
|
|
2223
2329
|
if (!address) {
|
|
2224
2330
|
setErrorMessage("Please connect a wallet");
|
|
@@ -2236,7 +2342,7 @@ function ConnectButton({
|
|
|
2236
2342
|
setIsLoading(true);
|
|
2237
2343
|
setErrorMessage("");
|
|
2238
2344
|
setChainErrors({});
|
|
2239
|
-
const chainsToProcess =
|
|
2345
|
+
const chainsToProcess = availableChains.filter(
|
|
2240
2346
|
(c) => selectedChains.has(c.id)
|
|
2241
2347
|
);
|
|
2242
2348
|
const integrationsToAdd = [];
|
|
@@ -2244,43 +2350,46 @@ function ConnectButton({
|
|
|
2244
2350
|
const walletTestsPayload = chainsToProcess.map((chain) => {
|
|
2245
2351
|
const walletId = generateUUID();
|
|
2246
2352
|
const displaySuffix = address ? address?.length > 8 ? `${address.slice(0, 4)}...${address.slice(-4)}` : address : "";
|
|
2247
|
-
const alias = `${integration.
|
|
2353
|
+
const alias = `${integration.public_name} (${displaySuffix})`;
|
|
2354
|
+
const provider = providersList.find((p) => p.id === chain.id);
|
|
2248
2355
|
return {
|
|
2249
2356
|
chain,
|
|
2250
2357
|
walletId,
|
|
2251
2358
|
alias,
|
|
2252
2359
|
credential: {
|
|
2253
|
-
source:
|
|
2360
|
+
source: provider?.id,
|
|
2254
2361
|
credential: {
|
|
2255
2362
|
address,
|
|
2256
2363
|
userId: user?.user_id || "0",
|
|
2257
|
-
projectId:
|
|
2364
|
+
projectId: provider?.projectId,
|
|
2258
2365
|
apiKey: "0",
|
|
2259
2366
|
secret: "0",
|
|
2260
2367
|
privateKey: "0",
|
|
2261
2368
|
alias,
|
|
2262
2369
|
walletId,
|
|
2263
|
-
exchange:
|
|
2370
|
+
exchange: provider?.id
|
|
2264
2371
|
}
|
|
2265
2372
|
}
|
|
2266
2373
|
};
|
|
2267
2374
|
});
|
|
2268
2375
|
const results = await Promise.allSettled(
|
|
2376
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2269
2377
|
walletTestsPayload.map(
|
|
2270
|
-
(
|
|
2378
|
+
(testData) => testCredentials(linkToken, { ...testData.credential })
|
|
2271
2379
|
)
|
|
2272
2380
|
);
|
|
2273
2381
|
results.forEach((result, index) => {
|
|
2274
2382
|
const { chain, walletId, alias } = walletTestsPayload[index];
|
|
2275
|
-
|
|
2383
|
+
const provider = providersList.find((p) => p.id === chain.id);
|
|
2384
|
+
if (result.status === "fulfilled" && result.value?.valid && provider) {
|
|
2276
2385
|
const data = {
|
|
2277
2386
|
alias,
|
|
2278
|
-
exchange:
|
|
2279
|
-
id:
|
|
2280
|
-
public_name:
|
|
2387
|
+
exchange: provider.id.toLowerCase(),
|
|
2388
|
+
id: provider.id,
|
|
2389
|
+
public_name: provider.public_name,
|
|
2281
2390
|
sync_time: (/* @__PURE__ */ new Date()).getTime(),
|
|
2282
2391
|
fetchAll: true,
|
|
2283
|
-
logo:
|
|
2392
|
+
logo: provider.logo || null,
|
|
2284
2393
|
startTime: null,
|
|
2285
2394
|
endTime: null,
|
|
2286
2395
|
uid: user?.user_id || "",
|
|
@@ -2289,24 +2398,37 @@ function ConnectButton({
|
|
|
2289
2398
|
clientId,
|
|
2290
2399
|
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2291
2400
|
},
|
|
2292
|
-
metadata: {
|
|
2293
|
-
environment: "sandbox"
|
|
2294
|
-
},
|
|
2295
2401
|
addedOn: (/* @__PURE__ */ new Date()).getTime(),
|
|
2296
|
-
default_chain:
|
|
2297
|
-
default_chain_logo:
|
|
2298
|
-
type:
|
|
2299
|
-
isNftSupported:
|
|
2300
|
-
chainId:
|
|
2301
|
-
|
|
2402
|
+
default_chain: integration?.id || "",
|
|
2403
|
+
default_chain_logo: integration?.logo || "",
|
|
2404
|
+
type: provider.type || "",
|
|
2405
|
+
isNftSupported: provider?.isEvmWallet || provider?.nftSupport || false,
|
|
2406
|
+
chainId: provider?.community_id,
|
|
2407
|
+
credsData: {
|
|
2408
|
+
address
|
|
2409
|
+
}
|
|
2302
2410
|
};
|
|
2303
2411
|
integrationsToAdd.push(data);
|
|
2304
2412
|
} else {
|
|
2305
|
-
|
|
2413
|
+
if (result.status === "rejected") {
|
|
2414
|
+
errors[chain.id] = result.reason?.response?.data?.message || "Failed to process chain";
|
|
2415
|
+
} else if (result.status === "fulfilled") {
|
|
2416
|
+
errors[chain.id] = result.value?.message || "Failed to verify chain";
|
|
2417
|
+
}
|
|
2306
2418
|
}
|
|
2307
2419
|
});
|
|
2420
|
+
setChainErrors(errors);
|
|
2421
|
+
if (Object.keys(errors).length > 0) {
|
|
2422
|
+
setErrorMessage(
|
|
2423
|
+
`Cannot add integrations. ${Object.keys(errors).length} chain${Object.keys(errors).length > 1 ? "s" : ""} failed verification. Please fix the errors and try again.`
|
|
2424
|
+
);
|
|
2425
|
+
return;
|
|
2426
|
+
}
|
|
2308
2427
|
if (integrationsToAdd.length > 0) {
|
|
2309
2428
|
onAddHandle(integrationsToAdd);
|
|
2429
|
+
if (isConnected) {
|
|
2430
|
+
disconnect();
|
|
2431
|
+
}
|
|
2310
2432
|
setChainErrors({});
|
|
2311
2433
|
setErrorMessage("");
|
|
2312
2434
|
} else {
|
|
@@ -2322,30 +2444,49 @@ function ConnectButton({
|
|
|
2322
2444
|
setIsLoading(false);
|
|
2323
2445
|
}
|
|
2324
2446
|
};
|
|
2325
|
-
const toggleChainSelection = (
|
|
2447
|
+
const toggleChainSelection = (chainId) => {
|
|
2326
2448
|
const newSelected = new Set(selectedChains);
|
|
2327
|
-
if (newSelected.has(
|
|
2328
|
-
newSelected.delete(
|
|
2449
|
+
if (newSelected.has(chainId)) {
|
|
2450
|
+
newSelected.delete(chainId);
|
|
2329
2451
|
} else {
|
|
2330
|
-
newSelected.add(
|
|
2452
|
+
newSelected.add(chainId);
|
|
2331
2453
|
}
|
|
2332
2454
|
setSelectedChains(newSelected);
|
|
2333
|
-
if (chainErrors[
|
|
2455
|
+
if (chainErrors[chainId]) {
|
|
2334
2456
|
const newErrors = { ...chainErrors };
|
|
2335
|
-
delete newErrors[
|
|
2457
|
+
delete newErrors[chainId];
|
|
2336
2458
|
setChainErrors(newErrors);
|
|
2337
2459
|
}
|
|
2338
2460
|
};
|
|
2339
|
-
return /* @__PURE__ */
|
|
2340
|
-
|
|
2461
|
+
return /* @__PURE__ */ import_react30.default.createElement(Modal, { isOpen: modalOpen, onClose: handleClose, size: "full" }, /* @__PURE__ */ import_react30.default.createElement(ModalHeader, { onClose: handleClose }, /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.headerContent }, /* @__PURE__ */ import_react30.default.createElement(
|
|
2462
|
+
import_react_native15.TouchableOpacity,
|
|
2341
2463
|
{
|
|
2342
2464
|
onPress: () => {
|
|
2343
2465
|
setAddIntegrationMode(null);
|
|
2466
|
+
if (isConnected) {
|
|
2467
|
+
disconnect();
|
|
2468
|
+
}
|
|
2344
2469
|
},
|
|
2345
2470
|
style: styles13.backButton
|
|
2346
2471
|
},
|
|
2347
|
-
/* @__PURE__ */
|
|
2348
|
-
), /* @__PURE__ */
|
|
2472
|
+
/* @__PURE__ */ import_react30.default.createElement(ArrowLeftIcon, { size: 20, color: theme.colors.text })
|
|
2473
|
+
), /* @__PURE__ */ import_react30.default.createElement(import_react_native15.Text, { style: [styles13.headerTitle, { color: theme.colors.text }] }, "Integration"))), /* @__PURE__ */ import_react30.default.createElement(ModalBody, { scrollable: false, style: styles13.contentContainer }, /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.header }, integration.logo ? isSvgUrl(integration.logo) ? /* @__PURE__ */ import_react30.default.createElement(RemoteSvg, { uri: integration.logo }) : /* @__PURE__ */ import_react30.default.createElement(
|
|
2474
|
+
import_react_native15.Image,
|
|
2475
|
+
{
|
|
2476
|
+
source: { uri: integration.logo },
|
|
2477
|
+
style: styles13.logo,
|
|
2478
|
+
resizeMode: "contain"
|
|
2479
|
+
}
|
|
2480
|
+
) : /* @__PURE__ */ import_react30.default.createElement(
|
|
2481
|
+
import_react_native15.View,
|
|
2482
|
+
{
|
|
2483
|
+
style: [
|
|
2484
|
+
styles13.logoPlaceholder,
|
|
2485
|
+
{ backgroundColor: theme.colors.surface }
|
|
2486
|
+
]
|
|
2487
|
+
},
|
|
2488
|
+
/* @__PURE__ */ import_react30.default.createElement(import_react_native15.Text, { style: { color: theme.colors.text } }, integration.name?.charAt(0) || "?")
|
|
2489
|
+
), /* @__PURE__ */ import_react30.default.createElement(import_react_native15.Text, { style: [styles13.name, { color: theme.colors.text }] }, integration.name)), !isConnected ? /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, null, /* @__PURE__ */ import_react30.default.createElement(import_react_native15.Text, { style: [styles13.infoText, { color: theme.colors.text }] }, "Connect your wallet to continue"), /* @__PURE__ */ import_react30.default.createElement(
|
|
2349
2490
|
Button,
|
|
2350
2491
|
{
|
|
2351
2492
|
variant: "primary",
|
|
@@ -2353,107 +2494,149 @@ function ConnectButton({
|
|
|
2353
2494
|
onPress: () => open({ view: "Connect" })
|
|
2354
2495
|
},
|
|
2355
2496
|
"Connect Wallet"
|
|
2356
|
-
)) : /* @__PURE__ */
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
}
|
|
2366
|
-
|
|
2367
|
-
|
|
2497
|
+
)) : /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.connectedContainer }, /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.connectedHeader }, /* @__PURE__ */ import_react30.default.createElement(
|
|
2498
|
+
import_react_native15.Text,
|
|
2499
|
+
{
|
|
2500
|
+
style: [styles13.connectedTitle, { color: theme.colors.text }]
|
|
2501
|
+
},
|
|
2502
|
+
"Wallet Connected"
|
|
2503
|
+
), /* @__PURE__ */ import_react30.default.createElement(
|
|
2504
|
+
import_react_native15.Text,
|
|
2505
|
+
{
|
|
2506
|
+
style: [styles13.connectedText, { color: theme.colors.text }]
|
|
2507
|
+
},
|
|
2508
|
+
"Address: ",
|
|
2509
|
+
address
|
|
2510
|
+
), /* @__PURE__ */ import_react30.default.createElement(Button, { variant: "ghost", size: "sm", onPress: () => disconnect() }, "Disconnect Wallet"), isFetchingChains ? /* @__PURE__ */ import_react30.default.createElement(
|
|
2511
|
+
import_react_native15.Text,
|
|
2512
|
+
{
|
|
2513
|
+
style: [styles13.fetchingText, { color: theme.colors.text }]
|
|
2514
|
+
},
|
|
2515
|
+
"Fetching chains..."
|
|
2516
|
+
) : null), availableChains.length > 0 && address && /* @__PURE__ */ import_react30.default.createElement(
|
|
2517
|
+
import_react_native15.ScrollView,
|
|
2518
|
+
{
|
|
2519
|
+
style: styles13.scrollView,
|
|
2520
|
+
contentContainerStyle: styles13.scrollViewContent,
|
|
2521
|
+
showsVerticalScrollIndicator: true,
|
|
2522
|
+
nestedScrollEnabled: true
|
|
2523
|
+
},
|
|
2524
|
+
/* @__PURE__ */ import_react30.default.createElement(import_react_native15.Text, { style: [styles13.chainTitle, { color: theme.colors.text }] }, "Select Chains to Add:"),
|
|
2525
|
+
/* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, null, /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.chainChips }, availableChains.map((chain) => {
|
|
2526
|
+
const isSelected = selectedChains.has(chain.id);
|
|
2527
|
+
const hasError = chainErrors[chain.id];
|
|
2528
|
+
return /* @__PURE__ */ import_react30.default.createElement(
|
|
2529
|
+
import_react_native15.TouchableOpacity,
|
|
2368
2530
|
{
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
backgroundColor: hasError ? theme.colors.errorLight : isSelected ? theme.colors.primary + "20" : theme.colors.surface,
|
|
2373
|
-
borderColor: hasError ? theme.colors.error : isSelected ? theme.colors.primary : theme.colors.border
|
|
2374
|
-
}
|
|
2375
|
-
]
|
|
2531
|
+
onPress: () => toggleChainSelection(chain.id),
|
|
2532
|
+
style: styles13.chainButton,
|
|
2533
|
+
key: chain.id
|
|
2376
2534
|
},
|
|
2377
|
-
/* @__PURE__ */
|
|
2378
|
-
|
|
2535
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
2536
|
+
import_react_native15.View,
|
|
2379
2537
|
{
|
|
2380
2538
|
style: [
|
|
2381
|
-
styles13.
|
|
2539
|
+
styles13.chainChip,
|
|
2382
2540
|
{
|
|
2383
|
-
|
|
2541
|
+
backgroundColor: hasError ? theme.colors.errorLight : isSelected ? theme.colors.primary + "20" : theme.colors.surface,
|
|
2542
|
+
borderColor: hasError ? theme.colors.error : isSelected ? theme.colors.primary : theme.colors.border
|
|
2384
2543
|
}
|
|
2385
2544
|
]
|
|
2386
2545
|
},
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2546
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
2547
|
+
import_react_native15.Text,
|
|
2548
|
+
{
|
|
2549
|
+
style: [
|
|
2550
|
+
styles13.chainName,
|
|
2551
|
+
{
|
|
2552
|
+
color: hasError ? theme.colors.error : isSelected ? theme.colors.primary : theme.colors.text
|
|
2553
|
+
}
|
|
2554
|
+
]
|
|
2555
|
+
},
|
|
2556
|
+
chain.id
|
|
2557
|
+
),
|
|
2558
|
+
isSelected ? /* @__PURE__ */ import_react30.default.createElement(
|
|
2559
|
+
CloseIcon,
|
|
2560
|
+
{
|
|
2561
|
+
size: 12,
|
|
2562
|
+
color: hasError ? theme.colors.error : theme.colors.primary
|
|
2563
|
+
}
|
|
2564
|
+
) : /* @__PURE__ */ import_react30.default.createElement(
|
|
2565
|
+
PlusIcon,
|
|
2566
|
+
{
|
|
2567
|
+
size: 12,
|
|
2568
|
+
color: theme.colors.textSecondary
|
|
2569
|
+
}
|
|
2570
|
+
)
|
|
2401
2571
|
)
|
|
2402
|
-
)
|
|
2403
|
-
)
|
|
2404
|
-
|
|
2405
|
-
import_react_native14.Text,
|
|
2406
|
-
{
|
|
2407
|
-
style: [
|
|
2408
|
-
styles13.chainErrorsTitle,
|
|
2409
|
-
{ color: theme.colors.error }
|
|
2410
|
-
]
|
|
2411
|
-
},
|
|
2412
|
-
"Errors:"
|
|
2413
|
-
), Object.entries(chainErrors).map(([chainId2, error]) => {
|
|
2414
|
-
const chain = userUsedChains.find(
|
|
2415
|
-
(c) => c.id === chainId2
|
|
2416
|
-
);
|
|
2417
|
-
return /* @__PURE__ */ import_react29.default.createElement(
|
|
2418
|
-
import_react_native14.Text,
|
|
2572
|
+
);
|
|
2573
|
+
})), errorMessage ? /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.errorMessageContainer }, /* @__PURE__ */ import_react30.default.createElement(Alert, { variant: "destructive" }, /* @__PURE__ */ import_react30.default.createElement(AlertDescription, null, errorMessage))) : null, Object.keys(chainErrors || {}).length > 0 && /* @__PURE__ */ import_react30.default.createElement(import_react_native15.View, { style: styles13.chainErrorsContainer }, /* @__PURE__ */ import_react30.default.createElement(
|
|
2574
|
+
import_react_native15.Text,
|
|
2419
2575
|
{
|
|
2420
|
-
key: chainId2,
|
|
2421
2576
|
style: [
|
|
2422
|
-
styles13.
|
|
2577
|
+
styles13.chainErrorsTitle,
|
|
2423
2578
|
{ color: theme.colors.error }
|
|
2424
2579
|
]
|
|
2425
2580
|
},
|
|
2426
|
-
"
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2581
|
+
"Errors:"
|
|
2582
|
+
), Object.entries(chainErrors).map(([chainId, error]) => {
|
|
2583
|
+
const chain = availableChains.find(
|
|
2584
|
+
(c) => c.id === chainId
|
|
2585
|
+
);
|
|
2586
|
+
return /* @__PURE__ */ import_react30.default.createElement(
|
|
2587
|
+
import_react_native15.Text,
|
|
2588
|
+
{
|
|
2589
|
+
key: chainId,
|
|
2590
|
+
style: [
|
|
2591
|
+
styles13.chainErrorItem,
|
|
2592
|
+
{ color: theme.colors.error }
|
|
2593
|
+
]
|
|
2594
|
+
},
|
|
2595
|
+
"\u2022 ",
|
|
2596
|
+
chain?.name ?? chainId,
|
|
2597
|
+
": ",
|
|
2598
|
+
String(error)
|
|
2599
|
+
);
|
|
2600
|
+
})))
|
|
2601
|
+
))), availableChains.length > 0 && address && /* @__PURE__ */ import_react30.default.createElement(ModalFooter, { style: { paddingVertical: 8 } }, /* @__PURE__ */ import_react30.default.createElement(
|
|
2432
2602
|
Button,
|
|
2433
2603
|
{
|
|
2434
2604
|
variant: "outline",
|
|
2435
2605
|
size: "lg",
|
|
2436
2606
|
onPress: onSubmitWalletConnect,
|
|
2437
2607
|
loading: isLoading,
|
|
2438
|
-
disabled: isLoading || !!address &&
|
|
2608
|
+
disabled: isLoading || !!address && availableChains.length > 0 && selectedChains.size === 0,
|
|
2439
2609
|
style: styles13.button
|
|
2440
2610
|
},
|
|
2441
2611
|
selectedChains.size > 0 ? `Add ${selectedChains.size} Chain${selectedChains.size > 1 ? "s" : ""}` : "Add Integration"
|
|
2442
|
-
), /* @__PURE__ */
|
|
2612
|
+
), /* @__PURE__ */ import_react30.default.createElement(Footer, null)));
|
|
2443
2613
|
}
|
|
2444
|
-
var styles13 =
|
|
2445
|
-
|
|
2614
|
+
var styles13 = import_react_native15.StyleSheet.create({
|
|
2615
|
+
connectedContainer: {
|
|
2616
|
+
flex: 1
|
|
2617
|
+
},
|
|
2618
|
+
connectedHeader: {
|
|
2619
|
+
marginBottom: 8
|
|
2620
|
+
},
|
|
2621
|
+
connectedTitle: { fontSize: 12, fontWeight: "600", marginBottom: 4 },
|
|
2446
2622
|
connectedText: { fontSize: 14, marginBottom: 4 },
|
|
2623
|
+
fetchingText: { fontSize: 12, marginBottom: 4, textAlign: "center" },
|
|
2447
2624
|
infoText: {
|
|
2448
2625
|
fontSize: 16,
|
|
2449
2626
|
fontWeight: "600",
|
|
2450
2627
|
marginBottom: 8,
|
|
2451
2628
|
textAlign: "center"
|
|
2452
2629
|
},
|
|
2630
|
+
scrollView: {
|
|
2631
|
+
flex: 1
|
|
2632
|
+
},
|
|
2453
2633
|
scrollViewContent: {
|
|
2454
|
-
paddingBottom:
|
|
2634
|
+
paddingBottom: 40,
|
|
2455
2635
|
flexGrow: 1
|
|
2456
2636
|
},
|
|
2637
|
+
errorMessageContainer: {
|
|
2638
|
+
marginTop: 16
|
|
2639
|
+
},
|
|
2457
2640
|
headerContent: {
|
|
2458
2641
|
flexDirection: "row",
|
|
2459
2642
|
alignItems: "center"
|
|
@@ -2472,17 +2655,13 @@ var styles13 = import_react_native14.StyleSheet.create({
|
|
|
2472
2655
|
contentContainer: {
|
|
2473
2656
|
padding: 20,
|
|
2474
2657
|
// theme.spacing.xl
|
|
2475
|
-
paddingBottom:
|
|
2658
|
+
paddingBottom: 20,
|
|
2476
2659
|
width: "100%",
|
|
2477
2660
|
overflow: "hidden",
|
|
2478
2661
|
alignSelf: "center",
|
|
2479
2662
|
flexDirection: "column",
|
|
2480
2663
|
flex: 1
|
|
2481
2664
|
},
|
|
2482
|
-
chainSelection: {
|
|
2483
|
-
marginBottom: 16
|
|
2484
|
-
// theme.spacing.lg
|
|
2485
|
-
},
|
|
2486
2665
|
chainTitle: {
|
|
2487
2666
|
fontSize: 14,
|
|
2488
2667
|
// theme.fontSize.md
|
|
@@ -2534,9 +2713,7 @@ var styles13 = import_react_native14.StyleSheet.create({
|
|
|
2534
2713
|
// theme.spacing.xs
|
|
2535
2714
|
},
|
|
2536
2715
|
button: {
|
|
2537
|
-
width: "100%"
|
|
2538
|
-
marginTop: 16
|
|
2539
|
-
// theme.spacing.lg - consistent button spacing
|
|
2716
|
+
width: "100%"
|
|
2540
2717
|
},
|
|
2541
2718
|
emptyState: {
|
|
2542
2719
|
flex: 1,
|
|
@@ -2550,40 +2727,70 @@ var styles13 = import_react_native14.StyleSheet.create({
|
|
|
2550
2727
|
},
|
|
2551
2728
|
emptyStateButton: {
|
|
2552
2729
|
marginTop: 8
|
|
2730
|
+
},
|
|
2731
|
+
header: {
|
|
2732
|
+
flexDirection: "row",
|
|
2733
|
+
justifyContent: "center",
|
|
2734
|
+
alignItems: "center",
|
|
2735
|
+
marginBottom: 16
|
|
2736
|
+
// theme.spacing.lg
|
|
2737
|
+
},
|
|
2738
|
+
logo: {
|
|
2739
|
+
width: 32,
|
|
2740
|
+
height: 32,
|
|
2741
|
+
borderRadius: 8
|
|
2742
|
+
// theme.borderRadius.sm
|
|
2743
|
+
},
|
|
2744
|
+
logoPlaceholder: {
|
|
2745
|
+
width: 32,
|
|
2746
|
+
height: 32,
|
|
2747
|
+
borderRadius: 8,
|
|
2748
|
+
// theme.borderRadius.sm
|
|
2749
|
+
alignItems: "center",
|
|
2750
|
+
justifyContent: "center"
|
|
2751
|
+
},
|
|
2752
|
+
name: {
|
|
2753
|
+
fontSize: 16,
|
|
2754
|
+
// theme.fontSize.lg
|
|
2755
|
+
fontWeight: "600",
|
|
2756
|
+
marginLeft: 12,
|
|
2757
|
+
// theme.spacing.md
|
|
2758
|
+
textTransform: "capitalize"
|
|
2553
2759
|
}
|
|
2554
2760
|
});
|
|
2555
2761
|
|
|
2556
2762
|
// src/molecules/IntegrationForm.tsx
|
|
2557
|
-
var
|
|
2558
|
-
var
|
|
2763
|
+
var import_react31 = __toESM(require("react"));
|
|
2764
|
+
var import_react_native16 = require("react-native");
|
|
2559
2765
|
var IntegrationForm = ({
|
|
2560
2766
|
metadata,
|
|
2561
2767
|
onAddHandle,
|
|
2562
2768
|
open,
|
|
2563
2769
|
setAddIntegrationMode,
|
|
2564
|
-
handleClose
|
|
2770
|
+
handleClose,
|
|
2771
|
+
providersList
|
|
2565
2772
|
}) => {
|
|
2566
2773
|
const { clientId, linkToken, user } = useKryptosConnect();
|
|
2567
2774
|
const theme = useTheme();
|
|
2568
|
-
const [isLoading, setIsLoading] =
|
|
2569
|
-
const [isFetchingChains, setIsFetchingChains] =
|
|
2570
|
-
const [userUsedChains, setUserUsedChains] =
|
|
2571
|
-
const [selectedChains, setSelectedChains] =
|
|
2775
|
+
const [isLoading, setIsLoading] = import_react31.default.useState(false);
|
|
2776
|
+
const [isFetchingChains, setIsFetchingChains] = import_react31.default.useState(false);
|
|
2777
|
+
const [userUsedChains, setUserUsedChains] = import_react31.default.useState([]);
|
|
2778
|
+
const [selectedChains, setSelectedChains] = import_react31.default.useState(
|
|
2572
2779
|
/* @__PURE__ */ new Set()
|
|
2573
2780
|
);
|
|
2574
|
-
const [chainErrors, setChainErrors] =
|
|
2781
|
+
const [chainErrors, setChainErrors] = import_react31.default.useState(
|
|
2575
2782
|
{}
|
|
2576
2783
|
);
|
|
2577
|
-
const [errorMessage, setErrorMessage] =
|
|
2578
|
-
const [formValues, setFormValues] =
|
|
2784
|
+
const [errorMessage, setErrorMessage] = import_react31.default.useState("");
|
|
2785
|
+
const [formValues, setFormValues] = import_react31.default.useState({
|
|
2579
2786
|
address: "",
|
|
2580
2787
|
account_name: "",
|
|
2581
2788
|
api_key: "",
|
|
2582
2789
|
secret_key: "",
|
|
2583
2790
|
password: ""
|
|
2584
2791
|
});
|
|
2585
|
-
const [formErrors, setFormErrors] =
|
|
2586
|
-
|
|
2792
|
+
const [formErrors, setFormErrors] = import_react31.default.useState({});
|
|
2793
|
+
import_react31.default.useEffect(() => {
|
|
2587
2794
|
if (!formValues.address || !formValues.address.trim()) {
|
|
2588
2795
|
setUserUsedChains([]);
|
|
2589
2796
|
setSelectedChains(/* @__PURE__ */ new Set());
|
|
@@ -2709,9 +2916,6 @@ var IntegrationForm = ({
|
|
|
2709
2916
|
clientId,
|
|
2710
2917
|
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2711
2918
|
},
|
|
2712
|
-
metadata: {
|
|
2713
|
-
environment: "sandbox"
|
|
2714
|
-
},
|
|
2715
2919
|
addedOn: (/* @__PURE__ */ new Date()).getTime(),
|
|
2716
2920
|
default_chain: chain.name,
|
|
2717
2921
|
default_chain_logo: chain.logo || null,
|
|
@@ -2795,7 +2999,7 @@ var IntegrationForm = ({
|
|
|
2795
2999
|
isNftSupported: metadata.isEvmWallet || metadata.nftSupport || false
|
|
2796
3000
|
};
|
|
2797
3001
|
if (metadata.community_id) {
|
|
2798
|
-
data.chainId =
|
|
3002
|
+
data.chainId = metadata.community_id;
|
|
2799
3003
|
}
|
|
2800
3004
|
if (formValues.address) data.address = formValues.address;
|
|
2801
3005
|
if (formValues.account_name) data.accountName = formValues.account_name;
|
|
@@ -2830,24 +3034,24 @@ var IntegrationForm = ({
|
|
|
2830
3034
|
};
|
|
2831
3035
|
const hasNoFields = !metadata.password && !metadata.secret_key && !metadata.api_key && !metadata.address && !metadata.account_name;
|
|
2832
3036
|
const shouldShowFormFields = metadata.password || metadata.secret_key || metadata.api_key || metadata.address || metadata.account_name;
|
|
2833
|
-
const renderLogo = () => metadata.logo ? /* @__PURE__ */
|
|
2834
|
-
|
|
3037
|
+
const renderLogo = () => metadata.logo ? isSvgUrl(metadata.logo) ? /* @__PURE__ */ import_react31.default.createElement(RemoteSvg, { uri: metadata.logo }) : /* @__PURE__ */ import_react31.default.createElement(
|
|
3038
|
+
import_react_native16.Image,
|
|
2835
3039
|
{
|
|
2836
3040
|
source: { uri: metadata.logo },
|
|
2837
3041
|
style: styles14.logo,
|
|
2838
3042
|
resizeMode: "contain"
|
|
2839
3043
|
}
|
|
2840
|
-
) : /* @__PURE__ */
|
|
2841
|
-
|
|
3044
|
+
) : /* @__PURE__ */ import_react31.default.createElement(
|
|
3045
|
+
import_react_native16.View,
|
|
2842
3046
|
{
|
|
2843
3047
|
style: [
|
|
2844
3048
|
styles14.logoPlaceholder,
|
|
2845
3049
|
{ backgroundColor: theme.colors.surface }
|
|
2846
3050
|
]
|
|
2847
3051
|
},
|
|
2848
|
-
/* @__PURE__ */
|
|
3052
|
+
/* @__PURE__ */ import_react31.default.createElement(import_react_native16.Text, { style: { color: theme.colors.text } }, metadata.name?.charAt(0) || "?")
|
|
2849
3053
|
);
|
|
2850
|
-
const renderInput = (key, props) => /* @__PURE__ */
|
|
3054
|
+
const renderInput = (key, props) => /* @__PURE__ */ import_react31.default.createElement(
|
|
2851
3055
|
Input,
|
|
2852
3056
|
{
|
|
2853
3057
|
placeholder: props.placeholder,
|
|
@@ -2859,19 +3063,19 @@ var IntegrationForm = ({
|
|
|
2859
3063
|
secureTextEntry: props.secureTextEntry
|
|
2860
3064
|
}
|
|
2861
3065
|
);
|
|
2862
|
-
const renderErrorAlert = () => errorMessage ? /* @__PURE__ */
|
|
2863
|
-
const renderChainSelection = () => userUsedChains.length > 0 && formValues.address && /* @__PURE__ */
|
|
3066
|
+
const renderErrorAlert = () => errorMessage ? /* @__PURE__ */ import_react31.default.createElement(Alert, { variant: "destructive" }, /* @__PURE__ */ import_react31.default.createElement(AlertDescription, null, errorMessage)) : null;
|
|
3067
|
+
const renderChainSelection = () => userUsedChains.length > 0 && formValues.address && /* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles14.chainSelection }, /* @__PURE__ */ import_react31.default.createElement(import_react_native16.Text, { style: [styles14.chainTitle, { color: theme.colors.text }] }, "Select Chains to Add:"), /* @__PURE__ */ import_react31.default.createElement(import_react_native16.ScrollView, { contentContainerStyle: styles14.scrollViewContent }, /* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles14.chainChips }, userUsedChains.map((chain) => {
|
|
2864
3068
|
const isSelected = selectedChains.has(chain.id);
|
|
2865
3069
|
const hasError = chainErrors[chain.id];
|
|
2866
|
-
return /* @__PURE__ */
|
|
2867
|
-
|
|
3070
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
3071
|
+
import_react_native16.TouchableOpacity,
|
|
2868
3072
|
{
|
|
2869
3073
|
onPress: () => toggleChainSelection(chain.id),
|
|
2870
3074
|
style: styles14.chainButton,
|
|
2871
3075
|
key: chain.id
|
|
2872
3076
|
},
|
|
2873
|
-
/* @__PURE__ */
|
|
2874
|
-
|
|
3077
|
+
/* @__PURE__ */ import_react31.default.createElement(
|
|
3078
|
+
import_react_native16.View,
|
|
2875
3079
|
{
|
|
2876
3080
|
style: [
|
|
2877
3081
|
styles14.chainChip,
|
|
@@ -2881,8 +3085,8 @@ var IntegrationForm = ({
|
|
|
2881
3085
|
}
|
|
2882
3086
|
]
|
|
2883
3087
|
},
|
|
2884
|
-
/* @__PURE__ */
|
|
2885
|
-
|
|
3088
|
+
/* @__PURE__ */ import_react31.default.createElement(
|
|
3089
|
+
import_react_native16.Text,
|
|
2886
3090
|
{
|
|
2887
3091
|
style: [
|
|
2888
3092
|
styles14.chainName,
|
|
@@ -2893,25 +3097,25 @@ var IntegrationForm = ({
|
|
|
2893
3097
|
},
|
|
2894
3098
|
chain.name
|
|
2895
3099
|
),
|
|
2896
|
-
isSelected ? /* @__PURE__ */
|
|
3100
|
+
isSelected ? /* @__PURE__ */ import_react31.default.createElement(
|
|
2897
3101
|
CloseIcon,
|
|
2898
3102
|
{
|
|
2899
3103
|
size: 12,
|
|
2900
3104
|
color: hasError ? theme.colors.error : theme.colors.primary
|
|
2901
3105
|
}
|
|
2902
|
-
) : /* @__PURE__ */
|
|
3106
|
+
) : /* @__PURE__ */ import_react31.default.createElement(PlusIcon, { size: 12, color: theme.colors.textSecondary })
|
|
2903
3107
|
)
|
|
2904
3108
|
);
|
|
2905
|
-
}))), Object.keys(chainErrors).length > 0 && /* @__PURE__ */
|
|
2906
|
-
|
|
3109
|
+
}))), Object.keys(chainErrors).length > 0 && /* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles14.chainErrorsContainer }, /* @__PURE__ */ import_react31.default.createElement(
|
|
3110
|
+
import_react_native16.Text,
|
|
2907
3111
|
{
|
|
2908
3112
|
style: [styles14.chainErrorsTitle, { color: theme.colors.error }]
|
|
2909
3113
|
},
|
|
2910
3114
|
"Errors:"
|
|
2911
3115
|
), Object.entries(chainErrors).map(([chainId, error]) => {
|
|
2912
3116
|
const chain = userUsedChains.find((c) => c.id === chainId);
|
|
2913
|
-
return /* @__PURE__ */
|
|
2914
|
-
|
|
3117
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
3118
|
+
import_react_native16.Text,
|
|
2915
3119
|
{
|
|
2916
3120
|
key: chainId,
|
|
2917
3121
|
style: [styles14.chainErrorItem, { color: theme.colors.error }]
|
|
@@ -2922,7 +3126,7 @@ var IntegrationForm = ({
|
|
|
2922
3126
|
error
|
|
2923
3127
|
);
|
|
2924
3128
|
})));
|
|
2925
|
-
const renderFormBlock = () => /* @__PURE__ */
|
|
3129
|
+
const renderFormBlock = () => /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, /* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles14.header }, renderLogo(), /* @__PURE__ */ import_react31.default.createElement(import_react_native16.Text, { style: [styles14.name, { color: theme.colors.text }] }, metadata.name)), renderErrorAlert(), shouldShowFormFields && /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, metadata.address && /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, renderInput("address", {
|
|
2926
3130
|
placeholder: "Enter address",
|
|
2927
3131
|
autoCapitalize: "none",
|
|
2928
3132
|
autoCorrect: false
|
|
@@ -2938,16 +3142,16 @@ var IntegrationForm = ({
|
|
|
2938
3142
|
}), metadata.password && renderInput("password", {
|
|
2939
3143
|
placeholder: "Enter Password",
|
|
2940
3144
|
secureTextEntry: true
|
|
2941
|
-
})), hasNoFields && !metadata?.isWalletConnectSupported && /* @__PURE__ */
|
|
3145
|
+
})), hasNoFields && !metadata?.isWalletConnectSupported && /* @__PURE__ */ import_react31.default.createElement(Alert, { variant: "default", style: { marginTop: 12 } }, /* @__PURE__ */ import_react31.default.createElement(AlertDescription, null, "This integration is not supported here yet \u2014 try using it through our Kryptos Platform.")));
|
|
2942
3146
|
const addIntegrationLabel = formValues.address && userUsedChains.length > 0 && selectedChains.size > 0 ? `Add ${selectedChains.size} Chain${selectedChains.size !== 1 ? "s" : ""}` : "Add Integration";
|
|
2943
|
-
return /* @__PURE__ */
|
|
2944
|
-
|
|
3147
|
+
return /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, !metadata?.isWalletConnectSupported ? /* @__PURE__ */ import_react31.default.createElement(Modal, { isOpen: open, onClose: handleClose, size: "full" }, /* @__PURE__ */ import_react31.default.createElement(ModalHeader, { onClose: handleClose }, /* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles14.headerContent }, /* @__PURE__ */ import_react31.default.createElement(
|
|
3148
|
+
import_react_native16.TouchableOpacity,
|
|
2945
3149
|
{
|
|
2946
3150
|
onPress: () => setAddIntegrationMode(null),
|
|
2947
3151
|
style: styles14.backButton
|
|
2948
3152
|
},
|
|
2949
|
-
/* @__PURE__ */
|
|
2950
|
-
), /* @__PURE__ */
|
|
3153
|
+
/* @__PURE__ */ import_react31.default.createElement(ArrowLeftIcon, { size: 20, color: theme.colors.text })
|
|
3154
|
+
), /* @__PURE__ */ import_react31.default.createElement(import_react_native16.Text, { style: [styles14.headerTitle, { color: theme.colors.text }] }, "Integration"))), /* @__PURE__ */ import_react31.default.createElement(ModalBody, { scrollable: false, style: styles14.contentContainer }, renderFormBlock()), !hasNoFields && /* @__PURE__ */ import_react31.default.createElement(ModalFooter, { style: { paddingVertical: 8 } }, /* @__PURE__ */ import_react31.default.createElement(
|
|
2951
3155
|
Button,
|
|
2952
3156
|
{
|
|
2953
3157
|
variant: "outline",
|
|
@@ -2958,7 +3162,7 @@ var IntegrationForm = ({
|
|
|
2958
3162
|
style: styles14.button
|
|
2959
3163
|
},
|
|
2960
3164
|
addIntegrationLabel
|
|
2961
|
-
), /* @__PURE__ */
|
|
3165
|
+
), /* @__PURE__ */ import_react31.default.createElement(Footer, null))) : /* @__PURE__ */ import_react31.default.createElement(
|
|
2962
3166
|
WalletConnectComponent,
|
|
2963
3167
|
{
|
|
2964
3168
|
integration: metadata,
|
|
@@ -2966,11 +3170,12 @@ var IntegrationForm = ({
|
|
|
2966
3170
|
onAddHandle,
|
|
2967
3171
|
modalOpen: open,
|
|
2968
3172
|
setAddIntegrationMode,
|
|
2969
|
-
handleClose
|
|
3173
|
+
handleClose,
|
|
3174
|
+
providersList
|
|
2970
3175
|
}
|
|
2971
3176
|
));
|
|
2972
3177
|
};
|
|
2973
|
-
var styles14 =
|
|
3178
|
+
var styles14 = import_react_native16.StyleSheet.create({
|
|
2974
3179
|
scrollViewContent: {
|
|
2975
3180
|
flexGrow: 1,
|
|
2976
3181
|
paddingBottom: 100
|
|
@@ -3099,14 +3304,14 @@ var Integration = ({
|
|
|
3099
3304
|
}) => {
|
|
3100
3305
|
const { appName, linkToken } = useKryptosConnect();
|
|
3101
3306
|
const theme = useTheme();
|
|
3102
|
-
const [addIntegrationMode, setAddIntegrationMode] =
|
|
3103
|
-
const [query, setQuery] =
|
|
3104
|
-
const [activeTab, setActiveTab] =
|
|
3105
|
-
const [supportedProviders, setSupportedProviders] =
|
|
3106
|
-
const [addedIntegrations, setAddedIntegrations] =
|
|
3107
|
-
const [existingIntegrations, setExistingIntegrations] =
|
|
3108
|
-
const [isLoading, setIsLoading] =
|
|
3109
|
-
const [errorMessage, setErrorMessage] =
|
|
3307
|
+
const [addIntegrationMode, setAddIntegrationMode] = import_react32.default.useState(null);
|
|
3308
|
+
const [query, setQuery] = import_react32.default.useState("");
|
|
3309
|
+
const [activeTab, setActiveTab] = import_react32.default.useState("all");
|
|
3310
|
+
const [supportedProviders, setSupportedProviders] = import_react32.default.useState([]);
|
|
3311
|
+
const [addedIntegrations, setAddedIntegrations] = import_react32.default.useState([]);
|
|
3312
|
+
const [existingIntegrations, setExistingIntegrations] = import_react32.default.useState([]);
|
|
3313
|
+
const [isLoading, setIsLoading] = import_react32.default.useState(false);
|
|
3314
|
+
const [errorMessage, setErrorMessage] = import_react32.default.useState("");
|
|
3110
3315
|
const handleClose = () => {
|
|
3111
3316
|
onClose();
|
|
3112
3317
|
};
|
|
@@ -3137,13 +3342,13 @@ var Integration = ({
|
|
|
3137
3342
|
setIsLoading(false);
|
|
3138
3343
|
}
|
|
3139
3344
|
};
|
|
3140
|
-
|
|
3345
|
+
import_react32.default.useEffect(() => {
|
|
3141
3346
|
if (linkToken) {
|
|
3142
3347
|
fetchSupportedProviders();
|
|
3143
3348
|
fetchExistingIntegrations();
|
|
3144
3349
|
}
|
|
3145
3350
|
}, [linkToken]);
|
|
3146
|
-
const isIntegrationAdded =
|
|
3351
|
+
const isIntegrationAdded = import_react32.default.useCallback(
|
|
3147
3352
|
(publicName) => {
|
|
3148
3353
|
const integrations = [...addedIntegrations, ...existingIntegrations];
|
|
3149
3354
|
return integrations.some(
|
|
@@ -3152,7 +3357,7 @@ var Integration = ({
|
|
|
3152
3357
|
},
|
|
3153
3358
|
[addedIntegrations, existingIntegrations]
|
|
3154
3359
|
);
|
|
3155
|
-
const getIntegrationCount =
|
|
3360
|
+
const getIntegrationCount = import_react32.default.useCallback(
|
|
3156
3361
|
(publicName) => {
|
|
3157
3362
|
const integrations = [...addedIntegrations, ...existingIntegrations];
|
|
3158
3363
|
return integrations.filter(
|
|
@@ -3161,7 +3366,7 @@ var Integration = ({
|
|
|
3161
3366
|
},
|
|
3162
3367
|
[addedIntegrations, existingIntegrations]
|
|
3163
3368
|
);
|
|
3164
|
-
const filteredResults =
|
|
3369
|
+
const filteredResults = import_react32.default.useMemo(() => {
|
|
3165
3370
|
let filtered = supportedProviders;
|
|
3166
3371
|
if (activeTab !== "all") {
|
|
3167
3372
|
filtered = filtered.filter((provider) => provider.type === activeTab);
|
|
@@ -3201,8 +3406,8 @@ var Integration = ({
|
|
|
3201
3406
|
setIsLoading(false);
|
|
3202
3407
|
}
|
|
3203
3408
|
};
|
|
3204
|
-
const renderProviderItem = ({ item }) => /* @__PURE__ */
|
|
3205
|
-
|
|
3409
|
+
const renderProviderItem = ({ item }) => /* @__PURE__ */ import_react32.default.createElement(
|
|
3410
|
+
import_react_native17.TouchableOpacity,
|
|
3206
3411
|
{
|
|
3207
3412
|
style: [
|
|
3208
3413
|
styles15.providerItem,
|
|
@@ -3214,25 +3419,25 @@ var Integration = ({
|
|
|
3214
3419
|
onPress: () => setAddIntegrationMode(item),
|
|
3215
3420
|
activeOpacity: 0.7
|
|
3216
3421
|
},
|
|
3217
|
-
/* @__PURE__ */
|
|
3218
|
-
|
|
3422
|
+
/* @__PURE__ */ import_react32.default.createElement(import_react_native17.View, { style: styles15.providerInfo }, item?.logo ? isSvgUrl(item?.logo) ? /* @__PURE__ */ import_react32.default.createElement(RemoteSvg, { uri: item?.logo }) : /* @__PURE__ */ import_react32.default.createElement(
|
|
3423
|
+
import_react_native17.Image,
|
|
3219
3424
|
{
|
|
3220
3425
|
source: { uri: item?.logo },
|
|
3221
3426
|
style: styles15.providerLogo,
|
|
3222
3427
|
resizeMode: "contain"
|
|
3223
3428
|
}
|
|
3224
|
-
) : /* @__PURE__ */
|
|
3225
|
-
|
|
3429
|
+
) : /* @__PURE__ */ import_react32.default.createElement(
|
|
3430
|
+
import_react_native17.View,
|
|
3226
3431
|
{
|
|
3227
3432
|
style: [
|
|
3228
3433
|
styles15.providerLogoPlaceholder,
|
|
3229
3434
|
{ backgroundColor: theme.colors.surfaceSecondary }
|
|
3230
3435
|
]
|
|
3231
3436
|
},
|
|
3232
|
-
/* @__PURE__ */
|
|
3233
|
-
), /* @__PURE__ */
|
|
3234
|
-
isIntegrationAdded(item?.public_name) && /* @__PURE__ */
|
|
3235
|
-
|
|
3437
|
+
/* @__PURE__ */ import_react32.default.createElement(import_react_native17.Text, { style: { color: theme.colors.text } }, item?.name?.charAt(0) || "?")
|
|
3438
|
+
), /* @__PURE__ */ import_react32.default.createElement(import_react_native17.Text, { style: [styles15.providerName, { color: theme.colors.text }] }, item?.name + "\u200B")),
|
|
3439
|
+
isIntegrationAdded(item?.public_name) && /* @__PURE__ */ import_react32.default.createElement(import_react_native17.View, { style: styles15.providerStatus }, /* @__PURE__ */ import_react32.default.createElement(CheckCircleIcon, { size: 18, color: theme.colors.success }), /* @__PURE__ */ import_react32.default.createElement(
|
|
3440
|
+
import_react_native17.Text,
|
|
3236
3441
|
{
|
|
3237
3442
|
style: [
|
|
3238
3443
|
styles15.providerCount,
|
|
@@ -3242,16 +3447,70 @@ var Integration = ({
|
|
|
3242
3447
|
getIntegrationCount(item?.public_name)
|
|
3243
3448
|
))
|
|
3244
3449
|
);
|
|
3245
|
-
const renderSkeletonItem = () => /* @__PURE__ */
|
|
3246
|
-
return /* @__PURE__ */
|
|
3247
|
-
|
|
3450
|
+
const renderSkeletonItem = () => /* @__PURE__ */ import_react32.default.createElement(SkeletonItem_default, null);
|
|
3451
|
+
return /* @__PURE__ */ import_react32.default.createElement(import_react32.default.Fragment, null, !addIntegrationMode ? /* @__PURE__ */ import_react32.default.createElement(Modal, { isOpen: open, onClose: handleClose, size: "full" }, /* @__PURE__ */ import_react32.default.createElement(ModalHeader, { onClose: handleClose }, /* @__PURE__ */ import_react32.default.createElement(import_react_native17.View, { style: styles15.headerContent }, addIntegrationMode && /* @__PURE__ */ import_react32.default.createElement(
|
|
3452
|
+
import_react_native17.TouchableOpacity,
|
|
3248
3453
|
{
|
|
3249
3454
|
onPress: () => setAddIntegrationMode(null),
|
|
3250
3455
|
style: styles15.backButton
|
|
3251
3456
|
},
|
|
3252
|
-
/* @__PURE__ */
|
|
3253
|
-
), /* @__PURE__ */
|
|
3254
|
-
|
|
3457
|
+
/* @__PURE__ */ import_react32.default.createElement(ArrowLeftIcon, { size: 20, color: theme.colors.text })
|
|
3458
|
+
), /* @__PURE__ */ import_react32.default.createElement(import_react_native17.Text, { style: [styles15.headerTitle, { color: theme.colors.text }] }, "Integration"))), /* @__PURE__ */ import_react32.default.createElement(ModalBody, { scrollable: false, style: styles15.noPadding }, /* @__PURE__ */ import_react32.default.createElement(import_react_native17.View, { style: styles15.container }, /* @__PURE__ */ import_react32.default.createElement(import_react_native17.View, { style: styles15.headerSection }, /* @__PURE__ */ import_react32.default.createElement(ConnectLogo, null), /* @__PURE__ */ import_react32.default.createElement(import_react_native17.Text, { style: [styles15.title, { color: theme.colors.text }] }, "Select an account to link to ", appName)), /* @__PURE__ */ import_react32.default.createElement(
|
|
3459
|
+
import_react_native17.View,
|
|
3460
|
+
{
|
|
3461
|
+
style: {
|
|
3462
|
+
paddingHorizontal: theme.spacing.xl,
|
|
3463
|
+
paddingVertical: theme.spacing.sm + 2,
|
|
3464
|
+
backgroundColor: theme.colors.background,
|
|
3465
|
+
zIndex: 10
|
|
3466
|
+
}
|
|
3467
|
+
},
|
|
3468
|
+
/* @__PURE__ */ import_react32.default.createElement(
|
|
3469
|
+
Input,
|
|
3470
|
+
{
|
|
3471
|
+
value: query,
|
|
3472
|
+
onChangeText: setQuery,
|
|
3473
|
+
placeholder: "Search Integrations...",
|
|
3474
|
+
containerStyle: styles15.searchInput
|
|
3475
|
+
}
|
|
3476
|
+
),
|
|
3477
|
+
/* @__PURE__ */ import_react32.default.createElement(import_react_native17.View, { style: styles15.tabsContainer }, [
|
|
3478
|
+
{ label: "All", value: "all" },
|
|
3479
|
+
{ label: "Exchanges", value: "exchange" },
|
|
3480
|
+
{ label: "Blockchains", value: "blockchain" },
|
|
3481
|
+
{ label: "Wallets", value: "wallet" }
|
|
3482
|
+
].map((tab) => /* @__PURE__ */ import_react32.default.createElement(
|
|
3483
|
+
import_react_native17.TouchableOpacity,
|
|
3484
|
+
{
|
|
3485
|
+
key: tab.value,
|
|
3486
|
+
style: [
|
|
3487
|
+
styles15.tab,
|
|
3488
|
+
{
|
|
3489
|
+
backgroundColor: activeTab === tab.value ? theme.colors.primary : theme.colors.surface,
|
|
3490
|
+
borderColor: theme.colors.border
|
|
3491
|
+
}
|
|
3492
|
+
],
|
|
3493
|
+
onPress: () => {
|
|
3494
|
+
setActiveTab(
|
|
3495
|
+
tab.value
|
|
3496
|
+
);
|
|
3497
|
+
}
|
|
3498
|
+
},
|
|
3499
|
+
/* @__PURE__ */ import_react32.default.createElement(
|
|
3500
|
+
import_react_native17.Text,
|
|
3501
|
+
{
|
|
3502
|
+
style: [
|
|
3503
|
+
styles15.tabText,
|
|
3504
|
+
{
|
|
3505
|
+
color: activeTab === tab.value ? theme.colors.white : theme.colors.text
|
|
3506
|
+
}
|
|
3507
|
+
]
|
|
3508
|
+
},
|
|
3509
|
+
tab.label
|
|
3510
|
+
)
|
|
3511
|
+
)))
|
|
3512
|
+
), /* @__PURE__ */ import_react32.default.createElement(
|
|
3513
|
+
import_react_native17.FlatList,
|
|
3255
3514
|
{
|
|
3256
3515
|
data: isLoading ? Array.from({ length: 8 }, (_, i) => ({
|
|
3257
3516
|
id: `skeleton-${i}`,
|
|
@@ -3267,62 +3526,8 @@ var Integration = ({
|
|
|
3267
3526
|
{ paddingHorizontal: theme.spacing.xl }
|
|
3268
3527
|
],
|
|
3269
3528
|
showsVerticalScrollIndicator: false,
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
{
|
|
3273
|
-
style: {
|
|
3274
|
-
paddingVertical: theme.spacing.sm + 2,
|
|
3275
|
-
backgroundColor: theme.colors.background,
|
|
3276
|
-
zIndex: 10
|
|
3277
|
-
}
|
|
3278
|
-
},
|
|
3279
|
-
/* @__PURE__ */ import_react31.default.createElement(
|
|
3280
|
-
Input,
|
|
3281
|
-
{
|
|
3282
|
-
value: query,
|
|
3283
|
-
onChangeText: setQuery,
|
|
3284
|
-
placeholder: "Search Integrations...",
|
|
3285
|
-
containerStyle: styles15.searchInput
|
|
3286
|
-
}
|
|
3287
|
-
),
|
|
3288
|
-
/* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles15.tabsContainer }, [
|
|
3289
|
-
{ label: "All", value: "all" },
|
|
3290
|
-
{ label: "Exchanges", value: "exchange" },
|
|
3291
|
-
{ label: "Blockchains", value: "blockchain" },
|
|
3292
|
-
{ label: "Wallets", value: "wallet" }
|
|
3293
|
-
].map((tab) => /* @__PURE__ */ import_react31.default.createElement(
|
|
3294
|
-
import_react_native16.TouchableOpacity,
|
|
3295
|
-
{
|
|
3296
|
-
key: tab.value,
|
|
3297
|
-
style: [
|
|
3298
|
-
styles15.tab,
|
|
3299
|
-
{
|
|
3300
|
-
backgroundColor: activeTab === tab.value ? theme.colors.primary : theme.colors.surface,
|
|
3301
|
-
borderColor: theme.colors.border
|
|
3302
|
-
}
|
|
3303
|
-
],
|
|
3304
|
-
onPress: () => setActiveTab(
|
|
3305
|
-
tab.value
|
|
3306
|
-
),
|
|
3307
|
-
activeOpacity: 0.7
|
|
3308
|
-
},
|
|
3309
|
-
/* @__PURE__ */ import_react31.default.createElement(
|
|
3310
|
-
import_react_native16.Text,
|
|
3311
|
-
{
|
|
3312
|
-
style: [
|
|
3313
|
-
styles15.tabText,
|
|
3314
|
-
{
|
|
3315
|
-
color: activeTab === tab.value ? theme.colors.white : theme.colors.text
|
|
3316
|
-
}
|
|
3317
|
-
]
|
|
3318
|
-
},
|
|
3319
|
-
tab.label
|
|
3320
|
-
)
|
|
3321
|
-
)))
|
|
3322
|
-
),
|
|
3323
|
-
stickyHeaderIndices: [0],
|
|
3324
|
-
ListEmptyComponent: /* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles15.emptyContainer }, !isLoading && /* @__PURE__ */ import_react31.default.createElement(
|
|
3325
|
-
import_react_native16.Text,
|
|
3529
|
+
ListEmptyComponent: /* @__PURE__ */ import_react32.default.createElement(import_react_native17.View, { style: styles15.emptyContainer }, !isLoading && /* @__PURE__ */ import_react32.default.createElement(
|
|
3530
|
+
import_react_native17.Text,
|
|
3326
3531
|
{
|
|
3327
3532
|
style: [
|
|
3328
3533
|
styles15.emptyText,
|
|
@@ -3332,7 +3537,7 @@ var Integration = ({
|
|
|
3332
3537
|
query ? "No search results found" : "No supported integrations found"
|
|
3333
3538
|
))
|
|
3334
3539
|
}
|
|
3335
|
-
), errorMessage && /* @__PURE__ */
|
|
3540
|
+
), errorMessage && /* @__PURE__ */ import_react32.default.createElement(import_react_native17.View, { style: styles15.errorContainer }, /* @__PURE__ */ import_react32.default.createElement(Alert, { variant: "destructive", style: styles15.errorAlert }, /* @__PURE__ */ import_react32.default.createElement(AlertDescription, null, errorMessage))))), /* @__PURE__ */ import_react32.default.createElement(ModalFooter, { style: { paddingVertical: 8 } }, /* @__PURE__ */ import_react32.default.createElement(
|
|
3336
3541
|
Button,
|
|
3337
3542
|
{
|
|
3338
3543
|
variant: "outline",
|
|
@@ -3343,7 +3548,7 @@ var Integration = ({
|
|
|
3343
3548
|
style: styles15.continueButton
|
|
3344
3549
|
},
|
|
3345
3550
|
"Continue"
|
|
3346
|
-
), /* @__PURE__ */
|
|
3551
|
+
), /* @__PURE__ */ import_react32.default.createElement(Footer, null))) : /* @__PURE__ */ import_react32.default.createElement(
|
|
3347
3552
|
IntegrationForm,
|
|
3348
3553
|
{
|
|
3349
3554
|
metadata: addIntegrationMode,
|
|
@@ -3353,11 +3558,12 @@ var Integration = ({
|
|
|
3353
3558
|
},
|
|
3354
3559
|
open: !!addIntegrationMode,
|
|
3355
3560
|
setAddIntegrationMode,
|
|
3356
|
-
handleClose
|
|
3561
|
+
handleClose,
|
|
3562
|
+
providersList: supportedProviders
|
|
3357
3563
|
}
|
|
3358
3564
|
));
|
|
3359
3565
|
};
|
|
3360
|
-
var styles15 =
|
|
3566
|
+
var styles15 = import_react_native17.StyleSheet.create({
|
|
3361
3567
|
headerContent: {
|
|
3362
3568
|
flexDirection: "row",
|
|
3363
3569
|
alignItems: "center"
|
|
@@ -3380,9 +3586,10 @@ var styles15 = import_react_native16.StyleSheet.create({
|
|
|
3380
3586
|
flex: 1
|
|
3381
3587
|
},
|
|
3382
3588
|
headerSection: {
|
|
3383
|
-
paddingHorizontal: 20
|
|
3589
|
+
paddingHorizontal: 20,
|
|
3590
|
+
// theme.spacing.xl
|
|
3591
|
+
paddingTop: 10
|
|
3384
3592
|
// theme.spacing.xl
|
|
3385
|
-
// paddingTop: 10, // theme.spacing.xl
|
|
3386
3593
|
},
|
|
3387
3594
|
title: {
|
|
3388
3595
|
fontSize: 16,
|
|
@@ -3405,7 +3612,9 @@ var styles15 = import_react_native16.StyleSheet.create({
|
|
|
3405
3612
|
flexDirection: "row",
|
|
3406
3613
|
alignItems: "center",
|
|
3407
3614
|
justifyContent: "space-between",
|
|
3408
|
-
|
|
3615
|
+
paddingVertical: 8,
|
|
3616
|
+
// theme.spacing.md
|
|
3617
|
+
paddingHorizontal: 12,
|
|
3409
3618
|
// theme.spacing.md
|
|
3410
3619
|
borderRadius: 12,
|
|
3411
3620
|
// theme.borderRadius.md
|
|
@@ -3474,44 +3683,44 @@ var styles15 = import_react_native16.StyleSheet.create({
|
|
|
3474
3683
|
},
|
|
3475
3684
|
tabsContainer: {
|
|
3476
3685
|
flexDirection: "row",
|
|
3477
|
-
gap:
|
|
3686
|
+
gap: 6,
|
|
3478
3687
|
// theme.spacing.sm
|
|
3479
3688
|
flexWrap: "wrap"
|
|
3480
3689
|
},
|
|
3481
3690
|
tab: {
|
|
3482
|
-
paddingVertical:
|
|
3691
|
+
paddingVertical: 4,
|
|
3483
3692
|
// theme.spacing.sm
|
|
3484
|
-
paddingHorizontal:
|
|
3693
|
+
paddingHorizontal: 10,
|
|
3485
3694
|
// theme.spacing.lg
|
|
3486
|
-
borderRadius:
|
|
3695
|
+
borderRadius: 8,
|
|
3487
3696
|
// theme.borderRadius.full / 2
|
|
3488
3697
|
borderWidth: 1,
|
|
3489
3698
|
alignItems: "center",
|
|
3490
3699
|
justifyContent: "center"
|
|
3491
3700
|
},
|
|
3492
3701
|
tabText: {
|
|
3493
|
-
fontSize:
|
|
3702
|
+
fontSize: 12,
|
|
3494
3703
|
// theme.fontSize.sm
|
|
3495
3704
|
fontWeight: "600"
|
|
3496
3705
|
}
|
|
3497
3706
|
});
|
|
3498
3707
|
|
|
3499
3708
|
// src/molecules/OTPVerify.tsx
|
|
3500
|
-
var
|
|
3501
|
-
var
|
|
3709
|
+
var import_react33 = __toESM(require("react"));
|
|
3710
|
+
var import_react_native18 = require("react-native");
|
|
3502
3711
|
var OTPVerify = ({
|
|
3503
3712
|
open,
|
|
3504
3713
|
onSuccess,
|
|
3505
3714
|
onClose
|
|
3506
3715
|
}) => {
|
|
3507
3716
|
const theme = useTheme();
|
|
3508
|
-
const [otp, setOtp] =
|
|
3717
|
+
const [otp, setOtp] = import_react33.default.useState("");
|
|
3509
3718
|
const { linkToken, clientId, email, setUser } = useKryptosConnect();
|
|
3510
|
-
const [isLoading, setIsLoading] =
|
|
3511
|
-
const [isResending, setIsResending] =
|
|
3512
|
-
const [resendCooldown, setResendCooldown] =
|
|
3513
|
-
const [errorMessage, setErrorMessage] =
|
|
3514
|
-
const [successMessage, setSuccessMessage] =
|
|
3719
|
+
const [isLoading, setIsLoading] = import_react33.default.useState(false);
|
|
3720
|
+
const [isResending, setIsResending] = import_react33.default.useState(false);
|
|
3721
|
+
const [resendCooldown, setResendCooldown] = import_react33.default.useState(0);
|
|
3722
|
+
const [errorMessage, setErrorMessage] = import_react33.default.useState("");
|
|
3723
|
+
const [successMessage, setSuccessMessage] = import_react33.default.useState("");
|
|
3515
3724
|
const handleSubmit = async () => {
|
|
3516
3725
|
if (otp.length !== 6) return;
|
|
3517
3726
|
setIsLoading(true);
|
|
@@ -3562,7 +3771,7 @@ var OTPVerify = ({
|
|
|
3562
3771
|
setSuccessMessage("");
|
|
3563
3772
|
setOtp("");
|
|
3564
3773
|
};
|
|
3565
|
-
|
|
3774
|
+
import_react33.default.useEffect(() => {
|
|
3566
3775
|
if (resendCooldown > 0) {
|
|
3567
3776
|
const timer = setTimeout(() => {
|
|
3568
3777
|
setResendCooldown(resendCooldown - 1);
|
|
@@ -3571,20 +3780,20 @@ var OTPVerify = ({
|
|
|
3571
3780
|
}
|
|
3572
3781
|
return void 0;
|
|
3573
3782
|
}, [resendCooldown]);
|
|
3574
|
-
return /* @__PURE__ */
|
|
3575
|
-
|
|
3783
|
+
return /* @__PURE__ */ import_react33.default.createElement(Modal, { isOpen: open, onClose: handleClose, size: "lg" }, /* @__PURE__ */ import_react33.default.createElement(ModalHeader, { onClose: handleClose }, /* @__PURE__ */ import_react33.default.createElement(import_react_native18.View, { style: styles16.headerContent }, /* @__PURE__ */ import_react33.default.createElement(import_react_native18.Text, { style: [styles16.headerTitle, { color: theme.colors.text }] }, "OTP Verification"))), /* @__PURE__ */ import_react33.default.createElement(ModalBody, null, /* @__PURE__ */ import_react33.default.createElement(import_react_native18.View, { style: styles16.container }, /* @__PURE__ */ import_react33.default.createElement(ConnectLogo, null), /* @__PURE__ */ import_react33.default.createElement(import_react_native18.View, { style: styles16.emailInfo }, /* @__PURE__ */ import_react33.default.createElement(
|
|
3784
|
+
import_react_native18.Text,
|
|
3576
3785
|
{
|
|
3577
3786
|
style: [styles16.infoText, { color: theme.colors.textSecondary }]
|
|
3578
3787
|
},
|
|
3579
3788
|
"We have sent a verification code to"
|
|
3580
|
-
), /* @__PURE__ */
|
|
3789
|
+
), /* @__PURE__ */ import_react33.default.createElement(import_react_native18.Text, { style: [styles16.emailText, { color: theme.colors.text }] }, email)), /* @__PURE__ */ import_react33.default.createElement(
|
|
3581
3790
|
OTP,
|
|
3582
3791
|
{
|
|
3583
3792
|
onComplete: handleOtpComplete,
|
|
3584
3793
|
length: 6,
|
|
3585
3794
|
setErrorMessage
|
|
3586
3795
|
}
|
|
3587
|
-
), errorMessage ? /* @__PURE__ */
|
|
3796
|
+
), errorMessage ? /* @__PURE__ */ import_react33.default.createElement(Alert, { variant: "destructive" }, /* @__PURE__ */ import_react33.default.createElement(AlertDescription, null, errorMessage)) : null, successMessage ? /* @__PURE__ */ import_react33.default.createElement(Alert, { variant: "default" }, /* @__PURE__ */ import_react33.default.createElement(AlertDescription, null, successMessage)) : null, /* @__PURE__ */ import_react33.default.createElement(
|
|
3588
3797
|
Button,
|
|
3589
3798
|
{
|
|
3590
3799
|
variant: "outline",
|
|
@@ -3595,22 +3804,22 @@ var OTPVerify = ({
|
|
|
3595
3804
|
style: styles16.button
|
|
3596
3805
|
},
|
|
3597
3806
|
"Continue"
|
|
3598
|
-
), /* @__PURE__ */
|
|
3599
|
-
|
|
3807
|
+
), /* @__PURE__ */ import_react33.default.createElement(
|
|
3808
|
+
import_react_native18.TouchableOpacity,
|
|
3600
3809
|
{
|
|
3601
3810
|
onPress: handleResendOtp,
|
|
3602
3811
|
disabled: resendCooldown > 0 || isResending,
|
|
3603
3812
|
style: styles16.resendContainer
|
|
3604
3813
|
},
|
|
3605
|
-
isResending ? /* @__PURE__ */
|
|
3606
|
-
|
|
3814
|
+
isResending ? /* @__PURE__ */ import_react33.default.createElement(import_react_native18.View, { style: styles16.resendLoading }, /* @__PURE__ */ import_react33.default.createElement(LoaderIcon, { size: 16, color: theme.colors.primary }), /* @__PURE__ */ import_react33.default.createElement(
|
|
3815
|
+
import_react_native18.Text,
|
|
3607
3816
|
{
|
|
3608
3817
|
style: [styles16.resendText, { color: theme.colors.primary }]
|
|
3609
3818
|
},
|
|
3610
3819
|
" ",
|
|
3611
3820
|
"Sending..."
|
|
3612
|
-
)) : resendCooldown > 0 ? /* @__PURE__ */
|
|
3613
|
-
|
|
3821
|
+
)) : resendCooldown > 0 ? /* @__PURE__ */ import_react33.default.createElement(
|
|
3822
|
+
import_react_native18.Text,
|
|
3614
3823
|
{
|
|
3615
3824
|
style: [
|
|
3616
3825
|
styles16.resendText,
|
|
@@ -3620,16 +3829,16 @@ var OTPVerify = ({
|
|
|
3620
3829
|
"Resend OTP in ",
|
|
3621
3830
|
resendCooldown,
|
|
3622
3831
|
"s"
|
|
3623
|
-
) : /* @__PURE__ */
|
|
3624
|
-
|
|
3832
|
+
) : /* @__PURE__ */ import_react33.default.createElement(
|
|
3833
|
+
import_react_native18.Text,
|
|
3625
3834
|
{
|
|
3626
3835
|
style: [styles16.resendText, { color: theme.colors.primary }]
|
|
3627
3836
|
},
|
|
3628
3837
|
"Resend OTP"
|
|
3629
3838
|
)
|
|
3630
|
-
))), /* @__PURE__ */
|
|
3839
|
+
))), /* @__PURE__ */ import_react33.default.createElement(ModalFooter, { style: { paddingVertical: 0 } }, /* @__PURE__ */ import_react33.default.createElement(Footer, null)));
|
|
3631
3840
|
};
|
|
3632
|
-
var styles16 =
|
|
3841
|
+
var styles16 = import_react_native18.StyleSheet.create({
|
|
3633
3842
|
headerContent: {
|
|
3634
3843
|
flexDirection: "row",
|
|
3635
3844
|
alignItems: "center"
|
|
@@ -3688,8 +3897,8 @@ var styles16 = import_react_native17.StyleSheet.create({
|
|
|
3688
3897
|
});
|
|
3689
3898
|
|
|
3690
3899
|
// src/molecules/Permissions.tsx
|
|
3691
|
-
var
|
|
3692
|
-
var
|
|
3900
|
+
var import_react34 = __toESM(require("react"));
|
|
3901
|
+
var import_react_native19 = require("react-native");
|
|
3693
3902
|
var Permissions = ({
|
|
3694
3903
|
open,
|
|
3695
3904
|
onClose,
|
|
@@ -3697,8 +3906,8 @@ var Permissions = ({
|
|
|
3697
3906
|
}) => {
|
|
3698
3907
|
const { appName, linkToken, setUserConsent } = useKryptosConnect();
|
|
3699
3908
|
const theme = useTheme();
|
|
3700
|
-
const [isLoading, setIsLoading] =
|
|
3701
|
-
const [errorMessage, setErrorMessage] =
|
|
3909
|
+
const [isLoading, setIsLoading] = import_react34.default.useState(false);
|
|
3910
|
+
const [errorMessage, setErrorMessage] = import_react34.default.useState("");
|
|
3702
3911
|
const handleConsentClick = async () => {
|
|
3703
3912
|
try {
|
|
3704
3913
|
setIsLoading(true);
|
|
@@ -3721,22 +3930,22 @@ var Permissions = ({
|
|
|
3721
3930
|
"Access your transaction history and trading activity",
|
|
3722
3931
|
"Keep this data updated and accessible when you're offline"
|
|
3723
3932
|
];
|
|
3724
|
-
return /* @__PURE__ */
|
|
3725
|
-
|
|
3933
|
+
return /* @__PURE__ */ import_react34.default.createElement(Modal, { isOpen: open, onClose, size: "xl" }, /* @__PURE__ */ import_react34.default.createElement(ModalHeader, { onClose }, "Permissions"), /* @__PURE__ */ import_react34.default.createElement(ModalBody, null, /* @__PURE__ */ import_react34.default.createElement(import_react_native19.View, { style: styles17.container }, /* @__PURE__ */ import_react34.default.createElement(ConnectLogo, null), errorMessage ? /* @__PURE__ */ import_react34.default.createElement(Alert, { variant: "destructive" }, /* @__PURE__ */ import_react34.default.createElement(AlertDescription, null, errorMessage)) : null, /* @__PURE__ */ import_react34.default.createElement(import_react_native19.View, { style: styles17.permissionsList }, /* @__PURE__ */ import_react34.default.createElement(
|
|
3934
|
+
import_react_native19.Text,
|
|
3726
3935
|
{
|
|
3727
3936
|
style: [styles17.subtitle, { color: theme.colors.textSecondary }]
|
|
3728
3937
|
},
|
|
3729
3938
|
"Allow ",
|
|
3730
3939
|
appName,
|
|
3731
3940
|
" to:"
|
|
3732
|
-
), permissionItems.map((item, index) => /* @__PURE__ */
|
|
3733
|
-
|
|
3941
|
+
), permissionItems.map((item, index) => /* @__PURE__ */ import_react34.default.createElement(import_react_native19.View, { key: `permission-${index}`, style: styles17.permissionItem }, /* @__PURE__ */ import_react34.default.createElement(import_react_native19.Text, { style: [styles17.bullet, { color: theme.colors.primary }] }, index + 1, "."), /* @__PURE__ */ import_react34.default.createElement(
|
|
3942
|
+
import_react_native19.Text,
|
|
3734
3943
|
{
|
|
3735
3944
|
style: [styles17.permissionText, { color: theme.colors.text }]
|
|
3736
3945
|
},
|
|
3737
3946
|
item
|
|
3738
|
-
)))), /* @__PURE__ */
|
|
3739
|
-
|
|
3947
|
+
)))), /* @__PURE__ */ import_react34.default.createElement(
|
|
3948
|
+
import_react_native19.View,
|
|
3740
3949
|
{
|
|
3741
3950
|
style: [
|
|
3742
3951
|
styles17.infoBox,
|
|
@@ -3746,17 +3955,17 @@ var Permissions = ({
|
|
|
3746
3955
|
}
|
|
3747
3956
|
]
|
|
3748
3957
|
},
|
|
3749
|
-
/* @__PURE__ */
|
|
3750
|
-
|
|
3958
|
+
/* @__PURE__ */ import_react34.default.createElement(
|
|
3959
|
+
import_react_native19.Text,
|
|
3751
3960
|
{
|
|
3752
3961
|
style: [styles17.infoText, { color: theme.colors.textSecondary }]
|
|
3753
3962
|
},
|
|
3754
3963
|
"By selecting",
|
|
3755
3964
|
" ",
|
|
3756
|
-
/* @__PURE__ */
|
|
3965
|
+
/* @__PURE__ */ import_react34.default.createElement(import_react_native19.Text, { style: { fontWeight: "600", color: theme.colors.text } }, "'Allow'"),
|
|
3757
3966
|
", you agree to share this information and keep it updated."
|
|
3758
3967
|
)
|
|
3759
|
-
))), /* @__PURE__ */
|
|
3968
|
+
))), /* @__PURE__ */ import_react34.default.createElement(ModalFooter, { style: { paddingVertical: 8 } }, /* @__PURE__ */ import_react34.default.createElement(
|
|
3760
3969
|
Button,
|
|
3761
3970
|
{
|
|
3762
3971
|
variant: "outline",
|
|
@@ -3767,9 +3976,9 @@ var Permissions = ({
|
|
|
3767
3976
|
style: styles17.button
|
|
3768
3977
|
},
|
|
3769
3978
|
"Allow"
|
|
3770
|
-
), /* @__PURE__ */
|
|
3979
|
+
), /* @__PURE__ */ import_react34.default.createElement(Footer, null)));
|
|
3771
3980
|
};
|
|
3772
|
-
var styles17 =
|
|
3981
|
+
var styles17 = import_react_native19.StyleSheet.create({
|
|
3773
3982
|
container: {
|
|
3774
3983
|
flex: 1
|
|
3775
3984
|
},
|
|
@@ -3827,8 +4036,8 @@ var styles17 = import_react_native18.StyleSheet.create({
|
|
|
3827
4036
|
});
|
|
3828
4037
|
|
|
3829
4038
|
// src/molecules/StatusModal.tsx
|
|
3830
|
-
var
|
|
3831
|
-
var
|
|
4039
|
+
var import_react35 = __toESM(require("react"));
|
|
4040
|
+
var import_react_native20 = require("react-native");
|
|
3832
4041
|
var StatusModal = ({
|
|
3833
4042
|
open,
|
|
3834
4043
|
onClose,
|
|
@@ -3845,7 +4054,7 @@ var StatusModal = ({
|
|
|
3845
4054
|
}
|
|
3846
4055
|
onClose();
|
|
3847
4056
|
};
|
|
3848
|
-
return /* @__PURE__ */
|
|
4057
|
+
return /* @__PURE__ */ import_react35.default.createElement(Modal, { isOpen: open, onClose: handleClose, size: "sm" }, /* @__PURE__ */ import_react35.default.createElement(ModalHeader, { showCloseButton: false, onClose: handleClose }, ""), /* @__PURE__ */ import_react35.default.createElement(ModalBody, null, /* @__PURE__ */ import_react35.default.createElement(import_react_native20.View, { style: styles18.container }, /* @__PURE__ */ import_react35.default.createElement(import_react_native20.View, { style: styles18.iconContainer }, status === "success" ? /* @__PURE__ */ import_react35.default.createElement(SuccessIcon, { size: 80 }) : /* @__PURE__ */ import_react35.default.createElement(ErrorIcon, { size: 80 })), /* @__PURE__ */ import_react35.default.createElement(import_react_native20.Text, { style: [styles18.message, { color: theme.colors.text }] }, status === "success" ? "Connection successful" : "Connection failed"))), /* @__PURE__ */ import_react35.default.createElement(ModalFooter, { style: { paddingVertical: 8 } }, /* @__PURE__ */ import_react35.default.createElement(
|
|
3849
4058
|
Button,
|
|
3850
4059
|
{
|
|
3851
4060
|
variant: "outline",
|
|
@@ -3854,9 +4063,9 @@ var StatusModal = ({
|
|
|
3854
4063
|
style: styles18.button
|
|
3855
4064
|
},
|
|
3856
4065
|
status === "success" ? "Continue" : "Try again later"
|
|
3857
|
-
), /* @__PURE__ */
|
|
4066
|
+
), /* @__PURE__ */ import_react35.default.createElement(Footer, null)));
|
|
3858
4067
|
};
|
|
3859
|
-
var styles18 =
|
|
4068
|
+
var styles18 = import_react_native20.StyleSheet.create({
|
|
3860
4069
|
container: {
|
|
3861
4070
|
flex: 1,
|
|
3862
4071
|
alignItems: "center",
|
|
@@ -3881,28 +4090,28 @@ var styles18 = import_react_native19.StyleSheet.create({
|
|
|
3881
4090
|
});
|
|
3882
4091
|
|
|
3883
4092
|
// src/molecules/EndModal.tsx
|
|
3884
|
-
var
|
|
3885
|
-
var
|
|
4093
|
+
var import_react36 = __toESM(require("react"));
|
|
4094
|
+
var import_react_native21 = require("react-native");
|
|
3886
4095
|
var EndModal = ({ open, onClose }) => {
|
|
3887
4096
|
const theme = useTheme();
|
|
3888
|
-
(0,
|
|
4097
|
+
(0, import_react36.useEffect)(() => {
|
|
3889
4098
|
if (!open) return;
|
|
3890
4099
|
const timer = setTimeout(() => {
|
|
3891
4100
|
onClose();
|
|
3892
4101
|
}, 5e3);
|
|
3893
4102
|
return () => clearTimeout(timer);
|
|
3894
4103
|
}, []);
|
|
3895
|
-
return /* @__PURE__ */
|
|
3896
|
-
|
|
4104
|
+
return /* @__PURE__ */ import_react36.default.createElement(Modal, { isOpen: open, onClose, size: "md" }, /* @__PURE__ */ import_react36.default.createElement(ModalHeader, { onClose }, ""), /* @__PURE__ */ import_react36.default.createElement(ModalBody, null, /* @__PURE__ */ import_react36.default.createElement(import_react_native21.View, { style: styles19.container }, /* @__PURE__ */ import_react36.default.createElement(
|
|
4105
|
+
import_react_native21.View,
|
|
3897
4106
|
{
|
|
3898
4107
|
style: [
|
|
3899
4108
|
styles19.iconContainer,
|
|
3900
4109
|
{ backgroundColor: theme.colors.successLight }
|
|
3901
4110
|
]
|
|
3902
4111
|
},
|
|
3903
|
-
/* @__PURE__ */
|
|
3904
|
-
), /* @__PURE__ */
|
|
3905
|
-
than expected, tap the button below to continue.`))), /* @__PURE__ */
|
|
4112
|
+
/* @__PURE__ */ import_react36.default.createElement(SuccessIcon, { size: 80 })
|
|
4113
|
+
), /* @__PURE__ */ import_react36.default.createElement(import_react_native21.Text, { style: [styles19.message, { color: theme.colors.text }] }, `All set! We're redirecting you back to the app. If it takes longer
|
|
4114
|
+
than expected, tap the button below to continue.`))), /* @__PURE__ */ import_react36.default.createElement(ModalFooter, { style: { paddingVertical: 8 } }, /* @__PURE__ */ import_react36.default.createElement(
|
|
3906
4115
|
Button,
|
|
3907
4116
|
{
|
|
3908
4117
|
variant: "primary",
|
|
@@ -3911,9 +4120,9 @@ var EndModal = ({ open, onClose }) => {
|
|
|
3911
4120
|
style: styles19.button
|
|
3912
4121
|
},
|
|
3913
4122
|
"Continue to App"
|
|
3914
|
-
), /* @__PURE__ */
|
|
4123
|
+
), /* @__PURE__ */ import_react36.default.createElement(Footer, null)));
|
|
3915
4124
|
};
|
|
3916
|
-
var styles19 =
|
|
4125
|
+
var styles19 = import_react_native21.StyleSheet.create({
|
|
3917
4126
|
container: {
|
|
3918
4127
|
alignItems: "center",
|
|
3919
4128
|
paddingVertical: 20
|
|
@@ -3948,10 +4157,10 @@ var KryptosConnectButton = ({
|
|
|
3948
4157
|
textStyle
|
|
3949
4158
|
}) => {
|
|
3950
4159
|
const { theme: themeName } = useKryptosConnect();
|
|
3951
|
-
const [open, setOpen] =
|
|
4160
|
+
const [open, setOpen] = import_react37.default.useState(false);
|
|
3952
4161
|
const theme = useTheme();
|
|
3953
|
-
return /* @__PURE__ */
|
|
3954
|
-
|
|
4162
|
+
return /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, children ? /* @__PURE__ */ import_react37.default.createElement(import_react_native22.TouchableOpacity, { onPress: () => setOpen(true), style }, children) : /* @__PURE__ */ import_react37.default.createElement(
|
|
4163
|
+
import_react_native22.TouchableOpacity,
|
|
3955
4164
|
{
|
|
3956
4165
|
onPress: () => setOpen(true),
|
|
3957
4166
|
style: [
|
|
@@ -3969,8 +4178,8 @@ var KryptosConnectButton = ({
|
|
|
3969
4178
|
],
|
|
3970
4179
|
activeOpacity: 0.8
|
|
3971
4180
|
},
|
|
3972
|
-
/* @__PURE__ */
|
|
3973
|
-
|
|
4181
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
4182
|
+
import_react_native22.Text,
|
|
3974
4183
|
{
|
|
3975
4184
|
style: [
|
|
3976
4185
|
styles20.buttonText,
|
|
@@ -3984,8 +4193,8 @@ var KryptosConnectButton = ({
|
|
|
3984
4193
|
"Connect with",
|
|
3985
4194
|
" "
|
|
3986
4195
|
),
|
|
3987
|
-
/* @__PURE__ */
|
|
3988
|
-
), /* @__PURE__ */
|
|
4196
|
+
/* @__PURE__ */ import_react37.default.createElement(LogoIcon, { size: 24 })
|
|
4197
|
+
), /* @__PURE__ */ import_react37.default.createElement(
|
|
3989
4198
|
KryptosConnectModal,
|
|
3990
4199
|
{
|
|
3991
4200
|
open,
|
|
@@ -4013,7 +4222,7 @@ var KryptosConnectModal = ({
|
|
|
4013
4222
|
isAuthorized,
|
|
4014
4223
|
linkToken
|
|
4015
4224
|
} = useKryptosConnect();
|
|
4016
|
-
const [step, setStep] =
|
|
4225
|
+
const [step, setStep] = import_react37.default.useState("INIT" /* INIT */);
|
|
4017
4226
|
const handleClose = () => {
|
|
4018
4227
|
setOpen(false);
|
|
4019
4228
|
setIsInitialized(false);
|
|
@@ -4049,7 +4258,7 @@ var KryptosConnectModal = ({
|
|
|
4049
4258
|
handleClose();
|
|
4050
4259
|
};
|
|
4051
4260
|
if (!open) return null;
|
|
4052
|
-
return /* @__PURE__ */
|
|
4261
|
+
return /* @__PURE__ */ import_react37.default.createElement(import_react_native22.View, { style: styles20.container }, step === "INIT" /* INIT */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4053
4262
|
Init,
|
|
4054
4263
|
{
|
|
4055
4264
|
open,
|
|
@@ -4063,7 +4272,7 @@ var KryptosConnectModal = ({
|
|
|
4063
4272
|
},
|
|
4064
4273
|
onClose: handleAbort
|
|
4065
4274
|
}
|
|
4066
|
-
), step === "AUTH" /* AUTH */ && /* @__PURE__ */
|
|
4275
|
+
), step === "AUTH" /* AUTH */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4067
4276
|
Auth,
|
|
4068
4277
|
{
|
|
4069
4278
|
open,
|
|
@@ -4071,28 +4280,28 @@ var KryptosConnectModal = ({
|
|
|
4071
4280
|
onGuestSuccess: () => setStep("INTEGRATION" /* INTEGRATION */),
|
|
4072
4281
|
onClose: handleAbort
|
|
4073
4282
|
}
|
|
4074
|
-
), step === "OTP" /* OTP */ && /* @__PURE__ */
|
|
4283
|
+
), step === "OTP" /* OTP */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4075
4284
|
OTPVerify,
|
|
4076
4285
|
{
|
|
4077
4286
|
open,
|
|
4078
4287
|
onSuccess: () => setStep("INTEGRATION" /* INTEGRATION */),
|
|
4079
4288
|
onClose: handleAbort
|
|
4080
4289
|
}
|
|
4081
|
-
), step === "INTEGRATION" /* INTEGRATION */ && /* @__PURE__ */
|
|
4290
|
+
), step === "INTEGRATION" /* INTEGRATION */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4082
4291
|
Integration,
|
|
4083
4292
|
{
|
|
4084
4293
|
open,
|
|
4085
4294
|
onSuccess: handleConsentClick,
|
|
4086
4295
|
onClose: handleAbort
|
|
4087
4296
|
}
|
|
4088
|
-
), step === "PERMISSIONS" /* PERMISSIONS */ && /* @__PURE__ */
|
|
4297
|
+
), step === "PERMISSIONS" /* PERMISSIONS */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4089
4298
|
Permissions,
|
|
4090
4299
|
{
|
|
4091
4300
|
open,
|
|
4092
4301
|
onClose: handleAbort,
|
|
4093
4302
|
onSuccess: () => setStep("STATUS" /* STATUS */)
|
|
4094
4303
|
}
|
|
4095
|
-
), step === "STATUS" /* STATUS */ && /* @__PURE__ */
|
|
4304
|
+
), step === "STATUS" /* STATUS */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4096
4305
|
StatusModal,
|
|
4097
4306
|
{
|
|
4098
4307
|
open,
|
|
@@ -4101,7 +4310,7 @@ var KryptosConnectModal = ({
|
|
|
4101
4310
|
onError: handleError,
|
|
4102
4311
|
status: userConsent?.public_token ? "success" : "error"
|
|
4103
4312
|
}
|
|
4104
|
-
), step === "END" /* END */ && /* @__PURE__ */
|
|
4313
|
+
), step === "END" /* END */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4105
4314
|
EndModal,
|
|
4106
4315
|
{
|
|
4107
4316
|
open,
|
|
@@ -4113,7 +4322,7 @@ var KryptosConnectModal = ({
|
|
|
4113
4322
|
}
|
|
4114
4323
|
));
|
|
4115
4324
|
};
|
|
4116
|
-
var styles20 =
|
|
4325
|
+
var styles20 = import_react_native22.StyleSheet.create({
|
|
4117
4326
|
defaultButton: {
|
|
4118
4327
|
flexDirection: "row",
|
|
4119
4328
|
alignItems: "center",
|