mirror of https://github.com/status-im/js-waku.git
Merge pull request #153 from status-im/disable-button
This commit is contained in:
commit
41ed5ffe66
|
@ -7,10 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
- `WakuRelay.getPeers` method.
|
||||
- Use `WakuRelay.getPeers` in web chat app example to disable send button.
|
||||
|
||||
### Changed
|
||||
- Enable passing `string`s to `addPeerToAddressBook`.
|
||||
- Use `addPeerToAddressBook` in examples and usage doc.
|
||||
- Settle on `js-waku` name across the board.
|
||||
- **Breaking**: `RelayDefaultTopic` renamed to `DefaultPubsubTopic`.
|
||||
|
||||
## [0.1.0] - 2021-05-12
|
||||
|
||||
|
|
|
@ -34,11 +34,15 @@ export default function MessageInput(props: Props) {
|
|||
}
|
||||
};
|
||||
|
||||
// Enable the button if there are relay peers available or the user is sending a command
|
||||
const activeButton =
|
||||
(waku && waku.relay.getPeers().size !== 0) || inputText.startsWith('/');
|
||||
|
||||
return (
|
||||
<TextComposer
|
||||
onKeyDown={keyPressHandler}
|
||||
onChange={messageHandler}
|
||||
active={!!waku}
|
||||
active={activeButton}
|
||||
onButtonClick={sendMessage}
|
||||
>
|
||||
<Row align="center">
|
||||
|
|
|
@ -9,7 +9,7 @@ export const RelayCodec = '/vac/waku/relay/2.0.0-beta2';
|
|||
/**
|
||||
* RelayDefaultTopic is the default gossipsub topic to use for waku relay
|
||||
*/
|
||||
export const RelayDefaultTopic = '/waku/2/default-waku/proto';
|
||||
export const DefaultPubsubTopic = '/waku/2/default-waku/proto';
|
||||
|
||||
/**
|
||||
* RelayGossipFactor affects how many peers we will emit gossip to at each heartbeat.
|
||||
|
|
|
@ -12,7 +12,7 @@ import { delay } from '../delay';
|
|||
import { Waku } from '../waku';
|
||||
import { WakuMessage } from '../waku_message';
|
||||
|
||||
import { RelayCodec, RelayDefaultTopic } from './index';
|
||||
import { DefaultPubsubTopic, RelayCodec } from './index';
|
||||
|
||||
const log = debug('waku:test');
|
||||
|
||||
|
@ -57,8 +57,8 @@ describe('Waku Relay', () => {
|
|||
});
|
||||
|
||||
it('Subscribe', async function () {
|
||||
const subscribers1 = waku1.libp2p.pubsub.getSubscribers(RelayDefaultTopic);
|
||||
const subscribers2 = waku2.libp2p.pubsub.getSubscribers(RelayDefaultTopic);
|
||||
const subscribers1 = waku1.libp2p.pubsub.getSubscribers(DefaultPubsubTopic);
|
||||
const subscribers2 = waku2.libp2p.pubsub.getSubscribers(DefaultPubsubTopic);
|
||||
|
||||
expect(subscribers1).to.contain(waku2.libp2p.peerId.toB58String());
|
||||
expect(subscribers2).to.contain(waku1.libp2p.peerId.toB58String());
|
||||
|
@ -160,7 +160,7 @@ describe('Waku Relay', () => {
|
|||
it('nim subscribes to js', async function () {
|
||||
const nimPeerId = await nimWaku.getPeerId();
|
||||
const subscribers = waku.libp2p.pubsub.getSubscribers(
|
||||
RelayDefaultTopic
|
||||
DefaultPubsubTopic
|
||||
);
|
||||
|
||||
expect(subscribers).to.contain(nimPeerId.toB58String());
|
||||
|
@ -244,7 +244,7 @@ describe('Waku Relay', () => {
|
|||
|
||||
while (subscribers.length === 0) {
|
||||
await delay(200);
|
||||
subscribers = waku.libp2p.pubsub.getSubscribers(RelayDefaultTopic);
|
||||
subscribers = waku.libp2p.pubsub.getSubscribers(DefaultPubsubTopic);
|
||||
}
|
||||
|
||||
const nimPeerId = await nimWaku.getPeerId();
|
||||
|
|
|
@ -19,11 +19,11 @@ import PeerId from 'peer-id';
|
|||
import { WakuMessage } from '../waku_message';
|
||||
|
||||
import * as constants from './constants';
|
||||
import { RelayCodec, RelayDefaultTopic } from './constants';
|
||||
import { DefaultPubsubTopic, RelayCodec } from './constants';
|
||||
import { getRelayPeers } from './get_relay_peers';
|
||||
import { RelayHeartbeat } from './relay_heartbeat';
|
||||
|
||||
export { RelayCodec, RelayDefaultTopic };
|
||||
export { RelayCodec, DefaultPubsubTopic };
|
||||
|
||||
/**
|
||||
* See {GossipOptions} from libp2p-gossipsub
|
||||
|
@ -94,7 +94,7 @@ export class WakuRelay extends Gossipsub implements Pubsub {
|
|||
* @returns {void}
|
||||
*/
|
||||
public start(): void {
|
||||
this.on(constants.RelayDefaultTopic, (event) => {
|
||||
this.on(constants.DefaultPubsubTopic, (event) => {
|
||||
const wakuMsg = WakuMessage.decode(event.data);
|
||||
if (this.observers['']) {
|
||||
this.observers[''].forEach((callbackFn) => {
|
||||
|
@ -111,7 +111,7 @@ export class WakuRelay extends Gossipsub implements Pubsub {
|
|||
});
|
||||
|
||||
super.start();
|
||||
super.subscribe(constants.RelayDefaultTopic);
|
||||
super.subscribe(constants.DefaultPubsubTopic);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -122,7 +122,7 @@ export class WakuRelay extends Gossipsub implements Pubsub {
|
|||
*/
|
||||
public async send(message: WakuMessage): Promise<void> {
|
||||
const msg = message.encode();
|
||||
await super.publish(constants.RelayDefaultTopic, Buffer.from(msg));
|
||||
await super.publish(constants.DefaultPubsubTopic, Buffer.from(msg));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -152,6 +152,18 @@ export class WakuRelay extends Gossipsub implements Pubsub {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the relay peers we are connected to and we would publish a message to
|
||||
*/
|
||||
getPeers(): Set<string> {
|
||||
return getRelayPeers(this, DefaultPubsubTopic, this._options.D, (id) => {
|
||||
// Filter peers we would not publish to
|
||||
return (
|
||||
this.score.score(id) >= this._options.scoreThresholds.publishThreshold
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Join pubsub topic.
|
||||
* This is present to override the behavior of Gossipsub and should not
|
||||
|
|
|
@ -3,7 +3,7 @@ import { v4 as uuid } from 'uuid';
|
|||
|
||||
import * as proto from '../../proto/waku/v2/store';
|
||||
import { DefaultContentTopic } from '../waku_message';
|
||||
import { RelayDefaultTopic } from '../waku_relay';
|
||||
import { DefaultPubsubTopic } from '../waku_relay';
|
||||
|
||||
export class HistoryRPC {
|
||||
public constructor(public proto: proto.HistoryRPC) {}
|
||||
|
@ -11,7 +11,7 @@ export class HistoryRPC {
|
|||
static createQuery(
|
||||
contentTopics: string[] = [DefaultContentTopic],
|
||||
cursor?: proto.Index,
|
||||
pubsubTopic: string = RelayDefaultTopic
|
||||
pubsubTopic: string = DefaultPubsubTopic
|
||||
): HistoryRPC {
|
||||
const pagingInfo = {
|
||||
pageSize: 10,
|
||||
|
|
|
@ -13,7 +13,7 @@ import { Multiaddr, multiaddr } from 'multiaddr';
|
|||
import PeerId from 'peer-id';
|
||||
|
||||
import { WakuMessage } from '../lib/waku_message';
|
||||
import { RelayDefaultTopic } from '../lib/waku_relay';
|
||||
import { DefaultPubsubTopic } from '../lib/waku_relay';
|
||||
import * as proto from '../proto/waku/v2/message';
|
||||
|
||||
import { existsAsync, mkdirAsync, openAsync } from './async_fs';
|
||||
|
@ -167,7 +167,7 @@ export class NimWaku {
|
|||
};
|
||||
|
||||
return this.rpcCall<boolean>('post_waku_v2_relay_v1_message', [
|
||||
RelayDefaultTopic,
|
||||
DefaultPubsubTopic,
|
||||
rpcMessage,
|
||||
]);
|
||||
}
|
||||
|
@ -176,7 +176,7 @@ export class NimWaku {
|
|||
this.checkProcess();
|
||||
|
||||
return this.rpcCall<proto.WakuMessage[]>('get_waku_v2_relay_v1_messages', [
|
||||
RelayDefaultTopic,
|
||||
DefaultPubsubTopic,
|
||||
]).then((msgs) => msgs.map((protoMsg) => new WakuMessage(protoMsg)));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue