@interchain-kit/react 0.0.1-beta.36 → 0.0.1-beta.37

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.
@@ -1,48 +1,67 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { ConnectModal } from "@interchain-ui/react";
3
- import { ConnectedContent, ConnectedHeader, ConnectingContent, ConnectingHeader, QRCodeContent, QRCodeHeader, RejectContent, RejectHeader, WalletListContent, WalletListHeader, } from "./views";
2
+ import { ConnectedContent, ConnectedHeader, ConnectingContent, ConnectingHeader, NotExistContent, NotExistHeader, QRCodeContent, QRCodeHeader, RejectContent, RejectHeader, WalletListContent, WalletListHeader, } from "./views";
4
3
  import { useWalletModal } from "./provider";
5
- import { useCurrentWallet } from "../hooks";
6
- import { useEffect, useState } from "react";
4
+ import { useCurrentWallet, useWalletManager } from "../hooks";
5
+ import { useEffect, useMemo, useState } from "react";
7
6
  import { WalletState } from "@interchain-kit/core";
8
- const defaultModalView = {
9
- header: _jsx(WalletListHeader, {}),
10
- content: _jsx(WalletListContent, {}),
11
- };
7
+ import { ConnectModal } from "@interchain-ui/react";
12
8
  export const WalletModal = () => {
13
9
  const { modalIsOpen, open, close } = useWalletModal();
14
10
  const currentWallet = useCurrentWallet();
11
+ const walletManager = useWalletManager();
12
+ const handleSelectWallet = async (wallet) => {
13
+ setModalView({
14
+ header: _jsx(ConnectingHeader, { wallet: wallet, onBack: gotoWalletList }),
15
+ content: _jsx(ConnectingContent, { wallet: wallet }),
16
+ });
17
+ if (wallet.info.mode === "extension" &&
18
+ !wallet.isExtensionInstalled) {
19
+ setModalView({
20
+ header: _jsx(NotExistHeader, { wallet: wallet, onBack: gotoWalletList }),
21
+ content: _jsx(NotExistContent, { wallet: wallet }),
22
+ });
23
+ return;
24
+ }
25
+ try {
26
+ if (wallet.info.mode === "wallet-connect") {
27
+ wallet.events.on("walletConnectQRCode", (uri) => {
28
+ setModalView({
29
+ header: _jsx(QRCodeHeader, { onBack: gotoWalletList }),
30
+ content: _jsx(QRCodeContent, {}),
31
+ });
32
+ });
33
+ }
34
+ await walletManager.connect(wallet?.info?.name);
35
+ setModalView({
36
+ header: _jsx(ConnectedHeader, { wallet: wallet, onBack: gotoWalletList }),
37
+ content: _jsx(ConnectedContent, { wallet: wallet }),
38
+ });
39
+ }
40
+ catch (error) {
41
+ setModalView({
42
+ header: _jsx(RejectHeader, { wallet: wallet, onBack: gotoWalletList }),
43
+ content: _jsx(RejectContent, { wallet: wallet }),
44
+ });
45
+ }
46
+ };
47
+ const defaultModalView = useMemo(() => {
48
+ return {
49
+ header: _jsx(WalletListHeader, {}),
50
+ content: _jsx(WalletListContent, { onSelectWallet: handleSelectWallet }),
51
+ };
52
+ }, []);
15
53
  const [modalView, setModalView] = useState(defaultModalView);
16
54
  const gotoWalletList = () => setModalView(defaultModalView);
17
55
  useEffect(() => {
18
- switch (true) {
19
- case currentWallet?.info?.mode === "wallet-connect":
20
- setModalView({
21
- header: _jsx(QRCodeHeader, { onBack: gotoWalletList }),
22
- content: _jsx(QRCodeContent, {}),
23
- });
24
- break;
25
- case currentWallet?.walletState === WalletState.Connecting:
26
- setModalView({
27
- header: _jsx(ConnectingHeader, { onBack: gotoWalletList }),
28
- content: _jsx(ConnectingContent, {}),
29
- });
30
- break;
31
- case currentWallet?.walletState === WalletState.Connected:
32
- setModalView({
33
- header: _jsx(ConnectedHeader, { onBack: gotoWalletList }),
34
- content: _jsx(ConnectedContent, {}),
35
- });
36
- break;
37
- case currentWallet?.walletState === WalletState.Rejected:
38
- setModalView({
39
- header: _jsx(RejectHeader, { onBack: gotoWalletList }),
40
- content: _jsx(RejectContent, {}),
41
- });
42
- break;
43
- default:
44
- setModalView(defaultModalView);
56
+ if (modalIsOpen && currentWallet?.walletState === WalletState.Connected) {
57
+ setModalView({
58
+ header: _jsx(ConnectedHeader, { onBack: gotoWalletList }),
59
+ content: _jsx(ConnectedContent, {}),
60
+ });
61
+ }
62
+ else {
63
+ setModalView(defaultModalView);
45
64
  }
46
- }, [currentWallet, currentWallet?.walletState]);
65
+ }, [modalIsOpen]);
47
66
  return (_jsx(ConnectModal, { isOpen: modalIsOpen, header: modalView.header, onOpen: open, onClose: close, children: modalView.content }));
