Enhance addPeerToAddressBook

So that consumer does not need to import multiaddr and peer-id.
This commit is contained in:
Franck Royer 2021-05-13 11:47:03 +10:00
parent 19e265c490
commit 6f7c1e0ca3
No known key found for this signature in database
GPG Key ID: A82ED75A8DFC50A4
4 changed files with 36 additions and 19 deletions

View File

@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Changed
- Enable passing `string`s to `addPeerToAddressBook`.
- Use `addPeerToAddressBook` in examples.
## [0.1.0] - 2021-05-12
### Added

View File

@ -24,11 +24,9 @@ Connect to a new peer:
import { multiaddr } from 'multiaddr';
import PeerId from 'peer-id';
waku.libp2p.peerStore.addressBook.add(
PeerId.createFromB58String(
'16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ'
),
[multiaddr('/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss')]
waku.addPeerToAddressBook(
'16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ',
['/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss']
);
```

View File

@ -1,4 +1,3 @@
import { multiaddr } from 'multiaddr';
import PeerId from 'peer-id';
import { useEffect, useState } from 'react';
import './App.css';
@ -147,17 +146,13 @@ async function initWaku(setter: (waku: Waku) => void) {
setter(waku);
waku.libp2p.peerStore.addressBook.add(
PeerId.createFromB58String(
'16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ'
),
[multiaddr('/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss')]
waku.addPeerToAddressBook(
'16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ',
['/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7010/wss']
);
waku.libp2p.peerStore.addressBook.add(
PeerId.createFromB58String(
'16Uiu2HAmSyrYVycqBCWcHyNVQS6zYQcdQbwyov1CDijboVRsQS37'
),
[multiaddr('/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7009/wss')]
waku.addPeerToAddressBook(
'16Uiu2HAmSyrYVycqBCWcHyNVQS6zYQcdQbwyov1CDijboVRsQS37',
['/dns4/node-01.do-ams3.jdev.misc.statusim.net/tcp/7009/wss']
);
} catch (e) {
console.log('Issue starting waku ', e);

View File

@ -4,7 +4,7 @@ import { bytes } from 'libp2p-noise/dist/src/@types/basic';
import { Noise } from 'libp2p-noise/dist/src/noise';
import Websockets from 'libp2p-websockets';
import filters from 'libp2p-websockets/src/filters';
import { Multiaddr } from 'multiaddr';
import { Multiaddr, multiaddr } from 'multiaddr';
import PeerId from 'peer-id';
import { RelayCodec, WakuRelay } from './waku_relay';
@ -92,6 +92,7 @@ export class Waku {
/**
* Dials to the provided peer.
*
* @param peer The peer to dial
*/
async dial(
@ -103,8 +104,27 @@ export class Waku {
return this.libp2p.dialProtocol(peer, [RelayCodec, StoreCodec]);
}
addPeerToAddressBook(peerId: PeerId, multiaddr: Multiaddr[]): void {
this.libp2p.peerStore.addressBook.set(peerId, multiaddr);
/**
* Add peer to address book, it will be auto-dialed in the background.
*/
addPeerToAddressBook(
peerId: PeerId | string,
multiaddrs: Multiaddr[] | string[]
): void {
let peer;
if (typeof peerId === 'string') {
peer = PeerId.createFromB58String(peerId);
} else {
peer = peerId;
}
const addresses = multiaddrs.map((addr: Multiaddr | string) => {
if (typeof addr === 'string') {
return multiaddr(addr);
} else {
return addr;
}
});
this.libp2p.peerStore.addressBook.set(peer, addresses);
}
async stop(): Promise<void> {