diff --git a/CHANGELOG.md b/CHANGELOG.md index 5614d566bb..775f2af9a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/README.md b/README.md index 6f8c4424e1..d0717d2383 100644 --- a/README.md +++ b/README.md @@ -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'] ); ``` diff --git a/examples/web-chat/src/App.tsx b/examples/web-chat/src/App.tsx index 0a01192640..d561a6fec9 100644 --- a/examples/web-chat/src/App.tsx +++ b/examples/web-chat/src/App.tsx @@ -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); diff --git a/src/lib/waku.ts b/src/lib/waku.ts index b36eefb47c..e5b944bb18 100644 --- a/src/lib/waku.ts +++ b/src/lib/waku.ts @@ -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 {