diff --git a/infra/rooch-portal-v2/package.json b/infra/rooch-portal-v2/package.json
index 065d89b005..d5d17bf11d 100644
--- a/infra/rooch-portal-v2/package.json
+++ b/infra/rooch-portal-v2/package.json
@@ -41,8 +41,8 @@
"@mui/x-data-grid": "^7.7.0",
"@mui/x-date-pickers": "^7.7.0",
"@mui/x-tree-view": "^7.7.0",
- "@roochnetwork/rooch-sdk": "^0.2.3",
- "@roochnetwork/rooch-sdk-kit": "^0.2.3",
+ "@roochnetwork/rooch-sdk": "^0.2.4",
+ "@roochnetwork/rooch-sdk-kit": "^0.2.4",
"@tanstack/react-query": "^5.51.11",
"@types/react-syntax-highlighter": "^15.5.13",
"autoprefixer": "^10.4.19",
diff --git a/infra/rooch-portal-v2/src/layouts/components/account-button.tsx b/infra/rooch-portal-v2/src/layouts/components/account-button.tsx
index 2fe71d01ca..a22afc41c1 100644
--- a/infra/rooch-portal-v2/src/layouts/components/account-button.tsx
+++ b/infra/rooch-portal-v2/src/layouts/components/account-button.tsx
@@ -1,9 +1,11 @@
import type { IconButtonProps } from '@mui/material/IconButton';
-import { useWallets, useConnectWallet } from '@roochnetwork/rooch-sdk-kit';
+import { useState } from 'react';
import { Button } from '@mui/material';
+import WalletSelectModal from './wallet-select-modal';
+
export type AccountButtonProps = IconButtonProps & {
open: boolean;
photoURL: string;
@@ -11,17 +13,21 @@ export type AccountButtonProps = IconButtonProps & {
};
export function AccountButton() {
- const wallets = useWallets();
- const { mutateAsync: connectWallet } = useConnectWallet();
+ const [showWalletSelectModal, setShowWalletSelectModal] = useState(false);
return (
-
+ <>
+
+ {showWalletSelectModal && (
+ setShowWalletSelectModal(false)} />
+ )}
+ >
);
}
diff --git a/infra/rooch-portal-v2/src/layouts/components/account-drawer.tsx b/infra/rooch-portal-v2/src/layouts/components/account-drawer.tsx
index 9375e083fb..f23d9aa39a 100644
--- a/infra/rooch-portal-v2/src/layouts/components/account-drawer.tsx
+++ b/infra/rooch-portal-v2/src/layouts/components/account-drawer.tsx
@@ -3,12 +3,7 @@
import type { IconButtonProps } from '@mui/material/IconButton';
import { useState, useCallback } from 'react';
-import {
- useWallets,
- useWalletStore,
- useConnectWallet,
- useCurrentAddress,
-} from '@roochnetwork/rooch-sdk-kit';
+import { useWallets, useWalletStore, useCurrentAddress } from '@roochnetwork/rooch-sdk-kit';
import Box from '@mui/material/Box';
import { Button } from '@mui/material';
@@ -26,6 +21,7 @@ import { Iconify } from 'src/components/iconify';
import { Scrollbar } from 'src/components/scrollbar';
import { AnimateAvatar } from 'src/components/animate';
+import WalletSelectModal from './wallet-select-modal';
import { DisconnectButton } from './disconnect-button';
export type AccountDrawerProps = IconButtonProps & {};
@@ -34,11 +30,12 @@ export function AccountDrawer() {
const theme = useTheme();
const wallets = useWallets();
const currentAddress = useCurrentAddress();
- const { mutateAsync: connectWallet } = useConnectWallet();
const connectionStatus = useWalletStore((state) => state.connectionStatus);
const [open, setOpen] = useState(false);
+ const [showWalletSelectModal, setShowWalletSelectModal] = useState(false);
+
const handleOpenDrawer = useCallback(() => {
setOpen(true);
}, []);
@@ -72,7 +69,7 @@ export function AccountDrawer() {
handleOpenDrawer();
return;
}
- await connectWallet({ wallet: wallets[0] });
+ setShowWalletSelectModal(true);
}}
>
{connectionStatus === 'connected'
@@ -80,6 +77,10 @@ export function AccountDrawer() {
: 'Connect Wallet'}
+ {showWalletSelectModal && (
+ setShowWalletSelectModal(false)} />
+ )}
+
void;
+}) {
+ const { mutateAsync: connectWallet } = useConnectWallet();
+
+ const [walletInstalled, setWalletInstalled] = useState(false);
+ const [checkingInstall, setCheckingInstall] = useState(false);
+
+ useEffect(() => {
+ async function checkWalletInstalled() {
+ setCheckingInstall(true);
+ const installed = await wallet.checkInstalled();
+ setWalletInstalled(installed);
+ setCheckingInstall(false);
+ }
+ checkWalletInstalled();
+ }, [wallet]);
+
+ return (
+
+ );
+}
diff --git a/infra/rooch-portal-v2/src/layouts/components/wallet-select-modal.tsx b/infra/rooch-portal-v2/src/layouts/components/wallet-select-modal.tsx
new file mode 100644
index 0000000000..22e094d4ee
--- /dev/null
+++ b/infra/rooch-portal-v2/src/layouts/components/wallet-select-modal.tsx
@@ -0,0 +1,33 @@
+import { useWallets } from '@roochnetwork/rooch-sdk-kit';
+
+import { Stack, Dialog, DialogTitle, DialogContent } from '@mui/material';
+
+import WalletButton from './wallet-button';
+
+export default function WalletSelectModal({ onSelect }: { onSelect: () => void }) {
+ const wallets = useWallets();
+
+ return (
+
+ );
+}
diff --git a/infra/rooch-portal-v2/src/sections/assets/components/nft-list-card.tsx b/infra/rooch-portal-v2/src/sections/assets/components/nft-list-card.tsx
index 95b443e12c..5111443ea5 100644
--- a/infra/rooch-portal-v2/src/sections/assets/components/nft-list-card.tsx
+++ b/infra/rooch-portal-v2/src/sections/assets/components/nft-list-card.tsx
@@ -59,7 +59,6 @@ export default function NFTList({ address }: { address: string }) {
filter: {
object_type_with_owner: {
owner: address,
- filter_out: false,
object_type: FMNFT.objType,
},
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 57eee21cce..743192bb50 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -399,11 +399,11 @@ importers:
specifier: ^7.7.0
version: 7.14.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@roochnetwork/rooch-sdk':
- specifier: ^0.2.3
- version: 0.2.3
+ specifier: ^0.2.4
+ version: 0.2.4
'@roochnetwork/rooch-sdk-kit':
- specifier: ^0.2.3
- version: 0.2.3(@tanstack/react-query@5.52.2(react@18.3.1))(@types/react@18.3.3)(immer@9.0.21)(react@18.3.1)
+ specifier: ^0.2.4
+ version: 0.2.4(@tanstack/react-query@5.52.2(react@18.3.1))(@types/react@18.3.3)(immer@9.0.21)(react@18.3.1)
'@tanstack/react-query':
specifier: ^5.51.11
version: 5.52.2(react@18.3.1)
@@ -801,7 +801,7 @@ importers:
version: 4.5.3(@types/node@20.14.14)(terser@5.31.1)
vitest:
specifier: ^1.6.0
- version: 1.6.0(@types/node@20.14.14)(happy-dom@14.12.0)(jsdom@23.2.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.31.1)
+ version: 1.6.0(@types/node@20.14.14)(happy-dom@14.12.0)(jsdom@23.2.0)(terser@5.31.1)
wait-on:
specifier: ^7.0.1
version: 7.2.0
@@ -886,7 +886,7 @@ importers:
version: 4.5.3(@types/node@20.14.14)(terser@5.31.1)
vitest:
specifier: ^1.6.0
- version: 1.6.0(@types/node@20.14.14)(happy-dom@14.12.0)(jsdom@23.2.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.31.1)
+ version: 1.6.0(@types/node@20.14.14)(happy-dom@14.12.0)(jsdom@23.2.0)(terser@5.31.1)
sdk/typescript/templates/react-counter:
dependencies:
@@ -974,7 +974,7 @@ importers:
version: 4.5.3(@types/node@20.14.14)(terser@5.31.1)
vitest:
specifier: ^1.6.0
- version: 1.6.0(@types/node@20.14.14)(happy-dom@14.12.0)(jsdom@23.2.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.31.1)
+ version: 1.6.0(@types/node@20.14.14)(happy-dom@14.12.0)(jsdom@23.2.0)(terser@5.31.1)
packages:
@@ -4388,10 +4388,21 @@ packages:
'@tanstack/react-query': ^5.0.0
react: '*'
+ '@roochnetwork/rooch-sdk-kit@0.2.4':
+ resolution: {integrity: sha512-dwrvObq7xuFsM8CjimoOdgNP5biTmwA/k/qy0Zl4KWYCFyh80si5lYhS5oL2muggcMxv6/SYF+xeOCzjUwsNjA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@tanstack/react-query': ^5.0.0
+ react: '*'
+
'@roochnetwork/rooch-sdk@0.2.3':
resolution: {integrity: sha512-9OrkxjtWBg+bvvoMdnqiNFZk8nBHRMbZtEM/cSpCJgTC4UYbfd0LXk6WLGtEagU/FAaBP3p5G6CdBdg/4DdlGA==}
engines: {node: '>=18.0.0'}
+ '@roochnetwork/rooch-sdk@0.2.4':
+ resolution: {integrity: sha512-YhPQlAbUJ+zbFXXDyR7r40HruMmy8k/tvO03PJj55LG0EfjJ/UfZ7dC+/I9S6Vt7CGJ8ZExcMne6H6cq1IqECA==}
+ engines: {node: '>=18.0.0'}
+
'@rushstack/eslint-patch@1.10.3':
resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==}
@@ -15142,9 +15153,9 @@ snapshots:
- babel-plugin-macros
- immer
- '@roochnetwork/rooch-sdk-kit@0.2.3(@tanstack/react-query@5.52.2(react@18.3.1))(@types/react@18.3.3)(immer@9.0.21)(react@18.3.1)':
+ '@roochnetwork/rooch-sdk-kit@0.2.4(@tanstack/react-query@5.52.2(react@18.3.1))(@types/react@18.3.3)(immer@9.0.21)(react@18.3.1)':
dependencies:
- '@roochnetwork/rooch-sdk': 0.2.3
+ '@roochnetwork/rooch-sdk': 0.2.4
'@tanstack/react-query': 5.52.2(react@18.3.1)
'@vanilla-extract/css': 1.15.3(babel-plugin-macros@3.1.0)
'@vanilla-extract/dynamic': 2.1.1
@@ -15171,6 +15182,21 @@ snapshots:
tweetnacl: 1.0.3
valibot: 0.25.0
+ '@roochnetwork/rooch-sdk@0.2.4':
+ dependencies:
+ '@mysten/bcs': 1.0.2
+ '@noble/curves': 1.4.0
+ '@noble/hashes': 1.4.0
+ '@scure/base': 1.1.7
+ '@scure/bip32': 1.4.0
+ '@scure/bip39': 1.3.0
+ '@suchipi/femver': 1.0.0
+ bech32: 2.0.0
+ bs58check: 2.1.2
+ buffer: 6.0.3
+ tweetnacl: 1.0.3
+ valibot: 0.25.0
+
'@rushstack/eslint-patch@1.10.3': {}
'@sadoprotocol/ordit-sdk@file:sdk/typescript/bitseed-sdk/libs/sadoprotocol-ordit-sdk-v2.4.9.tgz(bufferutil@4.0.8)':
@@ -23837,7 +23863,7 @@ snapshots:
fsevents: 2.3.3
terser: 5.31.1
- vitest@1.6.0(@types/node@20.14.14)(happy-dom@14.12.0)(jsdom@23.2.0(bufferutil@4.0.8)(utf-8-validate@6.0.4))(terser@5.31.1):
+ vitest@1.6.0(@types/node@20.14.14)(happy-dom@14.12.0)(jsdom@23.2.0)(terser@5.31.1):
dependencies:
'@vitest/expect': 1.6.0
'@vitest/runner': 1.6.0