@thirdweb-dev/wallets
Version:
<p align="center"> <br /> <a href="https://thirdweb.com"><img src="https://github.com/thirdweb-dev/js/blob/main/packages/sdk/logo.svg?raw=true" width="200" alt=""/></a> <br /> </p> <h1 align="center">thirdweb Wallet SDK</h1> <p align="center"> <a href="ht
101 lines (98 loc) • 3.27 kB
JavaScript
import { _ as _defineProperty } from '../../../../dist/defineProperty-c8ecdc07.browser.esm.js';
import { _ as _classPrivateFieldInitSpec, a as _classPrivateFieldSet, b as _classPrivateFieldGet } from '../../../../dist/classPrivateFieldSet-a5db7c83.browser.esm.js';
import { C as Connector } from '../../../../dist/connector-05689d68.browser.esm.js';
import { getChainProvider } from '@thirdweb-dev/sdk';
import { n as normalizeChainId } from '../../../../dist/normalizeChainId-e4cc0175.browser.esm.js';
import 'eventemitter3';
var _provider = /*#__PURE__*/new WeakMap();
var _signer = /*#__PURE__*/new WeakMap();
class SignerConnector extends Connector {
constructor(options) {
super();
_classPrivateFieldInitSpec(this, _provider, {
writable: true,
value: void 0
});
_classPrivateFieldInitSpec(this, _signer, {
writable: true,
value: void 0
});
_defineProperty(this, "onChainChanged", chainId => {
const id = normalizeChainId(chainId);
const unsupported = !this.options.chains.find(c => c.chainId === id);
this.emit("change", {
chain: {
id,
unsupported
}
});
});
this.options = options;
}
async connect(args) {
if (args.chainId) {
this.switchChain(args.chainId);
}
const signer = await this.getSigner();
const address = await signer.getAddress();
return address;
}
async disconnect() {
_classPrivateFieldSet(this, _provider, undefined);
_classPrivateFieldSet(this, _signer, undefined);
}
async getAddress() {
const signer = await this.getSigner();
if (!signer) {
throw new Error("No signer found");
}
return await signer.getAddress();
}
async isConnected() {
try {
const addr = await this.getAddress();
return !!addr;
} catch {
return false;
}
}
async getProvider() {
if (!_classPrivateFieldGet(this, _provider)) {
_classPrivateFieldSet(this, _provider, getChainProvider(this.options.chain, {
clientId: this.options.clientId,
secretKey: this.options.secretKey
}));
}
return _classPrivateFieldGet(this, _provider);
}
async getSigner() {
if (!_classPrivateFieldGet(this, _signer)) {
const provider = await this.getProvider();
_classPrivateFieldSet(this, _signer, getUpdatedSigner(this.options.signer, provider));
}
return _classPrivateFieldGet(this, _signer);
}
async switchChain(chainId) {
const chain = this.options.chains.find(c => c.chainId === chainId);
if (!chain) {
throw new Error(`Chain not found for chainId ${chainId}, please add it to the chains property when creating this wallet`);
}
_classPrivateFieldSet(this, _provider, getChainProvider(chain, {
clientId: this.options.clientId,
secretKey: this.options.secretKey
}));
_classPrivateFieldSet(this, _signer, getUpdatedSigner(this.options.signer, _classPrivateFieldGet(this, _provider)));
this.onChainChanged(chainId);
}
async setupListeners() {}
updateChains(chains) {
this.options.chains = chains;
}
}
function getUpdatedSigner(signer, provider) {
if (provider) {
return signer.connect(provider);
}
return signer;
}
export { SignerConnector };