Skip to content

Latest commit

 

History

History
121 lines (91 loc) · 4.16 KB

README.md

File metadata and controls

121 lines (91 loc) · 4.16 KB

Berty

Wesh Network Expo Module

🚧 This project is work In Progress. This library cannot be used yet.

discord github twitter

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

  • Go = 1.22.4

Follow the React Native requirements and Expo requirements for your platform.

Instalation

Install the package in your project:

# create new expo project
npx create-expo-app my-app --template expo-template-blank-typescript
cd my-app
npx expo install @berty/weshnet-expo

Usage

Open App.tsx and replace the contents with the following code:

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 # or make build.android

Contributing

Contribute to Berty

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.