Skip to content

Commit

Permalink
feat: xdefiWallet support (#1175)
Browse files Browse the repository at this point in the history
* feat: add support for XDEFI Wallet

* fix: review comments

* chore: update svg and add example

* chore: minify svg

* chore: amend changeset

---------

Co-authored-by: Amin Limbada <aminlimbada94@gmail.com>
Co-authored-by: Amin Limbada <amin@xdefi.io>
  • Loading branch information
3 people committed Apr 19, 2023
1 parent e30f264 commit 0127559
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 0 deletions.
23 changes: 23 additions & 0 deletions .changeset/short-hornets-clap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
'@rainbow-me/rainbowkit': patch
---

XDEFI Wallet Support

**Example usage**

```tsx
import {
getDefaultWallets,
connectorsForWallets,
} from '@rainbow-me/rainbowkit';
import { xdefiWallet } from '@rainbow-me/rainbowkit/wallets';
const { wallets } = getDefaultWallets({ appName, projectId, chains });
const connectors = connectorsForWallets([
...wallets,
{
groupName: 'Other',
wallets: [xdefiWallet({ chains })],
},
]);
```
2 changes: 2 additions & 0 deletions packages/example/pages/_app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
omniWallet,
tahoWallet,
trustWallet,
xdefiWallet,
zerionWallet,
} from '@rainbow-me/rainbowkit/wallets';
import {
Expand Down Expand Up @@ -95,6 +96,7 @@ const connectors = connectorsForWallets([
omniWallet({ chains, projectId }),
tahoWallet({ chains }),
trustWallet({ chains, projectId }),
xdefiWallet({ chains }),
zerionWallet({ chains, projectId }),
],
},
Expand Down
2 changes: 2 additions & 0 deletions packages/rainbowkit/src/wallets/walletConnectors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { safeWallet } from './safeWallet/safeWallet';
import { tahoWallet } from './tahoWallet/tahoWallet';
import { trustWallet } from './trustWallet/trustWallet';
import { walletConnectWallet } from './walletConnectWallet/walletConnectWallet';
import { xdefiWallet } from './xdefiWallet/xdefiWallet';
import { zerionWallet } from './zerionWallet/zerionWallet';

export {
Expand All @@ -35,5 +36,6 @@ export {
trustWallet,
okxWallet,
walletConnectWallet,
xdefiWallet,
zerionWallet,
};
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
import type { InjectedConnectorOptions } from '@wagmi/core/dist/connectors/injected';
import { InjectedConnector } from 'wagmi/connectors/injected';
import { Chain } from '../../../components/RainbowKitProvider/RainbowKitChainContext';
import { Wallet } from '../../Wallet';

declare global {
interface Window {
xfi: any;
}
}

export interface XDEFIWalletOptions {
chains: Chain[];
}

export const xdefiWallet = ({
chains,
...options
}: XDEFIWalletOptions & InjectedConnectorOptions): Wallet => {
const isInstalled =
typeof window !== 'undefined' && typeof window?.xfi !== 'undefined';
return {
id: 'xdefi',
name: 'XDEFI Wallet',
installed: isInstalled,
iconUrl: async () => (await import('./xdefiWallet.svg')).default,
iconBackground: '#fff',
downloadUrls: {
browserExtension:
'https://chrome.google.com/webstore/detail/xdefi-wallet/hmeobnfnfcmdkdcmlblgagmfpfboieaf',
},
createConnector: () => ({
connector: new InjectedConnector({
chains,
options: {
//@ts-ignore
getProvider: () => {
return isInstalled ? (window.xfi?.ethereum as any) : undefined;
},
...options,
},
}),
}),
};
};

0 comments on commit 0127559

Please sign in to comment.