From c63b3b2591d861f0346400142fbced93b4b13333 Mon Sep 17 00:00:00 2001
From: kalashshah <202051096@iiitvadodara.ac.in>
Date: Tue, 14 Nov 2023 15:16:34 +0530
Subject: [PATCH] chore: update rn sdk docs
---
packages/reactnative/README.md | 337 ++++++++++++++++++++++++++++++++-
1 file changed, 333 insertions(+), 4 deletions(-)
diff --git a/packages/reactnative/README.md b/packages/reactnative/README.md
index f0d3d9f26..e01511f45 100644
--- a/packages/reactnative/README.md
+++ b/packages/reactnative/README.md
@@ -1,8 +1,337 @@
-# @push/react-native-sdk
-PUSH
+
-## Installation
+
+ Push Protocol is a web3 communication network, enabling cross-chain notifications, messaging, video, and NFT chat for dapps, wallets, and services.🚀
+
-```sh
+
+
+
+# Index
+
+- [Push React Native SDK](#push-react-native-sdk)
+- [How to use in your app?](#how-to-use-in-your-app)
+
+ - [Install the SDK](#install-the-sdk)
+ - [Install the peer dependencies](#install-the-peer-dependencies)
+ - [Nodeify the crypto packages](#nodeify-the-crypto-packages)
+ - [Wrap your app with the PushRNWrapper](#wrap-your-app-with-the-pushrnwrapper)
+ - [Start using the Push SDK in your app](#start-using-the-push-sdk-in-your-app)
+
+- [React Native SDK Features](#react-native-sdk-features)
+
+ - [User](#user)
+ - [Create User](#create-user)
+ - [Get User](#get-user)
+ - [Profile Update](#profile-update)
+ - [Profile Upgrade](#profile-upgrade)
+ - [Chat](#chat)
+ - [Decrypt PGP key](#decrypt-pgp-key)
+ - [Chats](#chats)
+ - [Conversation Hash](#conversation-hash)
+ - [Latest Chat message](#latest-chat-message)
+ - [Create Group](#create-group)
+ - [Update Group](#update-group)
+
+- [Other Features](#other-features)
+- [Resources](#resources)
+- [Contributing](#contributing)
+- [License](#license)
+
+# Push React Native SDK
+
+
+Push SDK provides an abstraction layer to integrate Push protocol features with your Frontend as well as Backend.
+This SDK is a react-native based repo of packages that helps developers to :
+
+- Build PUSH features into their DApps
+ - Notifications
+ - Chat
+ - Group Chat
+
+without having to write a lot of boilerplate code. All the heavy lifting is done by the SDK, so that you the developer can focus on building features and bootstrap a DApp with PUSH features in no time!
+
+
+
+
+## How to use in your app?
+
+#### Install the SDK
+
+```bash
+yarn add @push/react-native-sdk
+```
+
+or
+
+```bash
npm install @push/react-native-sdk
```
+
+#### Install the peer dependencies
+
+```bash
+yarn add react-native-randombytes@3.6.1 react-native-webview@13.2.2 react-native-webview-crypto@0.0.25
+```
+
+or
+
+```bash
+npm install react-native-randombytes@3.6.1 react-native-webview@13.2.2 react-native-webview-crypto@0.0.25
+```
+
+#### Nodeify the crypto packages
+
+Add postinstall script in your `package.json` file if `node_modules` are not nodeified already
+
+```bash
+"postinstall": "node_modules/.bin/rn-nodeify --install crypto,assert,url,stream,events,http,https,os,url,net,fs --hack"
+```
+
+#### Wrap your app with the PushRNWrapper
+
+```jsx
+import { PushRNWrapper } from '@push/react-native-sdk';
+
+return (
+
+
+
+);
+```
+
+#### Start using the Push SDK in your app
+
+```jsx
+import { createUser, Constants } from '@push/react-native-sdk';
+
+const user = await createUser({
+ account: account,
+ signer: signer,
+ env: Constants.ENV.DEV,
+});
+```
+
+## React Native SDK Features
+
+### User
+
+#### Create User
+
+```jsx
+import { createUser, Constants } from '@push/react-native-sdk';
+
+const user = await createUser({
+ account: 'eip155:0xACEe0D180d0118FD4F3027Ab801cc862520570d1',
+ signer: signer,
+ env: Constants.ENV.DEV,
+});
+```
+
+#### Get User
+
+```jsx
+import { get, Constants } from '@push/react-native-sdk';
+
+const user = await get({
+ account: 'eip155:0xACEe0D180d0118FD4F3027Ab801cc862520570d1',
+ env: Constants.ENV.DEV,
+});
+```
+
+#### Profile Update
+
+```jsx
+import { profileUpdate, Constants } from '@push/react-native-sdk';
+
+await profileUpdate({
+ account: 'eip155:0xACEe0D180d0118FD4F3027Ab801cc862520570d1',
+ env: Constants.ENV.DEV,
+ pgpPrivateKey: pgpPrivateKey,
+ profile: {
+ name: 'Updated Name',
+ desc: 'Updated Desc',
+ },
+});
+```
+
+#### Profile Upgrade
+
+```jsx
+import { profileUpgrade, Constants } from '@push/react-native-sdk';
+
+const upgradedProfile = await profileUpgrade({
+ signer: signer,
+ pgpPrivateKey: pgpPrivateKey,
+ pgpPublicKey: pgpPublicKey,
+ pgpEncryptionVersion: Constants.ENCRYPTION_TYPE.NFTPGP_V1,
+ account: account,
+ env: Constants.ENV.DEV,
+ additionalMeta: {
+ NFTPGP_V1: {
+ password: '0xrandompass', //new nft profile password
+ },
+ },
+});
+```
+
+### Chat
+
+#### Decrypt PGP key
+
+```jsx
+import { PushApi } from '@push/react-native-sdk';
+
+const user = await get({
+ account: 'eip155:0xACEe0D180d0118FD4F3027Ab801cc862520570d1',
+ env: Constants.ENV.DEV,
+});
+
+const pgpDecryptedPvtKey = await PushApi.chat.decryptPGPKey({
+ encryptedPGPPrivateKey: user.encryptedPrivateKey,
+ signer: signer,
+});
+```
+
+#### Chats
+
+```jsx
+import { chats, Constants } from '@push/react-native-sdk';
+
+const chatList = await chats({
+ account: 'eip155:0xACEe0D180d0118FD4F3027Ab801cc862520570d1',
+ pgpPrivateKey: pgpDecryptedPvtKey,
+ toDecrypt: true,
+ env: Constants.ENV.DEV,
+});
+```
+
+#### Conversation Hash
+
+```jsx
+import { PushApi, Constants } from '@push/react-native-sdk';
+
+const hash = await PushApi.chat.conversationHash({
+ account: 'eip155:0xACEe0D180d0118FD4F3027Ab801cc862520570d1',
+ conversationId: conversationId,
+ env: Constants.ENV.DEV,
+});
+```
+
+#### Latest Chat message
+
+```jsx
+import { latest, Constants } from '@push/react-native-sdk';
+
+const msg = await latest({
+ threadhash: hash,
+ toDecrypt: true,
+ account: 'eip155:0xACEe0D180d0118FD4F3027Ab801cc862520570d1',
+ env: Constants.ENV.DEV,
+});
+```
+
+#### Create Group
+
+```jsx
+import { createGroup, Constants } from '@push/react-native-sdk';
+
+const res = await createGroup({
+ groupName: groupName,
+ groupDescription: 'test',
+ groupImage: 'https://github.com',
+ account: account,
+ signer: signer,
+ members: [
+ '0x83d4c16b15F7BBA501Ca1057364a1F502d1c34D5',
+ '0x6Ff7DF70cAACAd6B35d2d30eca6bbb4E86fEE62f',
+ ],
+ admins: [],
+ isPublic: true,
+ env: Constants.ENV.DEV,
+});
+```
+
+#### Update Group
+
+```jsx
+import { updateGroup, Constants } from '@push/react-native-sdk';
+
+const res = await updateGroup({
+ groupName,
+ groupDescription: 'test',
+ groupImage: 'https://github.com',
+ chatId,
+ account: account,
+ signer: signer,
+ admins: ['0x83d4c16b15F7BBA501Ca1057364a1F502d1c34D5'],
+ members: [
+ '0x6Ff7DF70cAACAd6B35d2d30eca6bbb4E86fEE62f',
+ '0x6d118b28ebd82635A30b142D11B9eEEa2c0bea26',
+ '0x83d4c16b15F7BBA501Ca1057364a1F502d1c34D5',
+ ],
+ env: Constants.ENV.DEV,
+});
+```
+
+## Other Features
+
+All the remaining features of the `restapi` SDK are available in a similar manner to the `restapi` package. You can read more about them HERE
+
+These functions can be accessed by simply importing the `PushApi` object from the `@push/react-native-sdk` package.
+
+```jsx
+import { PushApi } from '@push/react-native-sdk';
+
+const response = await PushApi.chat.getGroupByName({
+ groupName: 'Push Group Chat 3',
+ env: 'staging',
+});
+```
+
+## Resources
+
+- **[Website](https://push.org)** To checkout our Product.
+- **[Docs](https://docs.push.org/developers/)** For comprehensive documentation.
+- **[Blog](https://medium.com/push-protocol)** To learn more about our partners, new launches, etc.
+- **[Discord](discord.gg/pushprotocol)** for support and discussions with the community and the team.
+- **[GitHub](https://github.com/ethereum-push-notification-service)** for source code, project board, issues, and pull requests.
+- **[Twitter](https://twitter.com/pushprotocol)** for the latest updates on the product and published blogs.
+
+## Contributing
+
+Push Protocol is an open source Project. We firmly believe in a completely transparent development process and value any contributions. We would love to have you as a member of the community, whether you are assisting us in bug fixes, suggesting new features, enhancing our documentation, or simply spreading the word.
+
+- Bug Report: Please create a bug report if you encounter any errors or problems while utilising the Push Protocol.
+- Feature Request: Please submit a feature request if you have an idea or discover a capability that would make development simpler and more reliable.
+- Documentation Request: If you're reading the Push documentation and believe that we're missing something, please create a docs request.
+
+Read how you can contribute HERE
+
+Not sure where to start? Join our discord and we will help you get started!
+
+
+
+## License
+
+Check out our License HERE