Skip to content

Commit 8a54a10

Browse files
authored
Add removeProvider method to providerDetector (#54)
1 parent 8083964 commit 8a54a10

File tree

8 files changed

+34
-6
lines changed

8 files changed

+34
-6
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased]
88

9+
## [1.0.0-rc.17] - 2024-09-26
10+
### Added
11+
- `@distributedlab/w3p` - `removeProvider` method to `ProviderDetector`
12+
913
## [1.0.0-rc.16] - 2024-05-03
1014
### Fixed
1115
- `@distributedlab/w3p` - `ProviderDetector` resets pure providers list on init

packages/fetcher/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@distributedlab/fetcher",
3-
"version": "1.0.0-rc.16",
3+
"version": "1.0.0-rc.17",
44
"description": "Fetch API wrapper with the extended functionality and simple interface",
55
"repository": {
66
"type": "git",

packages/jac/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@distributedlab/jac",
3-
"version": "1.0.0-rc.16",
3+
"version": "1.0.0-rc.17",
44
"description": "A library for constructing JSON-API compliant requests and responses",
55
"repository": {
66
"type": "git",

packages/reactivity/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@distributedlab/reactivity",
3-
"version": "1.0.0-rc.16",
3+
"version": "1.0.0-rc.17",
44
"description": "Implementation of the reactivity connections to propagate changes between objects",
55
"repository": {
66
"type": "git",

packages/tools/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@distributedlab/tools",
3-
"version": "1.0.0-rc.16",
3+
"version": "1.0.0-rc.17",
44
"description": "Collection of common utility functions and classes",
55
"repository": {
66
"type": "git",

packages/w3p/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@distributedlab/w3p",
3-
"version": "1.0.0-rc.16",
3+
"version": "1.0.0-rc.17",
44
"description": "Wrapper for Web3 Providers",
55
"repository": {
66
"type": "git",

packages/w3p/src/provider-detector.test.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ describe('performs provider detector unit test', () => {
2121
expect(providerDetector.isEnabled).toBeTruthy()
2222
})
2323
})
24-
describe('performs get and add providers', () => {
24+
25+
describe('performs get, add, and remove providers', () => {
2526
let providerDetector: ProviderDetector<keyof Record<string, string>>
2627

2728
beforeEach(() => {
@@ -49,5 +50,22 @@ describe('performs provider detector unit test', () => {
4950
name: PROVIDERS.Metamask,
5051
})
5152
})
53+
54+
test('should remove a provider', async () => {
55+
mockWindow({ ethereum: { providers: [MetamaskProvider] } })
56+
providerDetector.addProvider({ name: PROVIDERS.Metamask })
57+
providerDetector.addProvider({ name: PROVIDERS.Coinbase })
58+
59+
expect(providerDetector.providers).toEqual({
60+
metamask: { name: PROVIDERS.Metamask },
61+
coinbase: { name: PROVIDERS.Coinbase },
62+
})
63+
64+
providerDetector.removeProvider({ name: PROVIDERS.Metamask })
65+
66+
expect(providerDetector.providers).toEqual({
67+
coinbase: { name: PROVIDERS.Coinbase },
68+
})
69+
})
5270
})
5371
})

packages/w3p/src/provider-detector.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ export class ProviderDetector<T extends keyof Record<string, string>> {
8686
this.pureProviders.push(provider)
8787
}
8888

89+
public removeProvider(providerToRemove: ProviderInstance<T>): void {
90+
this.pureProviders = this.pureProviders.filter(
91+
provider => provider.name !== providerToRemove.name,
92+
)
93+
}
94+
8995
detectRawProviders(): void {
9096
const ethProviders = window?.ethereum
9197
? window?.ethereum?.providers || [window?.ethereum]

0 commit comments

Comments
 (0)