@kryptos_connect/mobile-sdk 1.0.3 → 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 +446 -366
- package/dist/index.mjs +355 -274
- 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({
|
|
@@ -1015,8 +1020,7 @@ var styles4 = import_react_native4.StyleSheet.create({
|
|
|
1015
1020
|
flex: 1
|
|
1016
1021
|
},
|
|
1017
1022
|
footer: {
|
|
1018
|
-
borderTopWidth: 1
|
|
1019
|
-
marginBottom: 24
|
|
1023
|
+
borderTopWidth: 1
|
|
1020
1024
|
}
|
|
1021
1025
|
});
|
|
1022
1026
|
|
|
@@ -1308,8 +1312,8 @@ var styles9 = import_react_native9.StyleSheet.create({
|
|
|
1308
1312
|
});
|
|
1309
1313
|
|
|
1310
1314
|
// src/molecules/Auth.tsx
|
|
1311
|
-
var
|
|
1312
|
-
var
|
|
1315
|
+
var import_react20 = __toESM(require("react"));
|
|
1316
|
+
var import_react_native12 = require("react-native");
|
|
1313
1317
|
|
|
1314
1318
|
// src/assets/LinkIcon.tsx
|
|
1315
1319
|
var import_react14 = __toESM(require("react"));
|
|
@@ -1378,8 +1382,8 @@ var EyeIcon = ({
|
|
|
1378
1382
|
};
|
|
1379
1383
|
|
|
1380
1384
|
// src/molecules/ConnectLogo.tsx
|
|
1381
|
-
var
|
|
1382
|
-
var
|
|
1385
|
+
var import_react19 = __toESM(require("react"));
|
|
1386
|
+
var import_react_native11 = require("react-native");
|
|
1383
1387
|
|
|
1384
1388
|
// src/assets/UnplugIcon.tsx
|
|
1385
1389
|
var import_react17 = __toESM(require("react"));
|
|
@@ -1438,15 +1442,40 @@ var UnplugIcon = ({
|
|
|
1438
1442
|
));
|
|
1439
1443
|
};
|
|
1440
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
|
+
|
|
1441
1470
|
// src/molecules/ConnectLogo.tsx
|
|
1442
1471
|
var KryptosLogo = () => {
|
|
1443
1472
|
const theme = useTheme();
|
|
1444
|
-
return /* @__PURE__ */
|
|
1445
|
-
|
|
1473
|
+
return /* @__PURE__ */ import_react19.default.createElement(
|
|
1474
|
+
import_react_native11.View,
|
|
1446
1475
|
{
|
|
1447
1476
|
style: [styles10.logoContainer, { backgroundColor: theme.colors.surface }]
|
|
1448
1477
|
},
|
|
1449
|
-
/* @__PURE__ */
|
|
1478
|
+
/* @__PURE__ */ import_react19.default.createElement(LogoIcon, { size: 36 })
|
|
1450
1479
|
);
|
|
1451
1480
|
};
|
|
1452
1481
|
var ConnectLogo = () => {
|
|
@@ -1461,11 +1490,11 @@ var ConnectLogo = () => {
|
|
|
1461
1490
|
}
|
|
1462
1491
|
};
|
|
1463
1492
|
const renderLogo = () => {
|
|
1464
|
-
if ((0,
|
|
1493
|
+
if ((0, import_react19.isValidElement)(appLogo)) {
|
|
1465
1494
|
return appLogo;
|
|
1466
1495
|
} else if (typeof appLogo === "string" && isValidUrl(appLogo)) {
|
|
1467
|
-
return /* @__PURE__ */
|
|
1468
|
-
|
|
1496
|
+
return isSvgUrl(appLogo) ? /* @__PURE__ */ import_react19.default.createElement(RemoteSvg, { uri: appLogo }) : /* @__PURE__ */ import_react19.default.createElement(
|
|
1497
|
+
import_react_native11.Image,
|
|
1469
1498
|
{
|
|
1470
1499
|
source: { uri: appLogo },
|
|
1471
1500
|
style: styles10.appLogoImage,
|
|
@@ -1473,8 +1502,8 @@ var ConnectLogo = () => {
|
|
|
1473
1502
|
}
|
|
1474
1503
|
);
|
|
1475
1504
|
} else if (typeof appLogo === "number" || typeof appLogo === "object" && appLogo !== null) {
|
|
1476
|
-
return /* @__PURE__ */
|
|
1477
|
-
|
|
1505
|
+
return /* @__PURE__ */ import_react19.default.createElement(
|
|
1506
|
+
import_react_native11.Image,
|
|
1478
1507
|
{
|
|
1479
1508
|
source: appLogo,
|
|
1480
1509
|
style: styles10.appLogoImage,
|
|
@@ -1482,12 +1511,12 @@ var ConnectLogo = () => {
|
|
|
1482
1511
|
}
|
|
1483
1512
|
);
|
|
1484
1513
|
} else if (appName) {
|
|
1485
|
-
return /* @__PURE__ */
|
|
1514
|
+
return /* @__PURE__ */ import_react19.default.createElement(import_react_native11.Text, { style: [styles10.appLogoText, { color: theme.colors.text }] }, appName.charAt(0).toUpperCase());
|
|
1486
1515
|
}
|
|
1487
|
-
return /* @__PURE__ */
|
|
1516
|
+
return /* @__PURE__ */ import_react19.default.createElement(import_react_native11.Text, { style: [styles10.appLogoText, { color: theme.colors.text }] }, "?");
|
|
1488
1517
|
};
|
|
1489
|
-
return /* @__PURE__ */
|
|
1490
|
-
|
|
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,
|
|
1491
1520
|
{
|
|
1492
1521
|
style: [
|
|
1493
1522
|
styles10.logoContainer,
|
|
@@ -1497,7 +1526,7 @@ var ConnectLogo = () => {
|
|
|
1497
1526
|
renderLogo()
|
|
1498
1527
|
));
|
|
1499
1528
|
};
|
|
1500
|
-
var styles10 =
|
|
1529
|
+
var styles10 = import_react_native11.StyleSheet.create({
|
|
1501
1530
|
container: {
|
|
1502
1531
|
flexDirection: "row",
|
|
1503
1532
|
alignItems: "center",
|
|
@@ -1538,11 +1567,11 @@ var Auth = ({
|
|
|
1538
1567
|
}) => {
|
|
1539
1568
|
const { appName, linkToken, clientId, setUser, setEmail } = useKryptosConnect();
|
|
1540
1569
|
const theme = useTheme();
|
|
1541
|
-
const [isLoading, setIsLoading] =
|
|
1542
|
-
const [errorMessage, setErrorMessage] =
|
|
1543
|
-
const [emailValue, setEmailValue] =
|
|
1544
|
-
const [emailError, setEmailError] =
|
|
1545
|
-
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);
|
|
1546
1575
|
const validateEmail = (email) => {
|
|
1547
1576
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1548
1577
|
if (!email) {
|
|
@@ -1604,29 +1633,29 @@ var Auth = ({
|
|
|
1604
1633
|
};
|
|
1605
1634
|
const infoSections = [
|
|
1606
1635
|
{
|
|
1607
|
-
icon: /* @__PURE__ */
|
|
1636
|
+
icon: /* @__PURE__ */ import_react20.default.createElement(LinkIcon, { size: 20, color: theme.colors.primary }),
|
|
1608
1637
|
title: "Simple and secure",
|
|
1609
1638
|
text: "Link your accounts in just a few clicks"
|
|
1610
1639
|
},
|
|
1611
1640
|
{
|
|
1612
|
-
icon: /* @__PURE__ */
|
|
1641
|
+
icon: /* @__PURE__ */ import_react20.default.createElement(ShieldIcon, { size: 20, color: theme.colors.primary }),
|
|
1613
1642
|
title: "Control what you share",
|
|
1614
1643
|
text: "We never share your data without your permission"
|
|
1615
1644
|
},
|
|
1616
1645
|
{
|
|
1617
|
-
icon: /* @__PURE__ */
|
|
1646
|
+
icon: /* @__PURE__ */ import_react20.default.createElement(EyeIcon, { size: 20, color: theme.colors.primary }),
|
|
1618
1647
|
title: "View Only Access",
|
|
1619
1648
|
text: "Kryptos retrieves view-only data and cannot perform any transactions on your behalf."
|
|
1620
1649
|
}
|
|
1621
1650
|
];
|
|
1622
|
-
return /* @__PURE__ */
|
|
1623
|
-
|
|
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,
|
|
1624
1653
|
{
|
|
1625
1654
|
style: [styles11.infoTitle, { color: theme.colors.text }]
|
|
1626
1655
|
},
|
|
1627
1656
|
section.title
|
|
1628
|
-
), /* @__PURE__ */
|
|
1629
|
-
|
|
1657
|
+
), /* @__PURE__ */ import_react20.default.createElement(
|
|
1658
|
+
import_react_native12.Text,
|
|
1630
1659
|
{
|
|
1631
1660
|
style: [
|
|
1632
1661
|
styles11.infoDescription,
|
|
@@ -1634,7 +1663,7 @@ var Auth = ({
|
|
|
1634
1663
|
]
|
|
1635
1664
|
},
|
|
1636
1665
|
section.text
|
|
1637
|
-
)))), 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(
|
|
1638
1667
|
Button,
|
|
1639
1668
|
{
|
|
1640
1669
|
variant: "outline",
|
|
@@ -1645,41 +1674,41 @@ var Auth = ({
|
|
|
1645
1674
|
style: styles11.button
|
|
1646
1675
|
},
|
|
1647
1676
|
"Continue"
|
|
1648
|
-
), /* @__PURE__ */
|
|
1649
|
-
|
|
1677
|
+
), /* @__PURE__ */ import_react20.default.createElement(
|
|
1678
|
+
import_react_native12.Text,
|
|
1650
1679
|
{
|
|
1651
1680
|
style: [styles11.footerText, { color: theme.colors.textSecondary }]
|
|
1652
1681
|
},
|
|
1653
1682
|
"By continuing, you agree to Kryptos",
|
|
1654
1683
|
" ",
|
|
1655
|
-
/* @__PURE__ */
|
|
1656
|
-
|
|
1684
|
+
/* @__PURE__ */ import_react20.default.createElement(
|
|
1685
|
+
import_react_native12.Text,
|
|
1657
1686
|
{
|
|
1658
1687
|
style: {
|
|
1659
1688
|
color: theme.colors.primary,
|
|
1660
1689
|
textDecorationLine: "underline"
|
|
1661
1690
|
},
|
|
1662
|
-
onPress: () =>
|
|
1691
|
+
onPress: () => import_react_native12.Linking.openURL("https://kryptos.io/privacy-policy")
|
|
1663
1692
|
},
|
|
1664
1693
|
"Privacy Policy"
|
|
1665
1694
|
),
|
|
1666
1695
|
" ",
|
|
1667
1696
|
"and",
|
|
1668
1697
|
" ",
|
|
1669
|
-
/* @__PURE__ */
|
|
1670
|
-
|
|
1698
|
+
/* @__PURE__ */ import_react20.default.createElement(
|
|
1699
|
+
import_react_native12.Text,
|
|
1671
1700
|
{
|
|
1672
1701
|
style: {
|
|
1673
1702
|
color: theme.colors.primary,
|
|
1674
1703
|
textDecorationLine: "underline"
|
|
1675
1704
|
},
|
|
1676
|
-
onPress: () =>
|
|
1705
|
+
onPress: () => import_react_native12.Linking.openURL("https://kryptos.io/terms-of-services")
|
|
1677
1706
|
},
|
|
1678
1707
|
"Terms of Service"
|
|
1679
1708
|
)
|
|
1680
|
-
)))), /* @__PURE__ */
|
|
1709
|
+
)))), /* @__PURE__ */ import_react20.default.createElement(ModalFooter, { style: { paddingVertical: 0 } }, /* @__PURE__ */ import_react20.default.createElement(Footer, null)));
|
|
1681
1710
|
};
|
|
1682
|
-
var styles11 =
|
|
1711
|
+
var styles11 = import_react_native12.StyleSheet.create({
|
|
1683
1712
|
container: {
|
|
1684
1713
|
flex: 1,
|
|
1685
1714
|
flexDirection: "column",
|
|
@@ -1744,8 +1773,8 @@ var styles11 = import_react_native11.StyleSheet.create({
|
|
|
1744
1773
|
});
|
|
1745
1774
|
|
|
1746
1775
|
// src/molecules/Init.tsx
|
|
1747
|
-
var
|
|
1748
|
-
var
|
|
1776
|
+
var import_react21 = __toESM(require("react"));
|
|
1777
|
+
var import_react_native13 = require("react-native");
|
|
1749
1778
|
var Init = ({
|
|
1750
1779
|
open,
|
|
1751
1780
|
onSuccess,
|
|
@@ -1760,9 +1789,9 @@ var Init = ({
|
|
|
1760
1789
|
setUser
|
|
1761
1790
|
} = useKryptosConnect();
|
|
1762
1791
|
const theme = useTheme();
|
|
1763
|
-
const [isFetching, setIsFetching] =
|
|
1764
|
-
const [error, setError] =
|
|
1765
|
-
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 () => {
|
|
1766
1795
|
if (!open) return;
|
|
1767
1796
|
setIsFetching(true);
|
|
1768
1797
|
setError(null);
|
|
@@ -1789,17 +1818,17 @@ var Init = ({
|
|
|
1789
1818
|
setIsFetching(false);
|
|
1790
1819
|
}
|
|
1791
1820
|
}, []);
|
|
1792
|
-
|
|
1821
|
+
import_react21.default.useEffect(() => {
|
|
1793
1822
|
fetchLinkToken();
|
|
1794
1823
|
}, [fetchLinkToken]);
|
|
1795
|
-
return /* @__PURE__ */
|
|
1796
|
-
|
|
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,
|
|
1797
1826
|
{
|
|
1798
1827
|
size: "large",
|
|
1799
1828
|
color: theme.colors.primary,
|
|
1800
1829
|
style: styles12.spinner
|
|
1801
1830
|
}
|
|
1802
|
-
), /* @__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(
|
|
1803
1832
|
Button,
|
|
1804
1833
|
{
|
|
1805
1834
|
variant: "primary",
|
|
@@ -1808,9 +1837,9 @@ var Init = ({
|
|
|
1808
1837
|
style: styles12.retryButton
|
|
1809
1838
|
},
|
|
1810
1839
|
"Retry"
|
|
1811
|
-
)))), /* @__PURE__ */
|
|
1840
|
+
)))), /* @__PURE__ */ import_react21.default.createElement(ModalFooter, { style: { paddingVertical: 0 } }, /* @__PURE__ */ import_react21.default.createElement(Footer, null)));
|
|
1812
1841
|
};
|
|
1813
|
-
var styles12 =
|
|
1842
|
+
var styles12 = import_react_native13.StyleSheet.create({
|
|
1814
1843
|
container: {
|
|
1815
1844
|
flex: 1,
|
|
1816
1845
|
alignItems: "center",
|
|
@@ -1837,18 +1866,18 @@ var styles12 = import_react_native12.StyleSheet.create({
|
|
|
1837
1866
|
});
|
|
1838
1867
|
|
|
1839
1868
|
// src/molecules/Integration.tsx
|
|
1840
|
-
var
|
|
1841
|
-
var
|
|
1869
|
+
var import_react32 = __toESM(require("react"));
|
|
1870
|
+
var import_react_native17 = require("react-native");
|
|
1842
1871
|
|
|
1843
1872
|
// src/assets/ArrowLeftIcon.tsx
|
|
1844
|
-
var
|
|
1845
|
-
var
|
|
1873
|
+
var import_react22 = __toESM(require("react"));
|
|
1874
|
+
var import_react_native_svg8 = __toESM(require("react-native-svg"));
|
|
1846
1875
|
var ArrowLeftIcon = ({
|
|
1847
1876
|
size = 20,
|
|
1848
1877
|
color = "#000"
|
|
1849
1878
|
}) => {
|
|
1850
|
-
return /* @__PURE__ */
|
|
1851
|
-
|
|
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,
|
|
1852
1881
|
{
|
|
1853
1882
|
d: "M19 12H5M12 19l-7-7 7-7",
|
|
1854
1883
|
stroke: color,
|
|
@@ -1860,14 +1889,14 @@ var ArrowLeftIcon = ({
|
|
|
1860
1889
|
};
|
|
1861
1890
|
|
|
1862
1891
|
// src/assets/CheckCircleIcon.tsx
|
|
1863
|
-
var
|
|
1864
|
-
var
|
|
1892
|
+
var import_react23 = __toESM(require("react"));
|
|
1893
|
+
var import_react_native_svg9 = __toESM(require("react-native-svg"));
|
|
1865
1894
|
var CheckCircleIcon = ({
|
|
1866
1895
|
size = 20,
|
|
1867
1896
|
color = "#10B981"
|
|
1868
1897
|
}) => {
|
|
1869
|
-
return /* @__PURE__ */
|
|
1870
|
-
|
|
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,
|
|
1871
1900
|
{
|
|
1872
1901
|
cx: 12,
|
|
1873
1902
|
cy: 12,
|
|
@@ -1875,8 +1904,8 @@ var CheckCircleIcon = ({
|
|
|
1875
1904
|
stroke: color,
|
|
1876
1905
|
strokeWidth: 2
|
|
1877
1906
|
}
|
|
1878
|
-
), /* @__PURE__ */
|
|
1879
|
-
|
|
1907
|
+
), /* @__PURE__ */ import_react23.default.createElement(
|
|
1908
|
+
import_react_native_svg9.Path,
|
|
1880
1909
|
{
|
|
1881
1910
|
d: "m9 12 2 2 4-4",
|
|
1882
1911
|
stroke: color,
|
|
@@ -1888,21 +1917,21 @@ var CheckCircleIcon = ({
|
|
|
1888
1917
|
};
|
|
1889
1918
|
|
|
1890
1919
|
// src/assets/LoaderIcon.tsx
|
|
1891
|
-
var
|
|
1892
|
-
var
|
|
1893
|
-
var
|
|
1894
|
-
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);
|
|
1895
1924
|
var LoaderIcon = ({
|
|
1896
1925
|
size = 20,
|
|
1897
1926
|
color = "#00C693"
|
|
1898
1927
|
}) => {
|
|
1899
|
-
const rotateAnim =
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
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, {
|
|
1903
1932
|
toValue: 1,
|
|
1904
1933
|
duration: 1e3,
|
|
1905
|
-
easing:
|
|
1934
|
+
easing: import_react_native14.Easing.linear,
|
|
1906
1935
|
useNativeDriver: true
|
|
1907
1936
|
})
|
|
1908
1937
|
).start();
|
|
@@ -1911,7 +1940,7 @@ var LoaderIcon = ({
|
|
|
1911
1940
|
inputRange: [0, 1],
|
|
1912
1941
|
outputRange: ["0deg", "360deg"]
|
|
1913
1942
|
});
|
|
1914
|
-
return /* @__PURE__ */
|
|
1943
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
1915
1944
|
AnimatedSvg,
|
|
1916
1945
|
{
|
|
1917
1946
|
width: size,
|
|
@@ -1920,8 +1949,8 @@ var LoaderIcon = ({
|
|
|
1920
1949
|
fill: "none",
|
|
1921
1950
|
style: { transform: [{ rotate: spin }] }
|
|
1922
1951
|
},
|
|
1923
|
-
/* @__PURE__ */
|
|
1924
|
-
|
|
1952
|
+
/* @__PURE__ */ import_react24.default.createElement(
|
|
1953
|
+
import_react_native_svg10.Path,
|
|
1925
1954
|
{
|
|
1926
1955
|
d: "M21 12a9 9 0 1 1-6.219-8.56",
|
|
1927
1956
|
stroke: color,
|
|
@@ -1934,11 +1963,11 @@ var LoaderIcon = ({
|
|
|
1934
1963
|
};
|
|
1935
1964
|
|
|
1936
1965
|
// src/assets/SuccessIcon.tsx
|
|
1937
|
-
var
|
|
1938
|
-
var
|
|
1966
|
+
var import_react25 = __toESM(require("react"));
|
|
1967
|
+
var import_react_native_svg11 = __toESM(require("react-native-svg"));
|
|
1939
1968
|
var SuccessIcon = ({ size = 64 }) => {
|
|
1940
|
-
return /* @__PURE__ */
|
|
1941
|
-
|
|
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,
|
|
1942
1971
|
{
|
|
1943
1972
|
cx: 32,
|
|
1944
1973
|
cy: 32,
|
|
@@ -1946,16 +1975,16 @@ var SuccessIcon = ({ size = 64 }) => {
|
|
|
1946
1975
|
fill: "#00C693",
|
|
1947
1976
|
opacity: 0.1
|
|
1948
1977
|
}
|
|
1949
|
-
), /* @__PURE__ */
|
|
1950
|
-
|
|
1978
|
+
), /* @__PURE__ */ import_react25.default.createElement(
|
|
1979
|
+
import_react_native_svg11.Circle,
|
|
1951
1980
|
{
|
|
1952
1981
|
cx: 32,
|
|
1953
1982
|
cy: 32,
|
|
1954
1983
|
r: 24,
|
|
1955
1984
|
fill: "#00C693"
|
|
1956
1985
|
}
|
|
1957
|
-
), /* @__PURE__ */
|
|
1958
|
-
|
|
1986
|
+
), /* @__PURE__ */ import_react25.default.createElement(
|
|
1987
|
+
import_react_native_svg11.Path,
|
|
1959
1988
|
{
|
|
1960
1989
|
d: "M24 32l6 6 12-12",
|
|
1961
1990
|
stroke: "white",
|
|
@@ -1967,11 +1996,11 @@ var SuccessIcon = ({ size = 64 }) => {
|
|
|
1967
1996
|
};
|
|
1968
1997
|
|
|
1969
1998
|
// src/assets/ErrorIcon.tsx
|
|
1970
|
-
var
|
|
1971
|
-
var
|
|
1999
|
+
var import_react26 = __toESM(require("react"));
|
|
2000
|
+
var import_react_native_svg12 = __toESM(require("react-native-svg"));
|
|
1972
2001
|
var ErrorIcon = ({ size = 64 }) => {
|
|
1973
|
-
return /* @__PURE__ */
|
|
1974
|
-
|
|
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,
|
|
1975
2004
|
{
|
|
1976
2005
|
cx: 32,
|
|
1977
2006
|
cy: 32,
|
|
@@ -1979,16 +2008,16 @@ var ErrorIcon = ({ size = 64 }) => {
|
|
|
1979
2008
|
fill: "#EF4444",
|
|
1980
2009
|
opacity: 0.1
|
|
1981
2010
|
}
|
|
1982
|
-
), /* @__PURE__ */
|
|
1983
|
-
|
|
2011
|
+
), /* @__PURE__ */ import_react26.default.createElement(
|
|
2012
|
+
import_react_native_svg12.Circle,
|
|
1984
2013
|
{
|
|
1985
2014
|
cx: 32,
|
|
1986
2015
|
cy: 32,
|
|
1987
2016
|
r: 24,
|
|
1988
2017
|
fill: "#EF4444"
|
|
1989
2018
|
}
|
|
1990
|
-
), /* @__PURE__ */
|
|
1991
|
-
|
|
2019
|
+
), /* @__PURE__ */ import_react26.default.createElement(
|
|
2020
|
+
import_react_native_svg12.Path,
|
|
1992
2021
|
{
|
|
1993
2022
|
d: "M24 24l16 16M40 24l-16 16",
|
|
1994
2023
|
stroke: "white",
|
|
@@ -2000,18 +2029,18 @@ var ErrorIcon = ({ size = 64 }) => {
|
|
|
2000
2029
|
};
|
|
2001
2030
|
|
|
2002
2031
|
// src/assets/SearchIcon.tsx
|
|
2003
|
-
var import_react26 = __toESM(require("react"));
|
|
2004
|
-
var import_react_native_svg12 = __toESM(require("react-native-svg"));
|
|
2005
|
-
|
|
2006
|
-
// src/assets/PlusIcon.tsx
|
|
2007
2032
|
var import_react27 = __toESM(require("react"));
|
|
2008
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"));
|
|
2009
2038
|
var PlusIcon = ({
|
|
2010
2039
|
size = 14,
|
|
2011
2040
|
color = "#6B7280"
|
|
2012
2041
|
}) => {
|
|
2013
|
-
return /* @__PURE__ */
|
|
2014
|
-
|
|
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,
|
|
2015
2044
|
{
|
|
2016
2045
|
d: "M7 3.5v7M3.5 7h7",
|
|
2017
2046
|
stroke: color,
|
|
@@ -2023,8 +2052,8 @@ var PlusIcon = ({
|
|
|
2023
2052
|
|
|
2024
2053
|
// src/wallet-connect/index.tsx
|
|
2025
2054
|
var import_appkit_react_native3 = require("@reown/appkit-react-native");
|
|
2026
|
-
var
|
|
2027
|
-
var
|
|
2055
|
+
var import_react30 = __toESM(require("react"));
|
|
2056
|
+
var import_react_native15 = require("react-native");
|
|
2028
2057
|
|
|
2029
2058
|
// src/utils/uuid.ts
|
|
2030
2059
|
function generateUUID() {
|
|
@@ -2036,7 +2065,7 @@ function generateUUID() {
|
|
|
2036
2065
|
}
|
|
2037
2066
|
|
|
2038
2067
|
// src/wallet-connect/wallet-connect.tsx
|
|
2039
|
-
var
|
|
2068
|
+
var import_react29 = __toESM(require("react"));
|
|
2040
2069
|
var import_appkit_react_native2 = require("@reown/appkit-react-native");
|
|
2041
2070
|
|
|
2042
2071
|
// src/wallet-connect/AppKitConfig.ts
|
|
@@ -2135,7 +2164,7 @@ var createAppKitInstance = (projectId) => {
|
|
|
2135
2164
|
// src/wallet-connect/wallet-connect.tsx
|
|
2136
2165
|
var WalletConnectWrapper = ({ children }) => {
|
|
2137
2166
|
const { walletConnectProjectId } = useKryptosConnect();
|
|
2138
|
-
const appKit =
|
|
2167
|
+
const appKit = import_react29.default.useMemo(() => {
|
|
2139
2168
|
if (!walletConnectProjectId) {
|
|
2140
2169
|
console.warn(
|
|
2141
2170
|
"walletConnectProjectId is missing in KryptosConnectProvider config"
|
|
@@ -2145,9 +2174,9 @@ var WalletConnectWrapper = ({ children }) => {
|
|
|
2145
2174
|
return createAppKitInstance(walletConnectProjectId);
|
|
2146
2175
|
}, [walletConnectProjectId]);
|
|
2147
2176
|
if (!appKit) {
|
|
2148
|
-
return /* @__PURE__ */
|
|
2177
|
+
return /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, children);
|
|
2149
2178
|
}
|
|
2150
|
-
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);
|
|
2151
2180
|
};
|
|
2152
2181
|
var wallet_connect_default = WalletConnectWrapper;
|
|
2153
2182
|
|
|
@@ -2164,23 +2193,23 @@ var WalletConnectComponent = ({
|
|
|
2164
2193
|
const { walletConnectProjectId } = useKryptosConnect();
|
|
2165
2194
|
const theme = useTheme();
|
|
2166
2195
|
if (!walletConnectProjectId) {
|
|
2167
|
-
return /* @__PURE__ */
|
|
2168
|
-
|
|
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,
|
|
2169
2198
|
{
|
|
2170
2199
|
onPress: () => {
|
|
2171
2200
|
setAddIntegrationMode(null);
|
|
2172
2201
|
},
|
|
2173
2202
|
style: styles13.backButton
|
|
2174
2203
|
},
|
|
2175
|
-
/* @__PURE__ */
|
|
2176
|
-
), /* @__PURE__ */
|
|
2177
|
-
|
|
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,
|
|
2178
2207
|
{
|
|
2179
2208
|
style: [styles13.emptyStateTitle, { color: theme.colors.text }]
|
|
2180
2209
|
},
|
|
2181
2210
|
"WalletConnect is not configured"
|
|
2182
|
-
), /* @__PURE__ */
|
|
2183
|
-
|
|
2211
|
+
), /* @__PURE__ */ import_react30.default.createElement(
|
|
2212
|
+
import_react_native15.Text,
|
|
2184
2213
|
{
|
|
2185
2214
|
style: [
|
|
2186
2215
|
styles13.infoText,
|
|
@@ -2188,7 +2217,7 @@ var WalletConnectComponent = ({
|
|
|
2188
2217
|
]
|
|
2189
2218
|
},
|
|
2190
2219
|
"Please add a walletConnectProjectId to KryptosConnectProvider to enable wallet connections."
|
|
2191
|
-
), /* @__PURE__ */
|
|
2220
|
+
), /* @__PURE__ */ import_react30.default.createElement(
|
|
2192
2221
|
Button,
|
|
2193
2222
|
{
|
|
2194
2223
|
variant: "outline",
|
|
@@ -2199,7 +2228,7 @@ var WalletConnectComponent = ({
|
|
|
2199
2228
|
"Go back"
|
|
2200
2229
|
))));
|
|
2201
2230
|
}
|
|
2202
|
-
return /* @__PURE__ */
|
|
2231
|
+
return /* @__PURE__ */ import_react30.default.createElement(wallet_connect_default, null, /* @__PURE__ */ import_react30.default.createElement(
|
|
2203
2232
|
ConnectButton,
|
|
2204
2233
|
{
|
|
2205
2234
|
integration,
|
|
@@ -2224,13 +2253,13 @@ function ConnectButton({
|
|
|
2224
2253
|
const { open, disconnect } = (0, import_appkit_react_native3.useAppKit)();
|
|
2225
2254
|
const { address, isConnected } = (0, import_appkit_react_native3.useAccount)();
|
|
2226
2255
|
const { linkToken, user, clientId } = useKryptosConnect();
|
|
2227
|
-
const [selectedChains, setSelectedChains] = (0,
|
|
2228
|
-
const [errorMessage, setErrorMessage] = (0,
|
|
2229
|
-
const [chainErrors, setChainErrors] = (0,
|
|
2230
|
-
const [isLoading, setIsLoading] = (0,
|
|
2231
|
-
const [userUsedChains, setUserUsedChains] = (0,
|
|
2232
|
-
const [isFetchingChains, setIsFetchingChains] = (0,
|
|
2233
|
-
const availableChains = (0,
|
|
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)(() => {
|
|
2234
2263
|
if (userUsedChains.length > 0) {
|
|
2235
2264
|
return userUsedChains;
|
|
2236
2265
|
}
|
|
@@ -2239,7 +2268,7 @@ function ConnectButton({
|
|
|
2239
2268
|
}
|
|
2240
2269
|
return [];
|
|
2241
2270
|
}, [userUsedChains, integration.walletSupportedChains]);
|
|
2242
|
-
(0,
|
|
2271
|
+
(0, import_react30.useEffect)(() => {
|
|
2243
2272
|
if (!isConnected || !address || !address.trim()) {
|
|
2244
2273
|
setUserUsedChains([]);
|
|
2245
2274
|
setSelectedChains(/* @__PURE__ */ new Set());
|
|
@@ -2321,7 +2350,7 @@ function ConnectButton({
|
|
|
2321
2350
|
const walletTestsPayload = chainsToProcess.map((chain) => {
|
|
2322
2351
|
const walletId = generateUUID();
|
|
2323
2352
|
const displaySuffix = address ? address?.length > 8 ? `${address.slice(0, 4)}...${address.slice(-4)}` : address : "";
|
|
2324
|
-
const alias = `${
|
|
2353
|
+
const alias = `${integration.public_name} (${displaySuffix})`;
|
|
2325
2354
|
const provider = providersList.find((p) => p.id === chain.id);
|
|
2326
2355
|
return {
|
|
2327
2356
|
chain,
|
|
@@ -2369,14 +2398,15 @@ function ConnectButton({
|
|
|
2369
2398
|
clientId,
|
|
2370
2399
|
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2371
2400
|
},
|
|
2372
|
-
metadata: {
|
|
2373
|
-
environment: "sandbox"
|
|
2374
|
-
},
|
|
2375
2401
|
addedOn: (/* @__PURE__ */ new Date()).getTime(),
|
|
2376
|
-
default_chain:
|
|
2377
|
-
default_chain_logo:
|
|
2378
|
-
type: provider.type,
|
|
2379
|
-
isNftSupported: provider
|
|
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
|
+
}
|
|
2380
2410
|
};
|
|
2381
2411
|
integrationsToAdd.push(data);
|
|
2382
2412
|
} else {
|
|
@@ -2396,6 +2426,9 @@ function ConnectButton({
|
|
|
2396
2426
|
}
|
|
2397
2427
|
if (integrationsToAdd.length > 0) {
|
|
2398
2428
|
onAddHandle(integrationsToAdd);
|
|
2429
|
+
if (isConnected) {
|
|
2430
|
+
disconnect();
|
|
2431
|
+
}
|
|
2399
2432
|
setChainErrors({});
|
|
2400
2433
|
setErrorMessage("");
|
|
2401
2434
|
} else {
|
|
@@ -2425,16 +2458,35 @@ function ConnectButton({
|
|
|
2425
2458
|
setChainErrors(newErrors);
|
|
2426
2459
|
}
|
|
2427
2460
|
};
|
|
2428
|
-
return /* @__PURE__ */
|
|
2429
|
-
|
|
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,
|
|
2430
2463
|
{
|
|
2431
2464
|
onPress: () => {
|
|
2432
2465
|
setAddIntegrationMode(null);
|
|
2466
|
+
if (isConnected) {
|
|
2467
|
+
disconnect();
|
|
2468
|
+
}
|
|
2433
2469
|
},
|
|
2434
2470
|
style: styles13.backButton
|
|
2435
2471
|
},
|
|
2436
|
-
/* @__PURE__ */
|
|
2437
|
-
), /* @__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(
|
|
2438
2490
|
Button,
|
|
2439
2491
|
{
|
|
2440
2492
|
variant: "primary",
|
|
@@ -2442,46 +2494,46 @@ function ConnectButton({
|
|
|
2442
2494
|
onPress: () => open({ view: "Connect" })
|
|
2443
2495
|
},
|
|
2444
2496
|
"Connect Wallet"
|
|
2445
|
-
)) : /* @__PURE__ */
|
|
2446
|
-
|
|
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,
|
|
2447
2499
|
{
|
|
2448
2500
|
style: [styles13.connectedTitle, { color: theme.colors.text }]
|
|
2449
2501
|
},
|
|
2450
2502
|
"Wallet Connected"
|
|
2451
|
-
), /* @__PURE__ */
|
|
2452
|
-
|
|
2503
|
+
), /* @__PURE__ */ import_react30.default.createElement(
|
|
2504
|
+
import_react_native15.Text,
|
|
2453
2505
|
{
|
|
2454
2506
|
style: [styles13.connectedText, { color: theme.colors.text }]
|
|
2455
2507
|
},
|
|
2456
2508
|
"Address: ",
|
|
2457
2509
|
address
|
|
2458
|
-
), /* @__PURE__ */
|
|
2459
|
-
|
|
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,
|
|
2460
2512
|
{
|
|
2461
2513
|
style: [styles13.fetchingText, { color: theme.colors.text }]
|
|
2462
2514
|
},
|
|
2463
2515
|
"Fetching chains..."
|
|
2464
|
-
) : null), availableChains.length > 0 && address && /* @__PURE__ */
|
|
2465
|
-
|
|
2516
|
+
) : null), availableChains.length > 0 && address && /* @__PURE__ */ import_react30.default.createElement(
|
|
2517
|
+
import_react_native15.ScrollView,
|
|
2466
2518
|
{
|
|
2467
2519
|
style: styles13.scrollView,
|
|
2468
2520
|
contentContainerStyle: styles13.scrollViewContent,
|
|
2469
2521
|
showsVerticalScrollIndicator: true,
|
|
2470
2522
|
nestedScrollEnabled: true
|
|
2471
2523
|
},
|
|
2472
|
-
/* @__PURE__ */
|
|
2473
|
-
/* @__PURE__ */
|
|
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) => {
|
|
2474
2526
|
const isSelected = selectedChains.has(chain.id);
|
|
2475
2527
|
const hasError = chainErrors[chain.id];
|
|
2476
|
-
return /* @__PURE__ */
|
|
2477
|
-
|
|
2528
|
+
return /* @__PURE__ */ import_react30.default.createElement(
|
|
2529
|
+
import_react_native15.TouchableOpacity,
|
|
2478
2530
|
{
|
|
2479
2531
|
onPress: () => toggleChainSelection(chain.id),
|
|
2480
2532
|
style: styles13.chainButton,
|
|
2481
2533
|
key: chain.id
|
|
2482
2534
|
},
|
|
2483
|
-
/* @__PURE__ */
|
|
2484
|
-
|
|
2535
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
2536
|
+
import_react_native15.View,
|
|
2485
2537
|
{
|
|
2486
2538
|
style: [
|
|
2487
2539
|
styles13.chainChip,
|
|
@@ -2491,8 +2543,8 @@ function ConnectButton({
|
|
|
2491
2543
|
}
|
|
2492
2544
|
]
|
|
2493
2545
|
},
|
|
2494
|
-
/* @__PURE__ */
|
|
2495
|
-
|
|
2546
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
2547
|
+
import_react_native15.Text,
|
|
2496
2548
|
{
|
|
2497
2549
|
style: [
|
|
2498
2550
|
styles13.chainName,
|
|
@@ -2503,13 +2555,13 @@ function ConnectButton({
|
|
|
2503
2555
|
},
|
|
2504
2556
|
chain.id
|
|
2505
2557
|
),
|
|
2506
|
-
isSelected ? /* @__PURE__ */
|
|
2558
|
+
isSelected ? /* @__PURE__ */ import_react30.default.createElement(
|
|
2507
2559
|
CloseIcon,
|
|
2508
2560
|
{
|
|
2509
2561
|
size: 12,
|
|
2510
2562
|
color: hasError ? theme.colors.error : theme.colors.primary
|
|
2511
2563
|
}
|
|
2512
|
-
) : /* @__PURE__ */
|
|
2564
|
+
) : /* @__PURE__ */ import_react30.default.createElement(
|
|
2513
2565
|
PlusIcon,
|
|
2514
2566
|
{
|
|
2515
2567
|
size: 12,
|
|
@@ -2518,8 +2570,8 @@ function ConnectButton({
|
|
|
2518
2570
|
)
|
|
2519
2571
|
)
|
|
2520
2572
|
);
|
|
2521
|
-
})), errorMessage ? /* @__PURE__ */
|
|
2522
|
-
|
|
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,
|
|
2523
2575
|
{
|
|
2524
2576
|
style: [
|
|
2525
2577
|
styles13.chainErrorsTitle,
|
|
@@ -2531,8 +2583,8 @@ function ConnectButton({
|
|
|
2531
2583
|
const chain = availableChains.find(
|
|
2532
2584
|
(c) => c.id === chainId
|
|
2533
2585
|
);
|
|
2534
|
-
return /* @__PURE__ */
|
|
2535
|
-
|
|
2586
|
+
return /* @__PURE__ */ import_react30.default.createElement(
|
|
2587
|
+
import_react_native15.Text,
|
|
2536
2588
|
{
|
|
2537
2589
|
key: chainId,
|
|
2538
2590
|
style: [
|
|
@@ -2546,7 +2598,7 @@ function ConnectButton({
|
|
|
2546
2598
|
String(error)
|
|
2547
2599
|
);
|
|
2548
2600
|
})))
|
|
2549
|
-
))), availableChains.length > 0 && address && /* @__PURE__ */
|
|
2601
|
+
))), availableChains.length > 0 && address && /* @__PURE__ */ import_react30.default.createElement(ModalFooter, { style: { paddingVertical: 8 } }, /* @__PURE__ */ import_react30.default.createElement(
|
|
2550
2602
|
Button,
|
|
2551
2603
|
{
|
|
2552
2604
|
variant: "outline",
|
|
@@ -2557,9 +2609,9 @@ function ConnectButton({
|
|
|
2557
2609
|
style: styles13.button
|
|
2558
2610
|
},
|
|
2559
2611
|
selectedChains.size > 0 ? `Add ${selectedChains.size} Chain${selectedChains.size > 1 ? "s" : ""}` : "Add Integration"
|
|
2560
|
-
), /* @__PURE__ */
|
|
2612
|
+
), /* @__PURE__ */ import_react30.default.createElement(Footer, null)));
|
|
2561
2613
|
}
|
|
2562
|
-
var styles13 =
|
|
2614
|
+
var styles13 = import_react_native15.StyleSheet.create({
|
|
2563
2615
|
connectedContainer: {
|
|
2564
2616
|
flex: 1
|
|
2565
2617
|
},
|
|
@@ -2675,12 +2727,41 @@ var styles13 = import_react_native14.StyleSheet.create({
|
|
|
2675
2727
|
},
|
|
2676
2728
|
emptyStateButton: {
|
|
2677
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"
|
|
2678
2759
|
}
|
|
2679
2760
|
});
|
|
2680
2761
|
|
|
2681
2762
|
// src/molecules/IntegrationForm.tsx
|
|
2682
|
-
var
|
|
2683
|
-
var
|
|
2763
|
+
var import_react31 = __toESM(require("react"));
|
|
2764
|
+
var import_react_native16 = require("react-native");
|
|
2684
2765
|
var IntegrationForm = ({
|
|
2685
2766
|
metadata,
|
|
2686
2767
|
onAddHandle,
|
|
@@ -2691,25 +2772,25 @@ var IntegrationForm = ({
|
|
|
2691
2772
|
}) => {
|
|
2692
2773
|
const { clientId, linkToken, user } = useKryptosConnect();
|
|
2693
2774
|
const theme = useTheme();
|
|
2694
|
-
const [isLoading, setIsLoading] =
|
|
2695
|
-
const [isFetchingChains, setIsFetchingChains] =
|
|
2696
|
-
const [userUsedChains, setUserUsedChains] =
|
|
2697
|
-
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(
|
|
2698
2779
|
/* @__PURE__ */ new Set()
|
|
2699
2780
|
);
|
|
2700
|
-
const [chainErrors, setChainErrors] =
|
|
2781
|
+
const [chainErrors, setChainErrors] = import_react31.default.useState(
|
|
2701
2782
|
{}
|
|
2702
2783
|
);
|
|
2703
|
-
const [errorMessage, setErrorMessage] =
|
|
2704
|
-
const [formValues, setFormValues] =
|
|
2784
|
+
const [errorMessage, setErrorMessage] = import_react31.default.useState("");
|
|
2785
|
+
const [formValues, setFormValues] = import_react31.default.useState({
|
|
2705
2786
|
address: "",
|
|
2706
2787
|
account_name: "",
|
|
2707
2788
|
api_key: "",
|
|
2708
2789
|
secret_key: "",
|
|
2709
2790
|
password: ""
|
|
2710
2791
|
});
|
|
2711
|
-
const [formErrors, setFormErrors] =
|
|
2712
|
-
|
|
2792
|
+
const [formErrors, setFormErrors] = import_react31.default.useState({});
|
|
2793
|
+
import_react31.default.useEffect(() => {
|
|
2713
2794
|
if (!formValues.address || !formValues.address.trim()) {
|
|
2714
2795
|
setUserUsedChains([]);
|
|
2715
2796
|
setSelectedChains(/* @__PURE__ */ new Set());
|
|
@@ -2835,9 +2916,6 @@ var IntegrationForm = ({
|
|
|
2835
2916
|
clientId,
|
|
2836
2917
|
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2837
2918
|
},
|
|
2838
|
-
metadata: {
|
|
2839
|
-
environment: "sandbox"
|
|
2840
|
-
},
|
|
2841
2919
|
addedOn: (/* @__PURE__ */ new Date()).getTime(),
|
|
2842
2920
|
default_chain: chain.name,
|
|
2843
2921
|
default_chain_logo: chain.logo || null,
|
|
@@ -2956,24 +3034,24 @@ var IntegrationForm = ({
|
|
|
2956
3034
|
};
|
|
2957
3035
|
const hasNoFields = !metadata.password && !metadata.secret_key && !metadata.api_key && !metadata.address && !metadata.account_name;
|
|
2958
3036
|
const shouldShowFormFields = metadata.password || metadata.secret_key || metadata.api_key || metadata.address || metadata.account_name;
|
|
2959
|
-
const renderLogo = () => metadata.logo ? /* @__PURE__ */
|
|
2960
|
-
|
|
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,
|
|
2961
3039
|
{
|
|
2962
3040
|
source: { uri: metadata.logo },
|
|
2963
3041
|
style: styles14.logo,
|
|
2964
3042
|
resizeMode: "contain"
|
|
2965
3043
|
}
|
|
2966
|
-
) : /* @__PURE__ */
|
|
2967
|
-
|
|
3044
|
+
) : /* @__PURE__ */ import_react31.default.createElement(
|
|
3045
|
+
import_react_native16.View,
|
|
2968
3046
|
{
|
|
2969
3047
|
style: [
|
|
2970
3048
|
styles14.logoPlaceholder,
|
|
2971
3049
|
{ backgroundColor: theme.colors.surface }
|
|
2972
3050
|
]
|
|
2973
3051
|
},
|
|
2974
|
-
/* @__PURE__ */
|
|
3052
|
+
/* @__PURE__ */ import_react31.default.createElement(import_react_native16.Text, { style: { color: theme.colors.text } }, metadata.name?.charAt(0) || "?")
|
|
2975
3053
|
);
|
|
2976
|
-
const renderInput = (key, props) => /* @__PURE__ */
|
|
3054
|
+
const renderInput = (key, props) => /* @__PURE__ */ import_react31.default.createElement(
|
|
2977
3055
|
Input,
|
|
2978
3056
|
{
|
|
2979
3057
|
placeholder: props.placeholder,
|
|
@@ -2985,19 +3063,19 @@ var IntegrationForm = ({
|
|
|
2985
3063
|
secureTextEntry: props.secureTextEntry
|
|
2986
3064
|
}
|
|
2987
3065
|
);
|
|
2988
|
-
const renderErrorAlert = () => errorMessage ? /* @__PURE__ */
|
|
2989
|
-
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) => {
|
|
2990
3068
|
const isSelected = selectedChains.has(chain.id);
|
|
2991
3069
|
const hasError = chainErrors[chain.id];
|
|
2992
|
-
return /* @__PURE__ */
|
|
2993
|
-
|
|
3070
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
3071
|
+
import_react_native16.TouchableOpacity,
|
|
2994
3072
|
{
|
|
2995
3073
|
onPress: () => toggleChainSelection(chain.id),
|
|
2996
3074
|
style: styles14.chainButton,
|
|
2997
3075
|
key: chain.id
|
|
2998
3076
|
},
|
|
2999
|
-
/* @__PURE__ */
|
|
3000
|
-
|
|
3077
|
+
/* @__PURE__ */ import_react31.default.createElement(
|
|
3078
|
+
import_react_native16.View,
|
|
3001
3079
|
{
|
|
3002
3080
|
style: [
|
|
3003
3081
|
styles14.chainChip,
|
|
@@ -3007,8 +3085,8 @@ var IntegrationForm = ({
|
|
|
3007
3085
|
}
|
|
3008
3086
|
]
|
|
3009
3087
|
},
|
|
3010
|
-
/* @__PURE__ */
|
|
3011
|
-
|
|
3088
|
+
/* @__PURE__ */ import_react31.default.createElement(
|
|
3089
|
+
import_react_native16.Text,
|
|
3012
3090
|
{
|
|
3013
3091
|
style: [
|
|
3014
3092
|
styles14.chainName,
|
|
@@ -3019,25 +3097,25 @@ var IntegrationForm = ({
|
|
|
3019
3097
|
},
|
|
3020
3098
|
chain.name
|
|
3021
3099
|
),
|
|
3022
|
-
isSelected ? /* @__PURE__ */
|
|
3100
|
+
isSelected ? /* @__PURE__ */ import_react31.default.createElement(
|
|
3023
3101
|
CloseIcon,
|
|
3024
3102
|
{
|
|
3025
3103
|
size: 12,
|
|
3026
3104
|
color: hasError ? theme.colors.error : theme.colors.primary
|
|
3027
3105
|
}
|
|
3028
|
-
) : /* @__PURE__ */
|
|
3106
|
+
) : /* @__PURE__ */ import_react31.default.createElement(PlusIcon, { size: 12, color: theme.colors.textSecondary })
|
|
3029
3107
|
)
|
|
3030
3108
|
);
|
|
3031
|
-
}))), Object.keys(chainErrors).length > 0 && /* @__PURE__ */
|
|
3032
|
-
|
|
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,
|
|
3033
3111
|
{
|
|
3034
3112
|
style: [styles14.chainErrorsTitle, { color: theme.colors.error }]
|
|
3035
3113
|
},
|
|
3036
3114
|
"Errors:"
|
|
3037
3115
|
), Object.entries(chainErrors).map(([chainId, error]) => {
|
|
3038
3116
|
const chain = userUsedChains.find((c) => c.id === chainId);
|
|
3039
|
-
return /* @__PURE__ */
|
|
3040
|
-
|
|
3117
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
3118
|
+
import_react_native16.Text,
|
|
3041
3119
|
{
|
|
3042
3120
|
key: chainId,
|
|
3043
3121
|
style: [styles14.chainErrorItem, { color: theme.colors.error }]
|
|
@@ -3048,7 +3126,7 @@ var IntegrationForm = ({
|
|
|
3048
3126
|
error
|
|
3049
3127
|
);
|
|
3050
3128
|
})));
|
|
3051
|
-
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", {
|
|
3052
3130
|
placeholder: "Enter address",
|
|
3053
3131
|
autoCapitalize: "none",
|
|
3054
3132
|
autoCorrect: false
|
|
@@ -3064,16 +3142,16 @@ var IntegrationForm = ({
|
|
|
3064
3142
|
}), metadata.password && renderInput("password", {
|
|
3065
3143
|
placeholder: "Enter Password",
|
|
3066
3144
|
secureTextEntry: true
|
|
3067
|
-
})), 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.")));
|
|
3068
3146
|
const addIntegrationLabel = formValues.address && userUsedChains.length > 0 && selectedChains.size > 0 ? `Add ${selectedChains.size} Chain${selectedChains.size !== 1 ? "s" : ""}` : "Add Integration";
|
|
3069
|
-
return /* @__PURE__ */
|
|
3070
|
-
|
|
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,
|
|
3071
3149
|
{
|
|
3072
3150
|
onPress: () => setAddIntegrationMode(null),
|
|
3073
3151
|
style: styles14.backButton
|
|
3074
3152
|
},
|
|
3075
|
-
/* @__PURE__ */
|
|
3076
|
-
), /* @__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(
|
|
3077
3155
|
Button,
|
|
3078
3156
|
{
|
|
3079
3157
|
variant: "outline",
|
|
@@ -3084,7 +3162,7 @@ var IntegrationForm = ({
|
|
|
3084
3162
|
style: styles14.button
|
|
3085
3163
|
},
|
|
3086
3164
|
addIntegrationLabel
|
|
3087
|
-
), /* @__PURE__ */
|
|
3165
|
+
), /* @__PURE__ */ import_react31.default.createElement(Footer, null))) : /* @__PURE__ */ import_react31.default.createElement(
|
|
3088
3166
|
WalletConnectComponent,
|
|
3089
3167
|
{
|
|
3090
3168
|
integration: metadata,
|
|
@@ -3097,7 +3175,7 @@ var IntegrationForm = ({
|
|
|
3097
3175
|
}
|
|
3098
3176
|
));
|
|
3099
3177
|
};
|
|
3100
|
-
var styles14 =
|
|
3178
|
+
var styles14 = import_react_native16.StyleSheet.create({
|
|
3101
3179
|
scrollViewContent: {
|
|
3102
3180
|
flexGrow: 1,
|
|
3103
3181
|
paddingBottom: 100
|
|
@@ -3226,14 +3304,14 @@ var Integration = ({
|
|
|
3226
3304
|
}) => {
|
|
3227
3305
|
const { appName, linkToken } = useKryptosConnect();
|
|
3228
3306
|
const theme = useTheme();
|
|
3229
|
-
const [addIntegrationMode, setAddIntegrationMode] =
|
|
3230
|
-
const [query, setQuery] =
|
|
3231
|
-
const [activeTab, setActiveTab] =
|
|
3232
|
-
const [supportedProviders, setSupportedProviders] =
|
|
3233
|
-
const [addedIntegrations, setAddedIntegrations] =
|
|
3234
|
-
const [existingIntegrations, setExistingIntegrations] =
|
|
3235
|
-
const [isLoading, setIsLoading] =
|
|
3236
|
-
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("");
|
|
3237
3315
|
const handleClose = () => {
|
|
3238
3316
|
onClose();
|
|
3239
3317
|
};
|
|
@@ -3264,13 +3342,13 @@ var Integration = ({
|
|
|
3264
3342
|
setIsLoading(false);
|
|
3265
3343
|
}
|
|
3266
3344
|
};
|
|
3267
|
-
|
|
3345
|
+
import_react32.default.useEffect(() => {
|
|
3268
3346
|
if (linkToken) {
|
|
3269
3347
|
fetchSupportedProviders();
|
|
3270
3348
|
fetchExistingIntegrations();
|
|
3271
3349
|
}
|
|
3272
3350
|
}, [linkToken]);
|
|
3273
|
-
const isIntegrationAdded =
|
|
3351
|
+
const isIntegrationAdded = import_react32.default.useCallback(
|
|
3274
3352
|
(publicName) => {
|
|
3275
3353
|
const integrations = [...addedIntegrations, ...existingIntegrations];
|
|
3276
3354
|
return integrations.some(
|
|
@@ -3279,7 +3357,7 @@ var Integration = ({
|
|
|
3279
3357
|
},
|
|
3280
3358
|
[addedIntegrations, existingIntegrations]
|
|
3281
3359
|
);
|
|
3282
|
-
const getIntegrationCount =
|
|
3360
|
+
const getIntegrationCount = import_react32.default.useCallback(
|
|
3283
3361
|
(publicName) => {
|
|
3284
3362
|
const integrations = [...addedIntegrations, ...existingIntegrations];
|
|
3285
3363
|
return integrations.filter(
|
|
@@ -3288,7 +3366,7 @@ var Integration = ({
|
|
|
3288
3366
|
},
|
|
3289
3367
|
[addedIntegrations, existingIntegrations]
|
|
3290
3368
|
);
|
|
3291
|
-
const filteredResults =
|
|
3369
|
+
const filteredResults = import_react32.default.useMemo(() => {
|
|
3292
3370
|
let filtered = supportedProviders;
|
|
3293
3371
|
if (activeTab !== "all") {
|
|
3294
3372
|
filtered = filtered.filter((provider) => provider.type === activeTab);
|
|
@@ -3328,8 +3406,8 @@ var Integration = ({
|
|
|
3328
3406
|
setIsLoading(false);
|
|
3329
3407
|
}
|
|
3330
3408
|
};
|
|
3331
|
-
const renderProviderItem = ({ item }) => /* @__PURE__ */
|
|
3332
|
-
|
|
3409
|
+
const renderProviderItem = ({ item }) => /* @__PURE__ */ import_react32.default.createElement(
|
|
3410
|
+
import_react_native17.TouchableOpacity,
|
|
3333
3411
|
{
|
|
3334
3412
|
style: [
|
|
3335
3413
|
styles15.providerItem,
|
|
@@ -3341,25 +3419,25 @@ var Integration = ({
|
|
|
3341
3419
|
onPress: () => setAddIntegrationMode(item),
|
|
3342
3420
|
activeOpacity: 0.7
|
|
3343
3421
|
},
|
|
3344
|
-
/* @__PURE__ */
|
|
3345
|
-
|
|
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,
|
|
3346
3424
|
{
|
|
3347
3425
|
source: { uri: item?.logo },
|
|
3348
3426
|
style: styles15.providerLogo,
|
|
3349
3427
|
resizeMode: "contain"
|
|
3350
3428
|
}
|
|
3351
|
-
) : /* @__PURE__ */
|
|
3352
|
-
|
|
3429
|
+
) : /* @__PURE__ */ import_react32.default.createElement(
|
|
3430
|
+
import_react_native17.View,
|
|
3353
3431
|
{
|
|
3354
3432
|
style: [
|
|
3355
3433
|
styles15.providerLogoPlaceholder,
|
|
3356
3434
|
{ backgroundColor: theme.colors.surfaceSecondary }
|
|
3357
3435
|
]
|
|
3358
3436
|
},
|
|
3359
|
-
/* @__PURE__ */
|
|
3360
|
-
), /* @__PURE__ */
|
|
3361
|
-
isIntegrationAdded(item?.public_name) && /* @__PURE__ */
|
|
3362
|
-
|
|
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,
|
|
3363
3441
|
{
|
|
3364
3442
|
style: [
|
|
3365
3443
|
styles15.providerCount,
|
|
@@ -3369,16 +3447,70 @@ var Integration = ({
|
|
|
3369
3447
|
getIntegrationCount(item?.public_name)
|
|
3370
3448
|
))
|
|
3371
3449
|
);
|
|
3372
|
-
const renderSkeletonItem = () => /* @__PURE__ */
|
|
3373
|
-
return /* @__PURE__ */
|
|
3374
|
-
|
|
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,
|
|
3375
3453
|
{
|
|
3376
3454
|
onPress: () => setAddIntegrationMode(null),
|
|
3377
3455
|
style: styles15.backButton
|
|
3378
3456
|
},
|
|
3379
|
-
/* @__PURE__ */
|
|
3380
|
-
), /* @__PURE__ */
|
|
3381
|
-
|
|
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,
|
|
3382
3514
|
{
|
|
3383
3515
|
data: isLoading ? Array.from({ length: 8 }, (_, i) => ({
|
|
3384
3516
|
id: `skeleton-${i}`,
|
|
@@ -3394,62 +3526,8 @@ var Integration = ({
|
|
|
3394
3526
|
{ paddingHorizontal: theme.spacing.xl }
|
|
3395
3527
|
],
|
|
3396
3528
|
showsVerticalScrollIndicator: false,
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
{
|
|
3400
|
-
style: {
|
|
3401
|
-
paddingVertical: theme.spacing.sm + 2,
|
|
3402
|
-
backgroundColor: theme.colors.background,
|
|
3403
|
-
zIndex: 10
|
|
3404
|
-
}
|
|
3405
|
-
},
|
|
3406
|
-
/* @__PURE__ */ import_react31.default.createElement(
|
|
3407
|
-
Input,
|
|
3408
|
-
{
|
|
3409
|
-
value: query,
|
|
3410
|
-
onChangeText: setQuery,
|
|
3411
|
-
placeholder: "Search Integrations...",
|
|
3412
|
-
containerStyle: styles15.searchInput
|
|
3413
|
-
}
|
|
3414
|
-
),
|
|
3415
|
-
/* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles15.tabsContainer }, [
|
|
3416
|
-
{ label: "All", value: "all" },
|
|
3417
|
-
{ label: "Exchanges", value: "exchange" },
|
|
3418
|
-
{ label: "Blockchains", value: "blockchain" },
|
|
3419
|
-
{ label: "Wallets", value: "wallet" }
|
|
3420
|
-
].map((tab) => /* @__PURE__ */ import_react31.default.createElement(
|
|
3421
|
-
import_react_native16.TouchableOpacity,
|
|
3422
|
-
{
|
|
3423
|
-
key: tab.value,
|
|
3424
|
-
style: [
|
|
3425
|
-
styles15.tab,
|
|
3426
|
-
{
|
|
3427
|
-
backgroundColor: activeTab === tab.value ? theme.colors.primary : theme.colors.surface,
|
|
3428
|
-
borderColor: theme.colors.border
|
|
3429
|
-
}
|
|
3430
|
-
],
|
|
3431
|
-
onPress: () => setActiveTab(
|
|
3432
|
-
tab.value
|
|
3433
|
-
),
|
|
3434
|
-
activeOpacity: 0.7
|
|
3435
|
-
},
|
|
3436
|
-
/* @__PURE__ */ import_react31.default.createElement(
|
|
3437
|
-
import_react_native16.Text,
|
|
3438
|
-
{
|
|
3439
|
-
style: [
|
|
3440
|
-
styles15.tabText,
|
|
3441
|
-
{
|
|
3442
|
-
color: activeTab === tab.value ? theme.colors.white : theme.colors.text
|
|
3443
|
-
}
|
|
3444
|
-
]
|
|
3445
|
-
},
|
|
3446
|
-
tab.label
|
|
3447
|
-
)
|
|
3448
|
-
)))
|
|
3449
|
-
),
|
|
3450
|
-
stickyHeaderIndices: [0],
|
|
3451
|
-
ListEmptyComponent: /* @__PURE__ */ import_react31.default.createElement(import_react_native16.View, { style: styles15.emptyContainer }, !isLoading && /* @__PURE__ */ import_react31.default.createElement(
|
|
3452
|
-
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,
|
|
3453
3531
|
{
|
|
3454
3532
|
style: [
|
|
3455
3533
|
styles15.emptyText,
|
|
@@ -3459,7 +3537,7 @@ var Integration = ({
|
|
|
3459
3537
|
query ? "No search results found" : "No supported integrations found"
|
|
3460
3538
|
))
|
|
3461
3539
|
}
|
|
3462
|
-
), 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(
|
|
3463
3541
|
Button,
|
|
3464
3542
|
{
|
|
3465
3543
|
variant: "outline",
|
|
@@ -3470,7 +3548,7 @@ var Integration = ({
|
|
|
3470
3548
|
style: styles15.continueButton
|
|
3471
3549
|
},
|
|
3472
3550
|
"Continue"
|
|
3473
|
-
), /* @__PURE__ */
|
|
3551
|
+
), /* @__PURE__ */ import_react32.default.createElement(Footer, null))) : /* @__PURE__ */ import_react32.default.createElement(
|
|
3474
3552
|
IntegrationForm,
|
|
3475
3553
|
{
|
|
3476
3554
|
metadata: addIntegrationMode,
|
|
@@ -3485,7 +3563,7 @@ var Integration = ({
|
|
|
3485
3563
|
}
|
|
3486
3564
|
));
|
|
3487
3565
|
};
|
|
3488
|
-
var styles15 =
|
|
3566
|
+
var styles15 = import_react_native17.StyleSheet.create({
|
|
3489
3567
|
headerContent: {
|
|
3490
3568
|
flexDirection: "row",
|
|
3491
3569
|
alignItems: "center"
|
|
@@ -3534,7 +3612,9 @@ var styles15 = import_react_native16.StyleSheet.create({
|
|
|
3534
3612
|
flexDirection: "row",
|
|
3535
3613
|
alignItems: "center",
|
|
3536
3614
|
justifyContent: "space-between",
|
|
3537
|
-
|
|
3615
|
+
paddingVertical: 8,
|
|
3616
|
+
// theme.spacing.md
|
|
3617
|
+
paddingHorizontal: 12,
|
|
3538
3618
|
// theme.spacing.md
|
|
3539
3619
|
borderRadius: 12,
|
|
3540
3620
|
// theme.borderRadius.md
|
|
@@ -3603,44 +3683,44 @@ var styles15 = import_react_native16.StyleSheet.create({
|
|
|
3603
3683
|
},
|
|
3604
3684
|
tabsContainer: {
|
|
3605
3685
|
flexDirection: "row",
|
|
3606
|
-
gap:
|
|
3686
|
+
gap: 6,
|
|
3607
3687
|
// theme.spacing.sm
|
|
3608
3688
|
flexWrap: "wrap"
|
|
3609
3689
|
},
|
|
3610
3690
|
tab: {
|
|
3611
|
-
paddingVertical:
|
|
3691
|
+
paddingVertical: 4,
|
|
3612
3692
|
// theme.spacing.sm
|
|
3613
|
-
paddingHorizontal:
|
|
3693
|
+
paddingHorizontal: 10,
|
|
3614
3694
|
// theme.spacing.lg
|
|
3615
|
-
borderRadius:
|
|
3695
|
+
borderRadius: 8,
|
|
3616
3696
|
// theme.borderRadius.full / 2
|
|
3617
3697
|
borderWidth: 1,
|
|
3618
3698
|
alignItems: "center",
|
|
3619
3699
|
justifyContent: "center"
|
|
3620
3700
|
},
|
|
3621
3701
|
tabText: {
|
|
3622
|
-
fontSize:
|
|
3702
|
+
fontSize: 12,
|
|
3623
3703
|
// theme.fontSize.sm
|
|
3624
3704
|
fontWeight: "600"
|
|
3625
3705
|
}
|
|
3626
3706
|
});
|
|
3627
3707
|
|
|
3628
3708
|
// src/molecules/OTPVerify.tsx
|
|
3629
|
-
var
|
|
3630
|
-
var
|
|
3709
|
+
var import_react33 = __toESM(require("react"));
|
|
3710
|
+
var import_react_native18 = require("react-native");
|
|
3631
3711
|
var OTPVerify = ({
|
|
3632
3712
|
open,
|
|
3633
3713
|
onSuccess,
|
|
3634
3714
|
onClose
|
|
3635
3715
|
}) => {
|
|
3636
3716
|
const theme = useTheme();
|
|
3637
|
-
const [otp, setOtp] =
|
|
3717
|
+
const [otp, setOtp] = import_react33.default.useState("");
|
|
3638
3718
|
const { linkToken, clientId, email, setUser } = useKryptosConnect();
|
|
3639
|
-
const [isLoading, setIsLoading] =
|
|
3640
|
-
const [isResending, setIsResending] =
|
|
3641
|
-
const [resendCooldown, setResendCooldown] =
|
|
3642
|
-
const [errorMessage, setErrorMessage] =
|
|
3643
|
-
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("");
|
|
3644
3724
|
const handleSubmit = async () => {
|
|
3645
3725
|
if (otp.length !== 6) return;
|
|
3646
3726
|
setIsLoading(true);
|
|
@@ -3691,7 +3771,7 @@ var OTPVerify = ({
|
|
|
3691
3771
|
setSuccessMessage("");
|
|
3692
3772
|
setOtp("");
|
|
3693
3773
|
};
|
|
3694
|
-
|
|
3774
|
+
import_react33.default.useEffect(() => {
|
|
3695
3775
|
if (resendCooldown > 0) {
|
|
3696
3776
|
const timer = setTimeout(() => {
|
|
3697
3777
|
setResendCooldown(resendCooldown - 1);
|
|
@@ -3700,20 +3780,20 @@ var OTPVerify = ({
|
|
|
3700
3780
|
}
|
|
3701
3781
|
return void 0;
|
|
3702
3782
|
}, [resendCooldown]);
|
|
3703
|
-
return /* @__PURE__ */
|
|
3704
|
-
|
|
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,
|
|
3705
3785
|
{
|
|
3706
3786
|
style: [styles16.infoText, { color: theme.colors.textSecondary }]
|
|
3707
3787
|
},
|
|
3708
3788
|
"We have sent a verification code to"
|
|
3709
|
-
), /* @__PURE__ */
|
|
3789
|
+
), /* @__PURE__ */ import_react33.default.createElement(import_react_native18.Text, { style: [styles16.emailText, { color: theme.colors.text }] }, email)), /* @__PURE__ */ import_react33.default.createElement(
|
|
3710
3790
|
OTP,
|
|
3711
3791
|
{
|
|
3712
3792
|
onComplete: handleOtpComplete,
|
|
3713
3793
|
length: 6,
|
|
3714
3794
|
setErrorMessage
|
|
3715
3795
|
}
|
|
3716
|
-
), 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(
|
|
3717
3797
|
Button,
|
|
3718
3798
|
{
|
|
3719
3799
|
variant: "outline",
|
|
@@ -3724,22 +3804,22 @@ var OTPVerify = ({
|
|
|
3724
3804
|
style: styles16.button
|
|
3725
3805
|
},
|
|
3726
3806
|
"Continue"
|
|
3727
|
-
), /* @__PURE__ */
|
|
3728
|
-
|
|
3807
|
+
), /* @__PURE__ */ import_react33.default.createElement(
|
|
3808
|
+
import_react_native18.TouchableOpacity,
|
|
3729
3809
|
{
|
|
3730
3810
|
onPress: handleResendOtp,
|
|
3731
3811
|
disabled: resendCooldown > 0 || isResending,
|
|
3732
3812
|
style: styles16.resendContainer
|
|
3733
3813
|
},
|
|
3734
|
-
isResending ? /* @__PURE__ */
|
|
3735
|
-
|
|
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,
|
|
3736
3816
|
{
|
|
3737
3817
|
style: [styles16.resendText, { color: theme.colors.primary }]
|
|
3738
3818
|
},
|
|
3739
3819
|
" ",
|
|
3740
3820
|
"Sending..."
|
|
3741
|
-
)) : resendCooldown > 0 ? /* @__PURE__ */
|
|
3742
|
-
|
|
3821
|
+
)) : resendCooldown > 0 ? /* @__PURE__ */ import_react33.default.createElement(
|
|
3822
|
+
import_react_native18.Text,
|
|
3743
3823
|
{
|
|
3744
3824
|
style: [
|
|
3745
3825
|
styles16.resendText,
|
|
@@ -3749,16 +3829,16 @@ var OTPVerify = ({
|
|
|
3749
3829
|
"Resend OTP in ",
|
|
3750
3830
|
resendCooldown,
|
|
3751
3831
|
"s"
|
|
3752
|
-
) : /* @__PURE__ */
|
|
3753
|
-
|
|
3832
|
+
) : /* @__PURE__ */ import_react33.default.createElement(
|
|
3833
|
+
import_react_native18.Text,
|
|
3754
3834
|
{
|
|
3755
3835
|
style: [styles16.resendText, { color: theme.colors.primary }]
|
|
3756
3836
|
},
|
|
3757
3837
|
"Resend OTP"
|
|
3758
3838
|
)
|
|
3759
|
-
))), /* @__PURE__ */
|
|
3839
|
+
))), /* @__PURE__ */ import_react33.default.createElement(ModalFooter, { style: { paddingVertical: 0 } }, /* @__PURE__ */ import_react33.default.createElement(Footer, null)));
|
|
3760
3840
|
};
|
|
3761
|
-
var styles16 =
|
|
3841
|
+
var styles16 = import_react_native18.StyleSheet.create({
|
|
3762
3842
|
headerContent: {
|
|
3763
3843
|
flexDirection: "row",
|
|
3764
3844
|
alignItems: "center"
|
|
@@ -3817,8 +3897,8 @@ var styles16 = import_react_native17.StyleSheet.create({
|
|
|
3817
3897
|
});
|
|
3818
3898
|
|
|
3819
3899
|
// src/molecules/Permissions.tsx
|
|
3820
|
-
var
|
|
3821
|
-
var
|
|
3900
|
+
var import_react34 = __toESM(require("react"));
|
|
3901
|
+
var import_react_native19 = require("react-native");
|
|
3822
3902
|
var Permissions = ({
|
|
3823
3903
|
open,
|
|
3824
3904
|
onClose,
|
|
@@ -3826,8 +3906,8 @@ var Permissions = ({
|
|
|
3826
3906
|
}) => {
|
|
3827
3907
|
const { appName, linkToken, setUserConsent } = useKryptosConnect();
|
|
3828
3908
|
const theme = useTheme();
|
|
3829
|
-
const [isLoading, setIsLoading] =
|
|
3830
|
-
const [errorMessage, setErrorMessage] =
|
|
3909
|
+
const [isLoading, setIsLoading] = import_react34.default.useState(false);
|
|
3910
|
+
const [errorMessage, setErrorMessage] = import_react34.default.useState("");
|
|
3831
3911
|
const handleConsentClick = async () => {
|
|
3832
3912
|
try {
|
|
3833
3913
|
setIsLoading(true);
|
|
@@ -3850,22 +3930,22 @@ var Permissions = ({
|
|
|
3850
3930
|
"Access your transaction history and trading activity",
|
|
3851
3931
|
"Keep this data updated and accessible when you're offline"
|
|
3852
3932
|
];
|
|
3853
|
-
return /* @__PURE__ */
|
|
3854
|
-
|
|
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,
|
|
3855
3935
|
{
|
|
3856
3936
|
style: [styles17.subtitle, { color: theme.colors.textSecondary }]
|
|
3857
3937
|
},
|
|
3858
3938
|
"Allow ",
|
|
3859
3939
|
appName,
|
|
3860
3940
|
" to:"
|
|
3861
|
-
), permissionItems.map((item, index) => /* @__PURE__ */
|
|
3862
|
-
|
|
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,
|
|
3863
3943
|
{
|
|
3864
3944
|
style: [styles17.permissionText, { color: theme.colors.text }]
|
|
3865
3945
|
},
|
|
3866
3946
|
item
|
|
3867
|
-
)))), /* @__PURE__ */
|
|
3868
|
-
|
|
3947
|
+
)))), /* @__PURE__ */ import_react34.default.createElement(
|
|
3948
|
+
import_react_native19.View,
|
|
3869
3949
|
{
|
|
3870
3950
|
style: [
|
|
3871
3951
|
styles17.infoBox,
|
|
@@ -3875,17 +3955,17 @@ var Permissions = ({
|
|
|
3875
3955
|
}
|
|
3876
3956
|
]
|
|
3877
3957
|
},
|
|
3878
|
-
/* @__PURE__ */
|
|
3879
|
-
|
|
3958
|
+
/* @__PURE__ */ import_react34.default.createElement(
|
|
3959
|
+
import_react_native19.Text,
|
|
3880
3960
|
{
|
|
3881
3961
|
style: [styles17.infoText, { color: theme.colors.textSecondary }]
|
|
3882
3962
|
},
|
|
3883
3963
|
"By selecting",
|
|
3884
3964
|
" ",
|
|
3885
|
-
/* @__PURE__ */
|
|
3965
|
+
/* @__PURE__ */ import_react34.default.createElement(import_react_native19.Text, { style: { fontWeight: "600", color: theme.colors.text } }, "'Allow'"),
|
|
3886
3966
|
", you agree to share this information and keep it updated."
|
|
3887
3967
|
)
|
|
3888
|
-
))), /* @__PURE__ */
|
|
3968
|
+
))), /* @__PURE__ */ import_react34.default.createElement(ModalFooter, { style: { paddingVertical: 8 } }, /* @__PURE__ */ import_react34.default.createElement(
|
|
3889
3969
|
Button,
|
|
3890
3970
|
{
|
|
3891
3971
|
variant: "outline",
|
|
@@ -3896,9 +3976,9 @@ var Permissions = ({
|
|
|
3896
3976
|
style: styles17.button
|
|
3897
3977
|
},
|
|
3898
3978
|
"Allow"
|
|
3899
|
-
), /* @__PURE__ */
|
|
3979
|
+
), /* @__PURE__ */ import_react34.default.createElement(Footer, null)));
|
|
3900
3980
|
};
|
|
3901
|
-
var styles17 =
|
|
3981
|
+
var styles17 = import_react_native19.StyleSheet.create({
|
|
3902
3982
|
container: {
|
|
3903
3983
|
flex: 1
|
|
3904
3984
|
},
|
|
@@ -3956,8 +4036,8 @@ var styles17 = import_react_native18.StyleSheet.create({
|
|
|
3956
4036
|
});
|
|
3957
4037
|
|
|
3958
4038
|
// src/molecules/StatusModal.tsx
|
|
3959
|
-
var
|
|
3960
|
-
var
|
|
4039
|
+
var import_react35 = __toESM(require("react"));
|
|
4040
|
+
var import_react_native20 = require("react-native");
|
|
3961
4041
|
var StatusModal = ({
|
|
3962
4042
|
open,
|
|
3963
4043
|
onClose,
|
|
@@ -3974,7 +4054,7 @@ var StatusModal = ({
|
|
|
3974
4054
|
}
|
|
3975
4055
|
onClose();
|
|
3976
4056
|
};
|
|
3977
|
-
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(
|
|
3978
4058
|
Button,
|
|
3979
4059
|
{
|
|
3980
4060
|
variant: "outline",
|
|
@@ -3983,9 +4063,9 @@ var StatusModal = ({
|
|
|
3983
4063
|
style: styles18.button
|
|
3984
4064
|
},
|
|
3985
4065
|
status === "success" ? "Continue" : "Try again later"
|
|
3986
|
-
), /* @__PURE__ */
|
|
4066
|
+
), /* @__PURE__ */ import_react35.default.createElement(Footer, null)));
|
|
3987
4067
|
};
|
|
3988
|
-
var styles18 =
|
|
4068
|
+
var styles18 = import_react_native20.StyleSheet.create({
|
|
3989
4069
|
container: {
|
|
3990
4070
|
flex: 1,
|
|
3991
4071
|
alignItems: "center",
|
|
@@ -4010,28 +4090,28 @@ var styles18 = import_react_native19.StyleSheet.create({
|
|
|
4010
4090
|
});
|
|
4011
4091
|
|
|
4012
4092
|
// src/molecules/EndModal.tsx
|
|
4013
|
-
var
|
|
4014
|
-
var
|
|
4093
|
+
var import_react36 = __toESM(require("react"));
|
|
4094
|
+
var import_react_native21 = require("react-native");
|
|
4015
4095
|
var EndModal = ({ open, onClose }) => {
|
|
4016
4096
|
const theme = useTheme();
|
|
4017
|
-
(0,
|
|
4097
|
+
(0, import_react36.useEffect)(() => {
|
|
4018
4098
|
if (!open) return;
|
|
4019
4099
|
const timer = setTimeout(() => {
|
|
4020
4100
|
onClose();
|
|
4021
4101
|
}, 5e3);
|
|
4022
4102
|
return () => clearTimeout(timer);
|
|
4023
4103
|
}, []);
|
|
4024
|
-
return /* @__PURE__ */
|
|
4025
|
-
|
|
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,
|
|
4026
4106
|
{
|
|
4027
4107
|
style: [
|
|
4028
4108
|
styles19.iconContainer,
|
|
4029
4109
|
{ backgroundColor: theme.colors.successLight }
|
|
4030
4110
|
]
|
|
4031
4111
|
},
|
|
4032
|
-
/* @__PURE__ */
|
|
4033
|
-
), /* @__PURE__ */
|
|
4034
|
-
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(
|
|
4035
4115
|
Button,
|
|
4036
4116
|
{
|
|
4037
4117
|
variant: "primary",
|
|
@@ -4040,9 +4120,9 @@ var EndModal = ({ open, onClose }) => {
|
|
|
4040
4120
|
style: styles19.button
|
|
4041
4121
|
},
|
|
4042
4122
|
"Continue to App"
|
|
4043
|
-
), /* @__PURE__ */
|
|
4123
|
+
), /* @__PURE__ */ import_react36.default.createElement(Footer, null)));
|
|
4044
4124
|
};
|
|
4045
|
-
var styles19 =
|
|
4125
|
+
var styles19 = import_react_native21.StyleSheet.create({
|
|
4046
4126
|
container: {
|
|
4047
4127
|
alignItems: "center",
|
|
4048
4128
|
paddingVertical: 20
|
|
@@ -4077,10 +4157,10 @@ var KryptosConnectButton = ({
|
|
|
4077
4157
|
textStyle
|
|
4078
4158
|
}) => {
|
|
4079
4159
|
const { theme: themeName } = useKryptosConnect();
|
|
4080
|
-
const [open, setOpen] =
|
|
4160
|
+
const [open, setOpen] = import_react37.default.useState(false);
|
|
4081
4161
|
const theme = useTheme();
|
|
4082
|
-
return /* @__PURE__ */
|
|
4083
|
-
|
|
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,
|
|
4084
4164
|
{
|
|
4085
4165
|
onPress: () => setOpen(true),
|
|
4086
4166
|
style: [
|
|
@@ -4098,8 +4178,8 @@ var KryptosConnectButton = ({
|
|
|
4098
4178
|
],
|
|
4099
4179
|
activeOpacity: 0.8
|
|
4100
4180
|
},
|
|
4101
|
-
/* @__PURE__ */
|
|
4102
|
-
|
|
4181
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
4182
|
+
import_react_native22.Text,
|
|
4103
4183
|
{
|
|
4104
4184
|
style: [
|
|
4105
4185
|
styles20.buttonText,
|
|
@@ -4113,8 +4193,8 @@ var KryptosConnectButton = ({
|
|
|
4113
4193
|
"Connect with",
|
|
4114
4194
|
" "
|
|
4115
4195
|
),
|
|
4116
|
-
/* @__PURE__ */
|
|
4117
|
-
), /* @__PURE__ */
|
|
4196
|
+
/* @__PURE__ */ import_react37.default.createElement(LogoIcon, { size: 24 })
|
|
4197
|
+
), /* @__PURE__ */ import_react37.default.createElement(
|
|
4118
4198
|
KryptosConnectModal,
|
|
4119
4199
|
{
|
|
4120
4200
|
open,
|
|
@@ -4142,7 +4222,7 @@ var KryptosConnectModal = ({
|
|
|
4142
4222
|
isAuthorized,
|
|
4143
4223
|
linkToken
|
|
4144
4224
|
} = useKryptosConnect();
|
|
4145
|
-
const [step, setStep] =
|
|
4225
|
+
const [step, setStep] = import_react37.default.useState("INIT" /* INIT */);
|
|
4146
4226
|
const handleClose = () => {
|
|
4147
4227
|
setOpen(false);
|
|
4148
4228
|
setIsInitialized(false);
|
|
@@ -4178,7 +4258,7 @@ var KryptosConnectModal = ({
|
|
|
4178
4258
|
handleClose();
|
|
4179
4259
|
};
|
|
4180
4260
|
if (!open) return null;
|
|
4181
|
-
return /* @__PURE__ */
|
|
4261
|
+
return /* @__PURE__ */ import_react37.default.createElement(import_react_native22.View, { style: styles20.container }, step === "INIT" /* INIT */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4182
4262
|
Init,
|
|
4183
4263
|
{
|
|
4184
4264
|
open,
|
|
@@ -4192,7 +4272,7 @@ var KryptosConnectModal = ({
|
|
|
4192
4272
|
},
|
|
4193
4273
|
onClose: handleAbort
|
|
4194
4274
|
}
|
|
4195
|
-
), step === "AUTH" /* AUTH */ && /* @__PURE__ */
|
|
4275
|
+
), step === "AUTH" /* AUTH */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4196
4276
|
Auth,
|
|
4197
4277
|
{
|
|
4198
4278
|
open,
|
|
@@ -4200,28 +4280,28 @@ var KryptosConnectModal = ({
|
|
|
4200
4280
|
onGuestSuccess: () => setStep("INTEGRATION" /* INTEGRATION */),
|
|
4201
4281
|
onClose: handleAbort
|
|
4202
4282
|
}
|
|
4203
|
-
), step === "OTP" /* OTP */ && /* @__PURE__ */
|
|
4283
|
+
), step === "OTP" /* OTP */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4204
4284
|
OTPVerify,
|
|
4205
4285
|
{
|
|
4206
4286
|
open,
|
|
4207
4287
|
onSuccess: () => setStep("INTEGRATION" /* INTEGRATION */),
|
|
4208
4288
|
onClose: handleAbort
|
|
4209
4289
|
}
|
|
4210
|
-
), step === "INTEGRATION" /* INTEGRATION */ && /* @__PURE__ */
|
|
4290
|
+
), step === "INTEGRATION" /* INTEGRATION */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4211
4291
|
Integration,
|
|
4212
4292
|
{
|
|
4213
4293
|
open,
|
|
4214
4294
|
onSuccess: handleConsentClick,
|
|
4215
4295
|
onClose: handleAbort
|
|
4216
4296
|
}
|
|
4217
|
-
), step === "PERMISSIONS" /* PERMISSIONS */ && /* @__PURE__ */
|
|
4297
|
+
), step === "PERMISSIONS" /* PERMISSIONS */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4218
4298
|
Permissions,
|
|
4219
4299
|
{
|
|
4220
4300
|
open,
|
|
4221
4301
|
onClose: handleAbort,
|
|
4222
4302
|
onSuccess: () => setStep("STATUS" /* STATUS */)
|
|
4223
4303
|
}
|
|
4224
|
-
), step === "STATUS" /* STATUS */ && /* @__PURE__ */
|
|
4304
|
+
), step === "STATUS" /* STATUS */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4225
4305
|
StatusModal,
|
|
4226
4306
|
{
|
|
4227
4307
|
open,
|
|
@@ -4230,7 +4310,7 @@ var KryptosConnectModal = ({
|
|
|
4230
4310
|
onError: handleError,
|
|
4231
4311
|
status: userConsent?.public_token ? "success" : "error"
|
|
4232
4312
|
}
|
|
4233
|
-
), step === "END" /* END */ && /* @__PURE__ */
|
|
4313
|
+
), step === "END" /* END */ && /* @__PURE__ */ import_react37.default.createElement(
|
|
4234
4314
|
EndModal,
|
|
4235
4315
|
{
|
|
4236
4316
|
open,
|
|
@@ -4242,7 +4322,7 @@ var KryptosConnectModal = ({
|
|
|
4242
4322
|
}
|
|
4243
4323
|
));
|
|
4244
4324
|
};
|
|
4245
|
-
var styles20 =
|
|
4325
|
+
var styles20 = import_react_native22.StyleSheet.create({
|
|
4246
4326
|
defaultButton: {
|
|
4247
4327
|
flexDirection: "row",
|
|
4248
4328
|
alignItems: "center",
|