99 lines
3.0 KiB
TypeScript
Raw Normal View History

2022-05-10 19:42:15 -04:00
import * as React from 'react';
import { StyleSheet, View, Text } from 'react-native';
import { defaultPubsubTopic, newNode, start, isStarted, stop, peerID, relayEnoughPeers, listenAddresses, connect, peerCnt, peers, relayPublish, relayUnsubscribe, relaySubscribe, WakuMessage, onMessage, StoreQuery, storeQuery, Config, FilterSubscription, ContentFilter, filterSubscribe} from '@waku/react-native';
2022-05-10 19:42:15 -04:00
export default function App() {
const [result, setResult] = React.useState<string | undefined>();
React.useEffect(() => {
(async () => {
const nodeStarted = await isStarted();
2022-05-10 19:42:15 -04:00
if (!nodeStarted) {
await newNode(null);
await start();
}
2022-05-10 19:42:15 -04:00
console.log("The node ID:", await peerID())
await relaySubscribe()
onMessage(event => {
2022-05-11 18:04:53 -04:00
console.log("Message Received: ", event)
2022-05-10 19:42:15 -04:00
})
2022-05-11 18:04:53 -04:00
console.log("enoughPeers?", await relayEnoughPeers())
console.log("addresses", await listenAddresses())
console.log("connecting...")
await connect("/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/30303/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm", 5000)
await connect("/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/30303/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ", 5000)
console.log("connected!")
2022-05-11 18:04:53 -04:00
console.log("PeerCNT", await peerCnt())
console.log("Peers", await peers())
2022-05-10 19:42:15 -04:00
let msg: WakuMessage = new WakuMessage()
msg.contentTopic = "ABC"
msg.payload = new Uint8Array([1, 2, 3, 4, 5])
msg.timestamp = Date.now();
msg.version = 0;
let messageID = await relayPublish(msg);
console.log("The messageID", messageID)
// TO RETRIEVE HISTORIC MESSAGES:
console.log("Retrieving messages from store node")
const query = new StoreQuery();
query.contentFilters.push(new ContentFilter("/toy-chat/2/luzhou/proto"))
const queryResult = await storeQuery(query, "16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm")
console.log(queryResult)
// USING FILTER INSTEAD OF RELAY:
// Instantiate the node passing these parameters:
// let config = new Config();
// config.relay = false;
// config.filter = true;
// newNode(config})
/*
const filterSubs = new FilterSubscription();
filterSubs.contentFilters.push(new ContentFilter("/toy-chat/2/luzhou/proto"))
await filterSubscribe(filterSubs, "16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm")
*/
2022-07-08 09:53:30 -04:00
// console.log("Unsubscribing and stopping node...")
// await relayUnsubscribe();
2022-07-08 09:53:30 -04:00
// await stop(); // TODO: This must be called only once
2022-05-10 19:42:15 -04:00
})();
defaultPubsubTopic().then(setResult);
}, []);
return (
<View style={styles.container}>
<Text>Result: {result}</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
box: {
width: 60,
height: 60,
marginVertical: 20,
},
});