Listening for Metamask Events with Ethers in Angular App
Accounts through Metamask, it is essential to stay informed about the events that occur within the context of your ethereum-based services. In this article,
What are Metamask Events?
Metamask events are notifications that can be sent or received from the metamask platform, indicating various state changes on your Ethereum account. These events can include things like:
- New Accounts Created
- Wallet Balances Updated
- Transaction Events (E.G., Receipt of a Transaction)
- Ownership Changes Account
Setting Up Ethers Provider and Signer
, You’ll first need to get an ether provider instance. This will allow you to interact with the metamask api and send and receive events.
`Typescript
import {component, oninit} from ‘@angular/core’;
Import * as Ethers from ‘Ethers’;
@Component ({
Selector: ‘App-Example’,
Template: ‘
Example Component.
‘
})
Export Class Examplecomponent Implements Oninit {
myprovider: ethers.providers.provider;
Constructor () {}
ngoninit (): void {
This.MyProvider = new ethers.providers.web3provider (window.ethereum);
}
}
`
In the above code, we’re creating a web3 provider instance using the ethers
package. You
Listening for Events
.
`Typescript
Import {Subscription} from ‘rxjs’;
Const Subscription: Subscription = This.miprovider.eventsubscriptions.Subscribe ((event) => {
console.log (event received: $ {event.name}
);
});
`
In the above code, we’re creating a subscription that listens for events. We can event by passing by
Angular Service
, You can create a service.
`Typescript
import {injectable} from ‘@angular/core’;
import {eventsubscription} from ‘./event-subscription’;
@Injectable ({
Providedin: ‘Root’
})
Export Class MetamaskService {
Private Subscription: Subscription;
Constructor () {}
Connectaccount (Account: String): Void {
this.subscription = this.miprovider.eventsubscriptions.subscribe ((event) => {
console.log (event received: $ {event.name}
);
});
// Disconnect When Account is closed
window.ethereum.ondisconnect (() => {
this.subscription.unsubscribe ();
});
}
}
`
MetamaskServiceClass that manages subscriptions and listens for events. .
Putting It All Together
, You'll need to:
- Create an Ethers Provider Instance.
2.
3.
Here's an updated example that demonstrates how to use these concepts:
Typescript
import {component, oninit} from ‘@angular/core’;
Import * as Ethers from ‘Ethers’;
@Component ({
Selector: ‘App-Example’,
Template: ‘
Example Component.
‘
})
Export Class Examplecomponent Implements Oninit {
myprovider: ethers.providers.web3provider;
subscription: subscription;
Constructor () {}
ngoninit (): void {
This.MyProvider = New Ethers.providers.web3Provider (window.