@reown/appkit-utils
Version:
The full stack toolkit to build onchain app UX.
34 lines • 1.32 kB
JavaScript
/* eslint-disable max-classes-per-file */
import { SafeAppProvider } from '@safe-global/safe-apps-provider';
import { EthersProvider } from './EthersProvider.js';
class _SafeProvider extends SafeAppProvider {
// Safe Provider doesn't support eth_requestAccounts, so we need to override the request method
// eslint-disable-next-line @typescript-eslint/no-explicit-any
request(request) {
if (request.method === 'eth_requestAccounts') {
return this.request({
method: 'eth_accounts',
params: []
});
}
return super.request(request);
}
}
export class SafeProvider extends EthersProvider {
async initialize() {
const { default: SafeAppsSDK } = await import('@safe-global/safe-apps-sdk');
const appsSdk = new SafeAppsSDK();
const info = await appsSdk.safe.getInfo();
const provider = new _SafeProvider(info, appsSdk);
await provider.connect().catch(error => {
// eslint-disable-next-line no-console
console.info('Failed to auto-connect to Safe:', error);
});
this.provider = provider;
this.initialized = true;
}
async getProvider() {
return Promise.resolve(this.provider);
}
}
//# sourceMappingURL=SafeProvider.js.map