48
67
  };
@@ -1,33 +1,24 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { ConnectModalHead, ConnectModalStatus } from "@interchain-ui/react";
3
- import { useCurrentWallet, useWalletManager } from "../../hooks";
4
3
  import { useWalletModal } from "../provider";
5
- export const ConnectingHeader = ({ onBack }) => {
6
- const currentWallet = useCurrentWallet();
4
+ export const ConnectingHeader = ({ wallet, onBack, }) => {
7
5
  const { close } = useWalletModal();
8
- const walletManager = useWalletManager();
9
- if (!currentWallet)
10
- return null;
11
- return (_jsx(ConnectModalHead, { title: currentWallet.info.prettyName, hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: {
12
- onClick: async () => {
13
- await walletManager.disconnect(currentWallet.info.name);
14
- close();
15
- },
6
+ return (_jsx(ConnectModalHead, { title: wallet.info.prettyName, hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: {
7
+ onClick: close,
16
8
  } }));
17
9
  };
18
- export const ConnectingContent = () => {
19
- const currentWallet = useCurrentWallet();
20
- const { info: { prettyName, mode }, } = currentWallet;
10
+ export const ConnectingContent = ({ wallet }) => {
11
+ const { info: { prettyName, mode }, } = wallet;
21
12
  let title = "Requesting Connection";
22
13
  let desc = mode === "wallet-connect"
23
14
  ? `Approve ${prettyName} connection request on your mobile.`
24
15
  : `Open the ${prettyName} browser extension to connect your wallet.`;
25
- if (!currentWallet)
16
+ if (!wallet)
26
17
  return null;
27
18
  return (_jsx(ConnectModalStatus, { wallet: {
28
- name: currentWallet.info.name,
29
- prettyName: currentWallet.info.prettyName,
30
- logo: currentWallet.info.logo,
19
+ name: wallet.info.name,
20
+ prettyName: wallet.info.prettyName,
21
+ logo: wallet.info.logo,
31
22
  mobileDisabled: true,
32
23
  }, status: "Connecting", contentHeader: title, contentDesc: desc }));
33
24
  };
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ConnectModalHead, ConnectModalStatus } from "@interchain-ui/react";
3
+ import { useWalletManager } from "../../hooks"; // replace with the actual path
4
+ import { useWalletModal } from "../provider";
5
+ import { useMemo } from "react";
6
+ import { FaAndroid } from "@react-icons/all-files/fa/FaAndroid";
7
+ import { GoDesktopDownload } from "@react-icons/all-files/go/GoDesktopDownload";
8
+ import { GrFirefox } from "@react-icons/all-files/gr/GrFirefox";
9
+ import { RiAppStoreFill } from "@react-icons/all-files/ri/RiAppStoreFill";
10
+ import { RiChromeFill } from "@react-icons/all-files/ri/RiChromeFill";
11
+ export const NotExistHeader = ({ wallet, onBack, }) => {
12
+ const { close } = useWalletModal();
13
+ return (_jsx(ConnectModalHead, { title: wallet?.info?.prettyName || "", hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: { onClick: close } }));
14
+ };
15
+ export const NotExistContent = ({ wallet }) => {
16
+ const walletManager = useWalletManager();
17
+ const downloadLink = useMemo(() => {
18
+ return walletManager.getDownloadLink(wallet.info.name);
19
+ }, [wallet?.info?.name]);
20
+ const onInstall = () => {
21
+ if (downloadLink) {
22
+ window.open(downloadLink.link, "_blank");
23
+ }
24
+ };
25
+ const IconComp = getIcon(walletManager.getEnv());
26
+ return (_jsx(ConnectModalStatus, { status: "NotExist", wallet: {
27
+ name: wallet?.info?.prettyName,
28
+ logo: typeof wallet?.info?.logo === "string" ? wallet?.info?.logo : "",
29
+ mobileDisabled: true,
30
+ }, contentHeader: `${wallet?.info?.prettyName} Not Installed`, contentDesc: true
31
+ ? `If ${wallet?.info?.prettyName.toLowerCase()} is installed on your device, please refresh this page or follow the browser instruction.`
32
+ : `Download link not provided. Try searching it or consulting the developer team.`, onInstall: onInstall, installIcon: _jsx(IconComp, {}), disableInstall: downloadLink === null }));
33
+ };
34
+ function getIcon(env) {
35
+ if (env?.browser === "chrome")
36
+ return RiChromeFill;
37
+ if (env?.browser === "firefox")
38
+ return GrFirefox;
39
+ if (env?.os === "android")
40
+ return FaAndroid;
41
+ if (env?.os === "ios")
42
+ return RiAppStoreFill;
43
+ return GoDesktopDownload;
44
+ }
@@ -1,16 +1,14 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { ConnectModalHead, ConnectModalStatus } from "@interchain-ui/react";
3
3
  import { useWalletModal } from "../provider";
4
- import { useCurrentWallet, useWalletManager } from "../../hooks";
4
+ import { useWalletManager } from "../../hooks";
5
5
  import { getWalletInfo } from "../../utils";
6
- export const RejectHeader = ({ onBack }) => {
6
+ export const RejectHeader = ({ wallet, onBack, }) => {
7
7
  const { close } = useWalletModal();
8
- const currentWallet = useCurrentWallet();
9
- return (_jsx(ConnectModalHead, { title: currentWallet.info.prettyName, hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: { onClick: close } }));
8
+ return (_jsx(ConnectModalHead, { title: wallet.info.prettyName, hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: { onClick: close } }));
10
9
  };
11
- export const RejectContent = () => {
12
- const currentWallet = useCurrentWallet();
10
+ export const RejectContent = ({ wallet }) => {
13
11
  const walletManager = useWalletManager();
14
12
  const { close } = useWalletModal();
15
- return (_jsx(ConnectModalStatus, { status: "Rejected", wallet: getWalletInfo(currentWallet), contentHeader: "Request Rejected", contentDesc: currentWallet.errorMessage || "Connection permission is denied.", onConnect: () => walletManager.connect(currentWallet.info.name).then(close) }));
13
+ return (_jsx(ConnectModalStatus, { status: "Rejected", wallet: getWalletInfo(wallet), contentHeader: "Request Rejected", contentDesc: wallet.errorMessage || "Connection permission is denied.", onConnect: () => walletManager.connect(wallet.info.name).then(close) }));
16
14
  };
@@ -6,9 +6,8 @@ export const WalletListHeader = () => {
6
6
  const { close } = useWalletModal();
7
7
  return (_jsx(ConnectModalHead, { title: "Select your wallet", hasBackButton: false, onClose: close, closeButtonProps: { onClick: close } }));
8
8
  };
9
- export const WalletListContent = () => {
9
+ export const WalletListContent = ({ onSelectWallet, }) => {
10
10
  const walletManager = useWalletManager();
11
- const { close } = useWalletModal();
12
11
  const wallets = walletManager.wallets.map((w) => {
13
12
  return {
14
13
  name: w.info.name,
@@ -19,14 +18,5 @@ export const WalletListContent = () => {
19
18
  originalWallet: w,
20
19
  };
21
20
  });
22
- const onWalletClick = async (wallet) => {
23
- try {
24
- await walletManager.connect(wallet.info.name);
25
- close();
26
- }
27
- catch (error) {
28
- console.log(error);
29
- }
30
- };
31
- return (_jsx(ConnectModalWalletList, { wallets: wallets, onWalletItemClick: onWalletClick }));
21
+ return (_jsx(ConnectModalWalletList, { wallets: wallets, onWalletItemClick: onSelectWallet }));
32
22
  };
@@ -3,3 +3,4 @@ export * from './WalletList';
3
3
  export * from './Connected';
4
4
  export * from './Reject';
5
5
  export * from './QRCode';
6
+ export * from './NotExist';
package/modal/modal.js CHANGED
@@ -2,51 +2,70 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WalletModal = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("@interchain-ui/react");
6
5
  const views_1 = require("./views");
7
6
  const provider_1 = require("./provider");
8
7
  const hooks_1 = require("../hooks");
9
- const react_2 = require("react");
8
+ const react_1 = require("react");
10
9
  const core_1 = require("@interchain-kit/core");
11
- const defaultModalView = {
12
- header: (0, jsx_runtime_1.jsx)(views_1.WalletListHeader, {}),
13
- content: (0, jsx_runtime_1.jsx)(views_1.WalletListContent, {}),
14
- };
10
+ const react_2 = require("@interchain-ui/react");
15
11
  const WalletModal = () => {
16
12
  const { modalIsOpen, open, close } = (0, provider_1.useWalletModal)();
17
13
  const currentWallet = (0, hooks_1.useCurrentWallet)();
18
- const [modalView, setModalView] = (0, react_2.useState)(defaultModalView);
19
- const gotoWalletList = () => setModalView(defaultModalView);
20
- (0, react_2.useEffect)(() => {
21
- switch (true) {
22
- case currentWallet?.info?.mode === "wallet-connect":
23
- setModalView({
24
- header: (0, jsx_runtime_1.jsx)(views_1.QRCodeHeader, { onBack: gotoWalletList }),
25
- content: (0, jsx_runtime_1.jsx)(views_1.QRCodeContent, {}),
26
- });
27
- break;
28
- case currentWallet?.walletState === core_1.WalletState.Connecting:
29
- setModalView({
30
- header: (0, jsx_runtime_1.jsx)(views_1.ConnectingHeader, { onBack: gotoWalletList }),
31
- content: (0, jsx_runtime_1.jsx)(views_1.ConnectingContent, {}),
32
- });
33
- break;
34
- case currentWallet?.walletState === core_1.WalletState.Connected:
35
- setModalView({
36
- header: (0, jsx_runtime_1.jsx)(views_1.ConnectedHeader, { onBack: gotoWalletList }),
37
- content: (0, jsx_runtime_1.jsx)(views_1.ConnectedContent, {}),
38
- });
39
- break;
40
- case currentWallet?.walletState === core_1.WalletState.Rejected:
41
- setModalView({
42
- header: (0, jsx_runtime_1.jsx)(views_1.RejectHeader, { onBack: gotoWalletList }),
43
- content: (0, jsx_runtime_1.jsx)(views_1.RejectContent, {}),
14
+ const walletManager = (0, hooks_1.useWalletManager)();
15
+ const handleSelectWallet = async (wallet) => {
16
+ setModalView({
17
+ header: (0, jsx_runtime_1.jsx)(views_1.ConnectingHeader, { wallet: wallet, onBack: gotoWalletList }),
18
+ content: (0, jsx_runtime_1.jsx)(views_1.ConnectingContent, { wallet: wallet }),
19
+ });
20
+ if (wallet.info.mode === "extension" &&
21
+ !wallet.isExtensionInstalled) {
22
+ setModalView({
23
+ header: (0, jsx_runtime_1.jsx)(views_1.NotExistHeader, { wallet: wallet, onBack: gotoWalletList }),
24
+ content: (0, jsx_runtime_1.jsx)(views_1.NotExistContent, { wallet: wallet }),
25
+ });
26
+ return;
27
+ }
28
+ try {
29
+ if (wallet.info.mode === "wallet-connect") {
30
+ wallet.events.on("walletConnectQRCode", (uri) => {
31
+ setModalView({
32
+ header: (0, jsx_runtime_1.jsx)(views_1.QRCodeHeader, { onBack: gotoWalletList }),
33
+ content: (0, jsx_runtime_1.jsx)(views_1.QRCodeContent, {}),
34
+ });
44
35
  });
45
- break;
46
- default:
47
- setModalView(defaultModalView);
36
+ }
37
+ await walletManager.connect(wallet?.info?.name);
38
+ setModalView({
39
+ header: (0, jsx_runtime_1.jsx)(views_1.ConnectedHeader, { wallet: wallet, onBack: gotoWalletList }),
40
+ content: (0, jsx_runtime_1.jsx)(views_1.ConnectedContent, { wallet: wallet }),
41
+ });
42
+ }
43
+ catch (error) {
44
+ setModalView({
45
+ header: (0, jsx_runtime_1.jsx)(views_1.RejectHeader, { wallet: wallet, onBack: gotoWalletList }),
46
+ content: (0, jsx_runtime_1.jsx)(views_1.RejectContent, { wallet: wallet }),
47
+ });
48
+ }
49
+ };
50
+ const defaultModalView = (0, react_1.useMemo)(() => {
51
+ return {
52
+ header: (0, jsx_runtime_1.jsx)(views_1.WalletListHeader, {}),
53
+ content: (0, jsx_runtime_1.jsx)(views_1.WalletListContent, { onSelectWallet: handleSelectWallet }),
54
+ };
55
+ }, []);
56
+ const [modalView, setModalView] = (0, react_1.useState)(defaultModalView);
57
+ const gotoWalletList = () => setModalView(defaultModalView);
58
+ (0, react_1.useEffect)(() => {
59
+ if (modalIsOpen && currentWallet?.walletState === core_1.WalletState.Connected) {
60
+ setModalView({
61
+ header: (0, jsx_runtime_1.jsx)(views_1.ConnectedHeader, { onBack: gotoWalletList }),
62
+ content: (0, jsx_runtime_1.jsx)(views_1.ConnectedContent, {}),
63
+ });
64
+ }
65
+ else {
66
+ setModalView(defaultModalView);
48
67
  }
49
- }, [currentWallet, currentWallet?.walletState]);
50
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModal, { isOpen: modalIsOpen, header: modalView.header, onOpen: open, onClose: close, children: modalView.content }));
68
+ }, [modalIsOpen]);
69
+ return ((0, jsx_runtime_1.jsx)(react_2.ConnectModal, { isOpen: modalIsOpen, header: modalView.header, onOpen: open, onClose: close, children: modalView.content }));
51
70
  };
52
71
  exports.WalletModal = WalletModal;
@@ -1,4 +1,8 @@
1
- export declare const ConnectingHeader: ({ onBack }: {
1
+ import { BaseWallet } from "@interchain-kit/core";
2
+ export declare const ConnectingHeader: ({ wallet, onBack, }: {
3
+ wallet: BaseWallet;
2
4
  onBack: () => void;
3
5
  }) => import("react/jsx-runtime").JSX.Element;
4
- export declare const ConnectingContent: () => import("react/jsx-runtime").JSX.Element;
6
+ export declare const ConnectingContent: ({ wallet }: {
7
+ wallet: BaseWallet;
8
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -3,35 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConnectingContent = exports.ConnectingHeader = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("@interchain-ui/react");
6
- const hooks_1 = require("../../hooks");
7
6
  const provider_1 = require("../provider");
8
- const ConnectingHeader = ({ onBack }) => {
9
- const currentWallet = (0, hooks_1.useCurrentWallet)();
7
+ const ConnectingHeader = ({ wallet, onBack, }) => {
10
8
  const { close } = (0, provider_1.useWalletModal)();
11
- const walletManager = (0, hooks_1.useWalletManager)();
12
- if (!currentWallet)
13
- return null;
14
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: currentWallet.info.prettyName, hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: {
15
- onClick: async () => {
16
- await walletManager.disconnect(currentWallet.info.name);
17
- close();
18
- },
9
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: wallet.info.prettyName, hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: {
10
+ onClick: close,
19
11
  } }));
20
12
  };
21
13
  exports.ConnectingHeader = ConnectingHeader;
22
- const ConnectingContent = () => {
23
- const currentWallet = (0, hooks_1.useCurrentWallet)();
24
- const { info: { prettyName, mode }, } = currentWallet;
14
+ const ConnectingContent = ({ wallet }) => {
15
+ const { info: { prettyName, mode }, } = wallet;
25
16
  let title = "Requesting Connection";
26
17
  let desc = mode === "wallet-connect"
27
18
  ? `Approve ${prettyName} connection request on your mobile.`
28
19
  : `Open the ${prettyName} browser extension to connect your wallet.`;
29
- if (!currentWallet)
20
+ if (!wallet)
30
21
  return null;
31
22
  return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalStatus, { wallet: {
32
- name: currentWallet.info.name,
33
- prettyName: currentWallet.info.prettyName,
34
- logo: currentWallet.info.logo,
23
+ name: wallet.info.name,
24
+ prettyName: wallet.info.prettyName,
25
+ logo: wallet.info.logo,
35
26
  mobileDisabled: true,
36
27
  }, status: "Connecting", contentHeader: title, contentDesc: desc }));
37
28
  };
@@ -0,0 +1,8 @@
1
+ import { BaseWallet } from "@interchain-kit/core";
2
+ export declare const NotExistHeader: ({ wallet, onBack, }: {
3
+ wallet: BaseWallet;
4
+ onBack: () => void;
5
+ }) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const NotExistContent: ({ wallet }: {
7
+ wallet: BaseWallet;
8
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotExistContent = exports.NotExistHeader = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("@interchain-ui/react");
6
+ const hooks_1 = require("../../hooks"); // replace with the actual path
7
+ const provider_1 = require("../provider");
8
+ const react_2 = require("react");
9
+ const FaAndroid_1 = require("@react-icons/all-files/fa/FaAndroid");
10
+ const GoDesktopDownload_1 = require("@react-icons/all-files/go/GoDesktopDownload");
11
+ const GrFirefox_1 = require("@react-icons/all-files/gr/GrFirefox");
12
+ const RiAppStoreFill_1 = require("@react-icons/all-files/ri/RiAppStoreFill");
13
+ const RiChromeFill_1 = require("@react-icons/all-files/ri/RiChromeFill");
14
+ const NotExistHeader = ({ wallet, onBack, }) => {
15
+ const { close } = (0, provider_1.useWalletModal)();
16
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: wallet?.info?.prettyName || "", hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: { onClick: close } }));
17
+ };
18
+ exports.NotExistHeader = NotExistHeader;
19
+ const NotExistContent = ({ wallet }) => {
20
+ const walletManager = (0, hooks_1.useWalletManager)();
21
+ const downloadLink = (0, react_2.useMemo)(() => {
22
+ return walletManager.getDownloadLink(wallet.info.name);
23
+ }, [wallet?.info?.name]);
24
+ const onInstall = () => {
25
+ if (downloadLink) {
26
+ window.open(downloadLink.link, "_blank");
27
+ }
28
+ };
29
+ const IconComp = getIcon(walletManager.getEnv());
30
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalStatus, { status: "NotExist", wallet: {
31
+ name: wallet?.info?.prettyName,
32
+ logo: typeof wallet?.info?.logo === "string" ? wallet?.info?.logo : "",
33
+ mobileDisabled: true,
34
+ }, contentHeader: `${wallet?.info?.prettyName} Not Installed`, contentDesc: true
35
+ ? `If ${wallet?.info?.prettyName.toLowerCase()} is installed on your device, please refresh this page or follow the browser instruction.`
36
+ : `Download link not provided. Try searching it or consulting the developer team.`, onInstall: onInstall, installIcon: (0, jsx_runtime_1.jsx)(IconComp, {}), disableInstall: downloadLink === null }));
37
+ };
38
+ exports.NotExistContent = NotExistContent;
39
+ function getIcon(env) {
40
+ if (env?.browser === "chrome")
41
+ return RiChromeFill_1.RiChromeFill;
42
+ if (env?.browser === "firefox")
43
+ return GrFirefox_1.GrFirefox;
44
+ if (env?.os === "android")
45
+ return FaAndroid_1.FaAndroid;
46
+ if (env?.os === "ios")
47
+ return RiAppStoreFill_1.RiAppStoreFill;
48
+ return GoDesktopDownload_1.GoDesktopDownload;
49
+ }
@@ -1,4 +1,8 @@
1
- export declare const RejectHeader: ({ onBack }: {
1
+ import { BaseWallet } from "@interchain-kit/core";
2
+ export declare const RejectHeader: ({ wallet, onBack, }: {
3
+ wallet: BaseWallet;
2
4
  onBack: () => void;
3
5
  }) => import("react/jsx-runtime").JSX.Element;
4
- export declare const RejectContent: () => import("react/jsx-runtime").JSX.Element;
6
+ export declare const RejectContent: ({ wallet }: {
7
+ wallet: BaseWallet;
8
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -6,16 +6,14 @@ const react_1 = require("@interchain-ui/react");
6
6
  const provider_1 = require("../provider");
7
7
  const hooks_1 = require("../../hooks");
8
8
  const utils_1 = require("../../utils");
9
- const RejectHeader = ({ onBack }) => {
9
+ const RejectHeader = ({ wallet, onBack, }) => {
10
10
  const { close } = (0, provider_1.useWalletModal)();
11
- const currentWallet = (0, hooks_1.useCurrentWallet)();
12
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: currentWallet.info.prettyName, hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: { onClick: close } }));
11
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: wallet.info.prettyName, hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: { onClick: close } }));
13
12
  };
14
13
  exports.RejectHeader = RejectHeader;
15
- const RejectContent = () => {
16
- const currentWallet = (0, hooks_1.useCurrentWallet)();
14
+ const RejectContent = ({ wallet }) => {
17
15
  const walletManager = (0, hooks_1.useWalletManager)();
18
16
  const { close } = (0, provider_1.useWalletModal)();
19
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalStatus, { status: "Rejected", wallet: (0, utils_1.getWalletInfo)(currentWallet), contentHeader: "Request Rejected", contentDesc: currentWallet.errorMessage || "Connection permission is denied.", onConnect: () => walletManager.connect(currentWallet.info.name).then(close) }));
17
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalStatus, { status: "Rejected", wallet: (0, utils_1.getWalletInfo)(wallet), contentHeader: "Request Rejected", contentDesc: wallet.errorMessage || "Connection permission is denied.", onConnect: () => walletManager.connect(wallet.info.name).then(close) }));
20
18
  };
21
19
  exports.RejectContent = RejectContent;
@@ -1,2 +1,5 @@
1
+ import { BaseWallet } from "@interchain-kit/core";
1
2
  export declare const WalletListHeader: () => import("react/jsx-runtime").JSX.Element;
2
- export declare const WalletListContent: () => import("react/jsx-runtime").JSX.Element;
3
+ export declare const WalletListContent: ({ onSelectWallet, }: {
4
+ onSelectWallet: (wallet: BaseWallet) => void;
5
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -10,9 +10,8 @@ const WalletListHeader = () => {
10
10
  return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: "Select your wallet", hasBackButton: false, onClose: close, closeButtonProps: { onClick: close } }));
11
11
  };
12
12
  exports.WalletListHeader = WalletListHeader;
13
- const WalletListContent = () => {
13
+ const WalletListContent = ({ onSelectWallet, }) => {
14
14
  const walletManager = (0, hooks_1.useWalletManager)();
15
- const { close } = (0, provider_1.useWalletModal)();
16
15
  const wallets = walletManager.wallets.map((w) => {
17
16
  return {
18
17
  name: w.info.name,
@@ -23,15 +22,6 @@ const WalletListContent = () => {
23
22
  originalWallet: w,
24
23
  };
25
24
  });
26
- const onWalletClick = async (wallet) => {
27
- try {
28
- await walletManager.connect(wallet.info.name);
29
- close();
30
- }
31
- catch (error) {
32
- console.log(error);
33
- }
34
- };
35
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalWalletList, { wallets: wallets, onWalletItemClick: onWalletClick }));
25
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalWalletList, { wallets: wallets, onWalletItemClick: onSelectWallet }));
36
26
  };
37
27
  exports.WalletListContent = WalletListContent;
@@ -3,3 +3,4 @@ export * from './WalletList';
3
3
  export * from './Connected';
4
4
  export * from './Reject';
5
5
  export * from './QRCode';
6
+ export * from './NotExist';
@@ -19,3 +19,4 @@ __exportStar(require("./WalletList"), exports);
19
19
  __exportStar(require("./Connected"), exports);
20
20
  __exportStar(require("./Reject"), exports);
21
21
  __exportStar(require("./QRCode"), exports);
22
+ __exportStar(require("./NotExist"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interchain-kit/react",
3
- "version": "0.0.1-beta.36",
3
+ "version": "0.0.1-beta.37",
4
4
  "author": "cosmology-tech <developers@cosmology.zone>",
5
5
  "description": "interchain-kit wallet connector react package",
6
6
  "main": "index.js",
@@ -33,15 +33,16 @@
33
33
  "keywords": [],
34
34
  "dependencies": {
35
35
  "@chain-registry/v2-types": "^0.53.0",
36
- "@interchain-kit/core": "0.0.1-beta.36",
36
+ "@interchain-kit/core": "0.0.1-beta.37",
37
37
  "@interchain-ui/react": "1.24.0",
38
38
  "@interchainjs/cosmos": "^0.0.1-beta.34",
39
39
  "@interchainjs/cosmos-types": "0.0.1-beta.17",
40
+ "@react-icons/all-files": "^4.1.0",
40
41
  "@types/react": "^18.3.3",
41
42
  "@types/react-dom": "^18.3.0",
42
43
  "interchainjs": "0.0.1-beta.27",
43
44
  "react": "^18.3.1",
44
45
  "react-dom": "^18.3.1"
45
46
  },
46
- "gitHead": "a9cc01ebfe784e8ce6166bf7053e0206e0ab6eb6"
47
+ "gitHead": "e37d5d9a81691eaf7296d7813e291008274ea12c"
47
48
  }