Skip to content

Commit

Permalink
[Mizu Wallet] Support Mizu Wallet (#369)
Browse files Browse the repository at this point in the history
* Add Mizuwallet

* update: Mizu Wallet support

* update: readme

* update: demo dependency

* add: changeset

* update: remove dependency in demo

* update: resolve conflicts in lock file

* fix: add window check

* update: mizuwallet adapter
  • Loading branch information
mizu-ice authored Jul 31, 2024
1 parent f88a41f commit 74f99d2
Show file tree
Hide file tree
Showing 10 changed files with 327 additions and 26 deletions.
5 changes: 5 additions & 0 deletions .changeset/empty-buttons-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@aptos-labs/wallet-adapter-core": minor
---

Add support for Mizu Wallet as an AIP-62 standarad compatible.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
# jetbrain
.idea

# vscode
.vscode

# dependencies
node_modules
.pnp
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Note: These are in alphabetical order, any new wallets must be in alphabetical o
- [AptosConnect](https://aptosconnect.app/)
- [Nightly](https://chromewebstore.google.com/detail/nightly/fiikommddbeccaoicoejoniammnalkfa)
- [Petra](https://chromewebstore.google.com/detail/petra-aptos-wallet/ejjladinnckdgjemekebdpeokbikhfci?hl=en)
- [MizuWallet](https://www.npmjs.com/package/@mizuwallet-sdk/aptos-wallet-adapter)
- T wallet

Legacy standard compatible
Expand Down
9 changes: 8 additions & 1 deletion apps/nextjs-example/src/components/WalletProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,14 @@ export const WalletProvider = ({ children }: PropsWithChildren) => {
<AptosWalletAdapterProvider
plugins={wallets}
autoConnect={autoConnect}
dappConfig={{ network: Network.DEVNET, aptosConnectDappId: "57fa42a9-29c6-4f1e-939c-4eefa36d9ff5" }}
dappConfig={{
network: Network.TESTNET,
aptosConnectDappId: "57fa42a9-29c6-4f1e-939c-4eefa36d9ff5",
mizuwallet: {
manifestURL:
"https://assets.mz.xyz/static/config/mizuwallet-connect-manifest.json",
},
}}
onError={(error) => {
toast({
variant: "destructive",
Expand Down
7 changes: 4 additions & 3 deletions packages/wallet-adapter-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,13 @@
"typescript": "^4.5.3"
},
"dependencies": {
"@aptos-connect/wallet-adapter-plugin": "^1.0.1",
"@aptos-labs/wallet-standard": "^0.1.0",
"@atomrigslab/aptos-wallet-adapter": "^0.1.20",
"@mizuwallet-sdk/aptos-wallet-adapter": "^0.1.1",
"buffer": "^6.0.3",
"eventemitter3": "^4.0.7",
"tweetnacl": "^1.0.3",
"@atomrigslab/aptos-wallet-adapter": "^0.1.20",
"@aptos-connect/wallet-adapter-plugin": "^1.0.1"
"tweetnacl": "^1.0.3"
},
"peerDependencies": {
"@aptos-labs/ts-sdk": "^1.18.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,34 @@
import { DevTWallet, TWallet } from "@atomrigslab/aptos-wallet-adapter";
import { AptosConnectWallet } from "@aptos-connect/wallet-adapter-plugin";
import { AptosStandardWallet } from "./WalletStandard";
import { Network } from "@aptos-labs/ts-sdk";
import { DevTWallet, TWallet } from "@atomrigslab/aptos-wallet-adapter";
import { MizuWallet } from "@mizuwallet-sdk/aptos-wallet-adapter";
import { DappConfig } from "../WalletCore";
import { AptosStandardWallet } from "./WalletStandard";

export function getSDKWallets(dappConfig?: DappConfig) {
const sdkWallets: AptosStandardWallet[] = [];

// Need to check window is defined for AptosConnect
if (typeof window !== "undefined") {
sdkWallets.push(new AptosConnectWallet({ network: dappConfig?.network, dappId: dappConfig?.aptosConnectDappId }));
sdkWallets.push(
new AptosConnectWallet({
network: dappConfig?.network,
dappId: dappConfig?.aptosConnectDappId,
})
);

if (
dappConfig?.network &&
[Network.MAINNET, Network.TESTNET].includes(dappConfig.network)
) {
sdkWallets.push(
new MizuWallet({
network: dappConfig.network as any,
manifestURL: dappConfig.mizuwallet.manifestURL,
appId: dappConfig.mizuwallet.appId,
}) as any
);
}
}

// Push production wallet if env is production, otherwise use dev wallet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@ export type AvailableWallets =
| "Nightly"
| "Petra"
| "T wallet"
| "Pontem Wallet";
| "Pontem Wallet"
| "Mizu Wallet";
6 changes: 6 additions & 0 deletions packages/wallet-adapter-core/src/WalletCore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ export type IAptosWallet = AptosStandardWallet & Wallet;
export interface DappConfig {
network: Network;
aptosConnectDappId?: string;
mizuwallet: {
manifestURL: string;
appId?: string;
};
}

/** Any wallet that can be handled by `WalletCore`.
Expand Down Expand Up @@ -152,10 +156,12 @@ export class WalletCore extends EventEmitter<WalletCoreEvents> {
dappConfig?: DappConfig
) {
super();

this._wallets = plugins;
this._optInWallets = optInWallets;
this._dappConfig = dappConfig;
this._sdkWallets = getSDKWallets(this._dappConfig);

// Strategy to detect AIP-62 standard compatible extension wallets
this.fetchExtensionAIP62AptosWallets();
// Strategy to detect AIP-62 standard compatible SDK wallets.
Expand Down
6 changes: 3 additions & 3 deletions packages/wallet-adapter-core/src/__tests__/WalletCore.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ const disconnectMock = jest.fn(() =>
Promise.resolve(console.log("disconnect"))
);
const networkMock = jest.fn(() => Promise.resolve(console.log("network")));
const signAndSubmitTransactionkMock = jest.fn((transaction, options?) =>
Promise.resolve({ hash: "signAndSubmitTransactionkMock" })
const signAndSubmitTransactionMock = jest.fn((transaction, options?) =>
Promise.resolve({ hash: "signAndSubmitTransactionMock" })
);
const signMessageMock = jest.fn((message) =>
Promise.resolve(signMessageResponseMock)
Expand All @@ -47,7 +47,7 @@ const walletMock: Wallet = {
connect: connectMock,
disconnect: disconnectMock,
network: networkMock,
signAndSubmitTransaction: signAndSubmitTransactionkMock,
signAndSubmitTransaction: signAndSubmitTransactionMock,
signMessage: signMessageMock,
onNetworkChange: onNetworkChangeeMock,
onAccountChange: onAccountChangeMock,
Expand Down
Loading

0 comments on commit 74f99d2

Please sign in to comment.