mango-v4-ui/utils/wallet.ts

41 lines
1.0 KiB
TypeScript

import { Wallet } from '@project-serum/anchor'
import { Wallet as WalletAdapter } from '@solana/wallet-adapter-react'
import { Keypair, PublicKey, Transaction } from '@solana/web3.js'
import { notify } from './notifications'
export default class EmptyWallet implements Wallet {
constructor(readonly payer: Keypair) {}
async signTransaction(tx: Transaction): Promise<Transaction> {
tx.partialSign(this.payer)
return tx
}
async signAllTransactions(txs: Transaction[]): Promise<Transaction[]> {
return txs.map((t) => {
t.partialSign(this.payer)
return t
})
}
get publicKey(): PublicKey {
return this.payer.publicKey
}
}
export const handleWalletConnect = (wallet: WalletAdapter) => {
if (!wallet) {
return
}
wallet?.adapter?.connect().catch((e) => {
if (e.name.includes('WalletLoadError')) {
notify({
title: `${wallet.adapter.name} Error`,
type: 'error',
description: `Please install ${wallet.adapter.name} and then reload this page.`,
})
}
})
}