feat: eip6963 provider support switch by rdns
This commit is contained in:
parent
851f28a15a
commit
1dee08eb90
@ -77,10 +77,7 @@ export class MultiInjectedBrowserProvider extends BrowserProvider {
|
|||||||
this.#providers = [...this.#providers, providerDetail];
|
this.#providers = [...this.#providers, providerDetail];
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectedProvider = this.getEip6963Provider(this.#options)?.provider;
|
this.switchEip6963Provider(this.#options);
|
||||||
if (selectedProvider && selectedProvider !== this.ethereum) {
|
|
||||||
this.ethereum = selectedProvider;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// subscribe to the announceProvider event
|
// subscribe to the announceProvider event
|
||||||
@ -91,20 +88,33 @@ export class MultiInjectedBrowserProvider extends BrowserProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the EIP-6963 provider details.
|
* Switch the EIP-6963 provider detail.
|
||||||
*
|
*
|
||||||
* @param filter.rdns filter the provider by reverse DNS name
|
* @param filter.rdns filter the provider by reverse DNS name
|
||||||
* @returns EIP-6963 provider details or null
|
* @returns EIP-6963 provider details or null
|
||||||
*/
|
*/
|
||||||
getEip6963Provider(
|
switchEip6963Provider(
|
||||||
filter?: Eip6963ProviderFilter
|
filter?: Eip6963ProviderFilter
|
||||||
): Eip6963ProviderDetail | null {
|
): Eip6963ProviderDetail | null {
|
||||||
const defaultProvider = this.#providers[0] || null;
|
const provider =
|
||||||
if (!filter?.rdns) return defaultProvider;
|
|
||||||
return (
|
|
||||||
this.#providers.find(
|
this.#providers.find(
|
||||||
(providerDetail) => providerDetail.info.rdns === filter.rdns
|
(providerDetail) => providerDetail.info.rdns === filter?.rdns
|
||||||
) || defaultProvider
|
) ||
|
||||||
);
|
this.#providers[0] ||
|
||||||
|
null;
|
||||||
|
|
||||||
|
if (provider?.provider && provider.provider !== this.ethereum) {
|
||||||
|
this.ethereum = provider.provider;
|
||||||
|
}
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of EIP-6963 providers details.
|
||||||
|
*
|
||||||
|
* @returns EIP-6963 providers details list
|
||||||
|
*/
|
||||||
|
getEip6963Providers(): Eip6963ProviderDetail[] {
|
||||||
|
return this.#providers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user