synonymdev / react-native-slashtags

MIT License
4 stars 2 forks source link

react-native-slashtags

:warning: This is under active development. Please use as your own risk.

Description

An easy-to-implement React Native wrapper for Slashtags.

Available features

Getting started

yarn add @synonymdev/react-native-slashtags react-native-webview
#or
npm i -s @synonymdev/react-native-slashtags react-native-webview

# iOS installation
cd ios && pod install && cd ../

Usage

Wrap app root or top level in provider

import SlashtagsProvider from '@synonymdev/react-native-slashtags';

//  Slashtags functions can be accessed by all child components
const App = () => {
  return (
    <SlashtagsProvider>
      <Demo />
    </SlashtagsProvider>
  );
};

Any child component can access slashtags functions via useContext()

const Demo = () => {
  const context = useContext(SlashtagsContext);
  const [slashRef, setSlashRef] = useState();
  useEffect(() => {
    setSlashRef(context);
  }, [context]);

  return (
    <View>
        <Button
          title={'Generate key pair'}
          onPress={async () => {
            try {
              const keyPair = await slashRef.current.generateSeedKeyPair(`random-seed-here`);
              alert(keyPair.publicKey);
            } catch (e) {
              console.error(e);
            }
          }}
        />

        <Button
          title={'Parse URL'}
          onPress={async () => {
            try {
              const url = 'slashauth://i5ubvtggukkuxdhyv7rkxtj2a2dulonpcurt4ftq4kot5nnkhdna?q=ij2c7zf9gu';
              const parsed = await slashRef.current.parseUrl(url);
              alert(parsed.protocol);
            } catch (e) {
              console.error(e);
            }
          }}
        />
    </View>
  );
};

Project breakdown

Development

1. Build web app

 cd web
 yarn && yarn build
 cd ../

2. Bundle web app code into React Native lib

 # From root dir bundle up the web app into a javascript file (lib/src/web-interface.ts)
 node post-build-bundle.js

3. Run example

cd example
yarn && yarn add ../lib
yarn ios
# or
yarn android

4. Adding functions

  1. Add method to web app Interface.tsx
  2. Add corresponding React Native method in lib index.tsx