Wesh Network Expo Module
🚧 This project is work In Progress. This library cannot be used yet.
The Wesh network toolkit lets your application use the Wesh protocol to support privacy-based, off-grid, peer-to-peer communication.
For details, see the Wesh website at https://wesh.network. The website includes blog tutorials which introduce you to Wesh and walk you through some example applications and background of the Wesh protocol.
Requirements
Follow the React Native requirements and Expo requirements for your platform.
Instalation
Install the package in your project:
npx create-expo-app my-app --template expo-template-blank-typescript
cd my-app
npx expo install @berty/weshnet-expo
Usage
Add the following to your App.tsx
:
import React, { useState, useEffect } from "react";
import { StyleSheet, Text, View } from "react-native";
import * as WeshnetExpo from "@berty/weshnet-expo";
export default function App() {
const [peerID, setPeerID] = useState<string>();
useEffect(() => {
WeshnetExpo.init().then((client) => {
client.serviceGetConfiguration({}).then((res) => {
setPeerID(res.peerId);
console.log(res);
});
});
}, []);
const loadingView = <Text> Loading Weshnet... </Text>;
const weshView = <Text>hello my peerid is: {peerID}</Text>;
return (
<View style={styles.container}>{!peerID ? loadingView : weshView}</View>
);
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
alignItems: "center",
justifyContent: "center",
},
});
}
weshnet
needs some system permissions to get the phone's connectivity status and make mDNS
working. Edit your app.json
to include the following permissions:
{
"expo": {
"android": {
"permissions": [
"android.permission.READ_PHONE_STATE",
"android.permission.ACCESS_NETWORK_STATE",
"android.permission.CHANGE_WIFI_MULTICAST_STATE"
]
}
}
}
You need to update your native Android / iOS folders. If you have a managed workflow
(learn more here), do the following (this command will delete and recreate the native folders!!!)
npx expo prebuild --clean
Example App
cd example
make build.ios
Contributing
If you want to help out, please see docs/developer-guide.md and CONTRIBUTING.md.
This repository falls under the Berty Code of Conduct.
You can contact us on the #questions-❓
channel on discord.
License
Dual-licensed under Apache 2.0 and MIT terms.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
See the COPYRIGHT file for more details.