From e6fa75fe33b2e6dfe9e063579b3b62a81c920536 Mon Sep 17 00:00:00 2001 From: Kevin FS Date: Fri, 21 Feb 2020 16:26:20 +0100 Subject: [PATCH 01/13] Antora docs set-up --- docs/modules/ROOT/pages/index.adoc | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/modules/ROOT/pages/index.adoc diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docs/modules/ROOT/pages/index.adoc @@ -0,0 +1 @@ + From 591d5bc595ff9713f921daa5db235d4cf335915c Mon Sep 17 00:00:00 2001 From: Kevin FS Date: Fri, 21 Feb 2020 16:28:38 +0100 Subject: [PATCH 02/13] Create antora.yml --- docs/antora.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/antora.yml diff --git a/docs/antora.yml b/docs/antora.yml new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docs/antora.yml @@ -0,0 +1 @@ + From 53e8eb667e9cbdc9582aa41831576fdda9aacf0b Mon Sep 17 00:00:00 2001 From: Kevin FS Date: Fri, 21 Feb 2020 16:29:29 +0100 Subject: [PATCH 03/13] Create nav.adoc --- docs/modules/ROOT/nav.adoc | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/modules/ROOT/nav.adoc diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docs/modules/ROOT/nav.adoc @@ -0,0 +1 @@ + From a7b97a6e609f57f3c2878a108b8aa137f4b58562 Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Sun, 23 Feb 2020 10:17:51 +0100 Subject: [PATCH 04/13] testing antora docs setup --- docs/antora.yml | 6 +++++- docs/modules/ROOT/nav.adoc | 2 +- docs/modules/ROOT/pages/index.adoc | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/antora.yml b/docs/antora.yml index 8b13789..0c6dc0e 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1 +1,5 @@ - +name: ost-wallet-sdk-react-native +title: Ost Wallet SDK React Native +version: '1.0' +nav: +- modules/ROOT/nav.adoc diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 8b13789..27f6f89 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -1 +1 @@ - +* xref:index.adoc[Overview] diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 8b13789..de94c79 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -1 +1,3 @@ +This is the index.adoc page for OST-WALLET-SDK-REACT-NATIVE +This is a test :) \ No newline at end of file From d95c9efc040b112aaeb6383072c5c016df3d7601 Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Sun, 23 Feb 2020 16:47:11 +0100 Subject: [PATCH 05/13] antora docs setup --- docs/antora.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/antora.yml b/docs/antora.yml index 0c6dc0e..c32f2d1 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1,5 +1,5 @@ -name: ost-wallet-sdk-react-native -title: Ost Wallet SDK React Native +name: client-sdk-react-native +title: Ost Client (Mobile Wallet) SDK React Native version: '1.0' nav: - modules/ROOT/nav.adoc From 7c26345ea586911a3f2229fb37c5bf51d44be0c7 Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Mon, 24 Feb 2020 23:23:26 +0100 Subject: [PATCH 06/13] testing kramdoc conversion of md files to adoc --- README.md.adoc | 336 +++++++ docs/modules/ROOT/nav.adoc | 3 +- .../ROOT/pages/OstCoreWorkflows.md.adoc | 624 +++++++++++++ docs/modules/ROOT/pages/OstJsonApi.md.adoc | 615 +++++++++++++ .../ROOT/pages/OstTransactionConfig.md.adoc | 46 + .../ROOT/pages/OstTransactionHelper.md.adoc | 94 ++ .../ROOT/pages/OstWalletSdkGetMethods.md.adoc | 395 ++++++++ .../ROOT/pages/OstWalletSettings.md.adoc | 78 ++ .../pages/OstWalletSettingsConfig.md.adoc | 121 +++ docs/modules/ROOT/pages/OstWalletUI.md.adoc | 842 ++++++++++++++++++ docs/modules/ROOT/pages/android_setup.md.adoc | 79 ++ docs/modules/ROOT/pages/ios_setup.md.adoc | 152 ++++ documentation/OstCoreWorkflows.md.adoc | 624 +++++++++++++ documentation/OstJsonApi.md.adoc | 615 +++++++++++++ documentation/OstTransactionConfig.md.adoc | 46 + documentation/OstTransactionHelper.md.adoc | 94 ++ documentation/OstWalletSdkGetMethods.md.adoc | 395 ++++++++ documentation/OstWalletSettings.md.adoc | 78 ++ documentation/OstWalletSettingsConfig.md.adoc | 121 +++ documentation/OstWalletUI.md.adoc | 842 ++++++++++++++++++ documentation/android_setup.md.adoc | 79 ++ documentation/ios_setup.md.adoc | 152 ++++ 22 files changed, 6430 insertions(+), 1 deletion(-) create mode 100644 README.md.adoc create mode 100644 docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc create mode 100644 docs/modules/ROOT/pages/OstJsonApi.md.adoc create mode 100644 docs/modules/ROOT/pages/OstTransactionConfig.md.adoc create mode 100644 docs/modules/ROOT/pages/OstTransactionHelper.md.adoc create mode 100644 docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc create mode 100644 docs/modules/ROOT/pages/OstWalletSettings.md.adoc create mode 100644 docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc create mode 100644 docs/modules/ROOT/pages/OstWalletUI.md.adoc create mode 100644 docs/modules/ROOT/pages/android_setup.md.adoc create mode 100644 docs/modules/ROOT/pages/ios_setup.md.adoc create mode 100644 documentation/OstCoreWorkflows.md.adoc create mode 100644 documentation/OstJsonApi.md.adoc create mode 100644 documentation/OstTransactionConfig.md.adoc create mode 100644 documentation/OstTransactionHelper.md.adoc create mode 100644 documentation/OstWalletSdkGetMethods.md.adoc create mode 100644 documentation/OstWalletSettings.md.adoc create mode 100644 documentation/OstWalletSettingsConfig.md.adoc create mode 100644 documentation/OstWalletUI.md.adoc create mode 100644 documentation/android_setup.md.adoc create mode 100644 documentation/ios_setup.md.adoc diff --git a/README.md.adoc b/README.md.adoc new file mode 100644 index 0000000..1e70145 --- /dev/null +++ b/README.md.adoc @@ -0,0 +1,336 @@ += Ost Wallet SDK React Native + +== Introduction + +Ost React Native Wallet SDK is the official Ost Wallet SDK for react-native platform. +The SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. + +Ost React Native Wallet SDK... + +* Safely generates and stores keys on the user's mobile device +* Signs ethereum transactions and data as defined by contracts using EIP-1077 +* Enables users to recover access to their Brand Tokens in case the user loses their authorized device + +== Table of Contents + +* <> +* <> +* <> + ** <> + ** <> + ** <> +* <> +* <> +* <> + ** <> + *** <> + *** <> + *** <> + ** <> + *** <> + *** <> + *** <> + ** <> + *** <> + ** <> + *** <> +* <> +* <> +* <> + ** <> + ** <> + +== Installing React-native SDK + +. Install React Native and create a react-native project + +Follow this https://facebook.github.io/react-native/docs/0.59/getting-started[official react-native getting started guide] to install react native and create a react-native project + +. Install Ost React Native SDK in your project The sdk needs following peer dependencies: + ** https://www.npmjs.com/package/eventemitter3[eventemitter3] + ** https://www.npmjs.com/package/lodash.merge[lodash.merge] + ** https://www.npmjs.com/package/bignumber.js[bignumber.js] + +[source,bash] +---- + npm install --save lodash.merge + npm install --save eventemitter3 + npm install --save bignumber.js +---- + +Run following command in your react-native project root + +[source,bash] +---- + npm install --save @ostdotcom/ost-wallet-sdk-react-native +---- + +. Linking the Ost React Native SDK with your project + +[source,bash] +---- + react-native link @ostdotcom/ost-wallet-sdk-react-native +---- + +. xref:./documentation/android_setup.adoc[Android set-up for Ost React Native SDK] +. xref:./documentation/ios_setup.adoc[iOS Set-up for Ost React Native SDK] + +== Migrating to another version + +If you decide to change the SDK version, please make sure to update the downsteam native SDKs. + +For Android, please run: + +[source,shell] +---- +react-native link +react-native run-android +---- + +For iOS, please update the `ios/Cartfile` with desired version and run: + +[source,shell] +---- +carthage update --cache-builds --platform ios +---- + +After updating the SDK, please delete `ostwalletrnsdk` using the *Remove References* option and add it back by following link:./documentation/ios_setup.md#5-add-additional-sdk-files[this step]. + +== SDK Usage + +* Initialize the SDK +* Subscribe to events +* Implement `OstWalletWorkFlowCallback` for a workflow +* Execute workflow + +=== Initializing the SDK + +You must initialize the SDK before using it. + +____ +Initialize the SDK in using BASE_URL (Ost Platform endpoint) inside App.js `constructor()` method. +____ + +[source,javascript] +---- +/** + * Initialize wallet sdk + * @param {String} endpoint - Ost Platform endpoint + * @param {function} Callback function with error and success status. + * @public + */ + OstWalletSdk.initialize( endpoint, + (error, success) => {}) +---- + +=== Initializing SDK With Config + +Starting version `2.3.1` application can also pass SDK config in the initialize method + +____ +If config is passed in `initialize` method, the configs specified in `OstWalletSdk.plist` and `ost-mobilesdk.json` are ignored. +It is no longer mandatory to define `ost-mobilesdk.json` and `OstWalletSdk.plist` files. +____ + +[source,javascript] +---- + let sdkConfig = { + "BLOCK_GENERATION_TIME": 3, + "PIN_MAX_RETRY_COUNT": 3, + "REQUEST_TIMEOUT_DURATION": 60, + "SESSION_BUFFER_TIME": 3600, + "PRICE_POINT_CURRENCY_SYMBOL": "USD", + "USE_SEED_PASSWORD": false, + "NO_OF_SESSIONS_ON_ACTIVATE_USER": 1, + "ENABLE_IOS_DEVICE_RESTORE": false + }; + + /** + * Initialize wallet sdk + * @param {String} endpoint - Ost Platform endpoint + * @param {Object} config (optional) - SDK Config. Supported from version 2.3.1 + * @param {function} callback - A typical node-style, error-first callback. + * @callback params {Object}error , {Boolean} success + * @public + */ + OstWalletSdk.initialize( endpoint, sdkConfig, (error, success) => { + + }); +---- + +=== Subscribe to `OstWalletSdkEvents` in your top most level component + +In the most top level component (mostly `App.js`) import like this: + +[source,javascript] +---- +import { OstWalletSdkEvents, OstWalletSdk, OstWalletSdkUI, OstJsonApi } from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +In `componentDidMount()` subscribe to OstWalletSdkEvents and in `componentWillUnmount()` unsubscribe to OstWalletSdkEvents. +Also initialize the SDK in using BASE_URL (Ost Platform endpoint) `constructor()` method: + +[source,javascript] +---- +class App extends Component { + + constructor() { + super(); + OstWalletSdk.initialize(BASE_URL, (error, success) => { + if(error) { + console.warn(error); + } + else { + console.warn(success); + } + + }); + } + + componentDidMount() { + OstWalletSdkEvents.subscribeEvent(); + } + + componentWillUnmount() { + OstWalletSdkEvents.unsubscribeEvent(); + } + +} +---- + +== Getter Methods + +The SDK provides getter methods that applications can use for various purposes. +These methods provide the application with data as available in the device's database. +Please refer to xref:./documentation/OstWalletSdkGetMethods.adoc[Ost Wallet SDK Getter Methods] for documentation. + +== Ost JSON APIs + +While the getter methods provide application with data stored in device's database, the JSON API methods make API calls to Ost Platform servers. +Please refer to xref:./documentation/OstJsonApi.adoc[Ost JSON API] for documentation. + +== Quick Start Guide - Ost Macro Workflows + +Starting version 2.3.12-beta.1, developers can enable all the Ost wallet features implementing the Ost Macro Workflows. + +=== 1. Setup Device Core Workflow + +''' + +The setup device workflow establishes trust between the device and Ost Platform. +As application is responsible for user authentication, application servers must facilitate this workflow using the server side sdk. + +==== Workflow Details + +* When this workflow is initiated by the application, the Sdk creates the following keys: + ** API key - the key used to sign API requests sent to Ost Platform from the sdk. + ** Device key - the user's wallet device key. +All device manager operations shall be performed using this key. +* The Sdk asks the application to register the device entity with Ost Platform. +* The application must send the device entity to the application server. +* The application server must then use the server side sdk to register the device with Ost Plaform by using device service's create device Api. +* Once the device is registered by the Ost Platform, the application server must send the response to the mobile application. +* The mobile application must then use the `deviceRegistered` callbacks to provide the response to the Sdk. +* The sdk validates the registration by making Api calls to the Ost Plaform. + +image::./documentation/images/setup_device_workflow.svg[] + +==== Notes + +* Setup device workflow must be initiated *on every app launch*. +* Setup device workflow must be initiated only *after the user has been autheniticated* by the application, including cookie based authentication for already logged-in users. +* Each of user's device creates its own API key and device key. +* User's Device and API keys are not shared across devices. +* User's API key & device key are stored in persistent storage on the device and created only if needed. +* The Sdk shall request for device registration only when needed. +`registerDevice` shall not be invoked if device is already authorized and sdk is able to make Api calls to Ost Platform. + +==== Implementation + +Please refer to link:./documentation/OstCoreWorkflows.md#setupdevice[`setupDevice` core workflow documentation] for implementation details. + +=== 2. Activate User UI Workflow + +''' + +Activate User workflow deploys user's wallet on the blockchain and whitelists the user's wallet and enables it to take part in application's brand token economy. + +==== Blockchain Transactions Performed During Activate User Workflow + +* Deploys user's contracts + ** Device-manager and token-holder contracts + ** Set user's recovery key address, device key address in device-manager contract + ** Authorizes session key(s) in token-holder contract +* Whitelists user's contract in UBT (Utility Brand Token Contract). + +==== Recovery Key Generation Using 6 Digit Pin + +* User's recovery key is generated using https://en.bitcoinwiki.org/wiki/Scrypt[SCrypt], a password-based key derivation function. +* The '`password`' provided to this function is a string created by concatenating: +* A prefix provided by application server. ++ +____ +Application server must generate and store prefix for each user, treat it as sensitive and immutable information. +____ + +* User's PIN +* User's Ost-id +* The salt required for SCrypt is provided by Ost Platform + +==== Implementation + +Please refer to link:./documentation/OstWalletUI.md#activate-user[Activate User UI Workflow Documentation] for implementation details. + +=== 3. Wallet Settings UI Component + +''' + +OstWallet Settings is a pre-built UI component available exclusively available in `ost-wallet-sdk-react-native` SDK. +It is a wallet settings page that can be used by end-users to perfrom 12 different wallet operations and view their wallet details. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +==== Implementation + +Please refer to xref:./documentation/OstWalletSettings.adoc[OstWallet Settings Documentation] for implementation details. + +=== 4. OstvTransaction Helper - Transaction and Add Session Integrated Workflow + +''' + +`OstTransactionHelper` is a transaction helper provided by the SDK that creates session keys before performing a transaction if needed. +App developers can configure the session creation parameters (session buckets) as per application's need. + +==== Implementation + +Please refer to xref:./documentation/OstTransactionHelper.adoc[Ost Transaction Helper Documentation] for implementation details. + +== Intermediate Usage - Ost Wallet SDK UI + +For quick and easy integration with SDK, developers can use built-in user-interface components which are configurable and support content and theme customization. + +Please refer to xref:./documentation/OstWalletUI.adoc[Ost Wallet SDK UI] for documentation. + +== Advance Usage - Ost Wallet Core Workflow APIs + +Ost core workflows API do not use any UI components, thereby giving complete ux control to the developers. +The xref:./documentation/OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost core workflows. + +Please refer to xref:./documentation/OstCoreWorkflows.adoc[Ost Core Workflow APIs] for documentation. + +== Known Issues + +=== Sdk Initialization Fails on Android 9 (API level 28) + +Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. +On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. +As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. +To work-around this issues, application needs to have TrustKit as a dependency and initialize it. + +=== Setup Device Workflow Fails on iOS-13 Simulator + +Ost Wallet Sdk uses iOS's https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain[Keychain] to store user's cryptographic keys. +Unfortunately, Keychain doesn't work as expected on iOS-13 Simulators. +We request you to kindly test your application on actual iOS-13 device while we continue to look for a workaround. diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 27f6f89..4e37921 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -1 +1,2 @@ -* xref:index.adoc[Overview] +* xref:index.adoc[OverviewX] +* xref:android_setup.md.adoc[Android Setup] diff --git a/docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc b/docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc new file mode 100644 index 0000000..4a8bcf2 --- /dev/null +++ b/docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc @@ -0,0 +1,624 @@ += Ost Core Workflow APIs + +Ost core workflows api do not use any UI components, thereby giving complete control to the developers. +The xref:./OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost Core Workflows. + +== Table of Contents + +* <> +* <> + ** <> + ** <> + ** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> +* <> + ** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + ** <> + +== Import the OstWalletSdk + +To use the core workflow APIs, import the `OstWalletSdk` from '@ostdotcom/ost-wallet-sdk-react-native'. + +[source,javascript] +---- +import {OstWalletSdk} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +== Create Workflow Callback + +The core workflows communicates with the application using callbacks. +A base callback class `OstWalletWorkFlowCallback` is given as a part of the SDK. +The base callback class gives only declaration of callback functions. +A detailed overview of callback functions is available in the later part of this readme. + +=== OstWalletWorkFlowCallback Interface + +[source,javascript] +---- +import { OstWalletWorkFlowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; + +class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { + constructor() { + super(); + } + + registerDevice(apiParams, ostDeviceRegistered) {} + + getPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} + + invalidPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} + + pinValidated(ostWorkflowContext, ostContextEntity) {} + + flowComplete( ostWorkflowContext, ostContextEntity ) {} + + flowInterrupt(ostWorkflowContext, ostError ) {} + + requestAcknowledged(ostWorkflowContext, ostContextEntity) {} + + verifyData(ostWorkflowContext, ostContextEntity, ostVerifyData) {} +} + +export default OstWalletSdkCallbackImplementation; +---- + +*Developers are expected to implement a new class for each workflow.* + +=== An example of callback implementation + +[source,javascript] +---- + +import {OstWalletWorkFlowCallback} from '@ostdotcom/ost-wallet-sdk-react-native'; + +class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { + constructor() { + super(); + } + + flowComplete(ostWorkflowContext , ostContextEntity) { + console.log('flowComplete ostWorkflowContext', ostWorkflowContext, "ostContextEntity- ", ostContextEntity); + if(Actions.currentScene !== "HomePage"){ + Actions.popTo("HomePage"); + } + if(ostWorkflowContext){ + let wfType = ostWorkflowContext.WORKFLOW_TYPE; + if( wfType !== "SETUP_DEVICE") { + Alert.alert(`${wfType} Complete!`); + } + } + store.dispatch(setLoading(false)); + } + + flowInterrupt(ostWorkflowContext , ostError) { + console.log('flowInterrupt ostWorkflowContext', ostWorkflowContext , "ostError" , ostError ); + if (ostError) { + let displayError = ostError.getErrorMessage(), + apiError, errorData; + if(ostError.isApiError()){ + apiError = ostError.getApiErrorMessage(); + if(apiError && apiError.includes('err.error_data')){ + apiError = ''; + } + errorData = ostError.getApiErrorData(); + if(errorData && errorData.length > 0){ + for(let i=0; i} tokenHolderAddresses - Token holder addresses of amount receiver. + * @param {Array} amounts -Amounts corresponding to tokenHolderAddresses to be transfered + * @param {String} ruleName - Rule name to be executed. + * @param {object} meta - additional data. + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + + OstWalletSdk.executeTransaction( userId, + tokenHolderAddresses, + amounts, + ruleName, + meta, + workflow) +---- + +==== getDeviceMnemonics + +The mnemonic phrase represents a human-readable way to authorize a new device. +This phrase is 12 words long. + +[source,javascript] +---- +/** + * Get Device mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.getDeviceMnemonics( userId, + workflow) +---- + +==== authorizeCurrentDeviceWithMnemonics + +A user that has stored their mnemonic phrase can enter it on a new mobile device and authorize that device to be able to control their tokens. + +[source,javascript] +---- + /** + * Authorize user device with mnemonics + * @param {String} userId - Ost User id + * @param {String} mnemonics - string of mnemonics + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + + OstWalletSdk.authorizeCurrentDeviceWithMnemonics(userId, + mnemonics, + workflow) +---- + +==== performQRAction + +QR codes can be used to encode transaction data for authorizing devices and making purchases via webstores, etc. +This method can be used to process the information scanned off a QR code and act on it. + +[source,javascript] +---- +/** + * Perform QR action + * @param {String} userId - Ost User id + * @param {String} data - Json string of payload is scanned by QR-Code. + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.performQRAction(userId, + data, + workflow) +---- + +==== resetPin + +The user's PIN is set when activating the user. +This method supports re-setting a PIN and re-creating the recoveryOwner. + +[source,javascript] +---- +/** + * Reset user pin + * @param {String} userId - Ost User id + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {String} currentPin - user current pin + * @param {String} newPin - user new pin + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.resetPin( userId, + appSalt, + currentPin, + newPin, + workflow ) +---- + +==== initiateDeviceRecovery + +A user can control their tokens using their authorized device(s). +If a user loses their authorized device, the user can recover access to her tokens by authorizing a new device by initiating the recovery process. + +[source,javascript] +---- +/** + * Initiate device recovery + * @param {String} userId - Ost User id + * @param {String} pin - user current pin + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {String} deviceAddressToRecover - Device address which wants to recover + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.initiateDeviceRecovery( userId, + pin, + appSalt, + deviceAddressToRecover, + workflow ) +---- + +==== abortDeviceRecovery + +To abort an initiated device recovery. + +[source,javascript] +---- +/** + * Abort device recovery + * @param {String} userId - Ost User id + * @param {String} pin - user current pin + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.abortDeviceRecovery(userId, + pin , + appSalt , + workflow ) +---- + +==== logoutAllSessions + +To revoke all sessions associated with provided userId. + +[source,javascript] +---- +/** + * Logout user all sessions + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.logoutAllSessions(userId, + workflow ) +---- + +==== revokeDevice + +To unauthorize the current device. + +[source,javascript] +---- +/** + * revokeDevice + * @param {String} userId - Ost User id + * @param {String} deviceAddress - device address + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.revokeDevice( userId , + deviceAddress , + workflow) +---- + +==== updateBiometricPreference + +To enable or disable biometrics. + +[source,javascript] +---- +/** + * Update biometric prederence + * @param {String} userId - Ost User id + * @param {boolean} enable - to enable biometric prefernce + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.updateBiometricPreference( userId , enable ,workflow ) +---- + +=== Execute a workflow + +To execute a workflow, you need to pass an instance of `OstWalletSdkCallbackImplementation` class. +The callback implementation will be different for each workflow available in the SDK. + +[source,javascript] +---- + +import OstWalletWorkflowCallback from './OstWalletSdkCallbackImplementation'; + +onLogoutAllSessions() { + AsyncStorage.getItem('user').then((user) => { + user = JSON.parse(user); + // Note: logoutAllSessions will revoke all sessions keys from all the devices of the user. + OstWalletSdk.logoutAllSessions(user.user_details.user_id, new OstWalletWorkflowCallback(), console.warn); + }); +} +---- diff --git a/docs/modules/ROOT/pages/OstJsonApi.md.adoc b/docs/modules/ROOT/pages/OstJsonApi.md.adoc new file mode 100644 index 0000000..cb4a2d9 --- /dev/null +++ b/docs/modules/ROOT/pages/OstJsonApi.md.adoc @@ -0,0 +1,615 @@ += OST JSON APIs + +OST JSON APIs are a set of _asynchronous_ methods that make API calls to OST Platform servers. + +== Table of Contents + +* <> +* <> +* <> +* <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + *** <> +* <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + +++++++++++++ + +== Before We Begin + +* Although it is *NOT RECOMMENDED*, but if your app needs to allow multiple users to login on same device, the app must: + ** ensure to pass the `userId` of the currently *logged-in and authenticated* user. + ** ensure that the user has not logged-out *before* processing/displaying the response. +* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating any JSON API. +* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any JSON API. +* All `OstJsonApi` methods expect `userId` as first parameter because all requests need to be signed by the user's API key. +* It's always good to check if the device can make API calls by calling `OstWalletSdk.getCurrentDeviceForUserId` method. + ** Any device with status `REGISTERED`, `AUTHORIZING`, `AUTHORIZED`, `RECOVERING` or `REVOKING` can make this API call. + +++++++++++++ + +== JSON API Types + +The JSON APIs can be categorized into 2 groups. + +* <> - The APIs that get entities (e.g. +current-device, price-point, balance, etc.) +* <> - The APIs that get list of entities and support pagination (e.g. +device list, transactions) + +++++++++++++ + +== Importing OstJsonApi + +Use the following code to import `OstJsonApi` + +---- +import {OstJsonApi} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +++++++++++++ + +== Entity API + +++++++++++++ + +=== Get Current Device + +API to get user's current device. + +____ +While the equivalent getter method `OstWalletSdk.getCurrentDeviceForUserId` gives the data stored in SDK's database, this method makes an API call to OST Platform. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * API to get user's current device. + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getCurrentDeviceForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "device": { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x0000000000000000000000000000000000000001", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "result_type": "device" +} +---- + +++++++++++++ + +=== Get Balance + +API to get user's balance. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getBalanceForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "balance": { + "updated_timestamp": 1566832497, + "unsettled_debit": "0", + "available_balance": "10000000", + "total_balance": "10000000", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "result_type": "balance" +} +---- + +++++++++++++ + +=== Get Price Points + +API to get price-points of token's staking currency (OST or USDC). + +____ +This API call is generally needed to compute the current fiat value to your brand-tokens. +E.g. +displaying user's balance in fiat. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getPricePointForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "price_point": { + "USDC": { + "updated_timestamp": 1566834913, + "decimals": 18, + "GBP": 0.8201717727, + "EUR": 0.9028162679, + "USD": 1.0025110673 + } + }, + "result_type": "price_point" +} +---- + +++++++++++++ + +=== Get Balance And Price Points + +This is a convenience method that makes `OstJsonApi.getBalanceForUserId` and `OstJsonApi.getPricePointForUserId` API calls and merges the response. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getBalanceWithPricePointForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "balance": { + "updated_timestamp": 1566832497, + "unsettled_debit": "0", + "available_balance": "10000000", + "total_balance": "10000000", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "price_point": { + "USDC": { + "updated_timestamp": 1566834913, + "decimals": 18, + "GBP": 0.8201717727, + "EUR": 0.9028162679, + "USD": 1.0025110673 + } + }, + "result_type": "balance" +} +---- + +++++++++++++ + +=== Get Pending Recovery + +API to get user's pending recovery. +A pending recovery is created when the user recovers the device using their PIN. + +____ +This API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ +OstJsonApi.getPendingRecoveryForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => { + console.log( error ); + if ( error.is_api_error ) { + if ( "UNPROCESSABLE_ENTITY" === String(error.api_error.code).toUppercase() ) { + console.log("User does not have any recovery in progress."); + // You can safely ignore this error. + return; + } + } + } +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- + { + "devices": [ + { + "updated_timestamp": 1566902100, + "status": "REVOKING", + "api_signer_address": "0x903ad1a1017c14b8e6b0bb1dd32d3f65a8741732", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x629e13063a2aa24e2fb2a49697ef871806071550", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566902100, + "status": "RECOVERING", + "api_signer_address": "0x6f5b1b8df95cbc3bd8d18d6c378cef7c34644729", + "linked_address": "null", + "address": "0x33e736a4761bc07ed54b1ceb82e44dfb497f478c", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } + ], + "result_type": "devices" +} +---- + +++++++++++++ + +.Sample Error + +The `getPendingRecoveryForUserId` API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. + +[source,json] +---- +{ + "api_error": { + "internal_id": "***********", + "error_data": [], + "msg": "Initiate Recovery request for user not found.", + "code": "UNPROCESSABLE_ENTITY" + }, + "is_api_error": 1, + "error_message": "OST Platform Api returned error.", + "internal_error_code": "***********", + "error_code": "API_RESPONSE_ERROR" +} +---- + +++++++++++++ + +== List API + +All `List` APIs support pagination. +The response of all `List` APIs has an extra attribute `meta`. +To determine if next page is available, the app should look at `meta.next_page_payload`. +If `meta.next_page_payload` is an empty object (`{}`), next page is not available. + +++++++++++++ + +=== Get Transactions + +API to get user's transactions. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; +let nextPagePayload = null; + +/** + * Api to get user's transactions + * @param {String} userId - Ost User id + * @param {Object} nextPagePayload (@nullable). Pass null to get first page. + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getTransactionsForUserId(userId, nextPagePayload, + (response) => { + console.log(response); + // Let's check if more pages of data is available. + if ( response.meta ) { + let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; + if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { + // Next page is available. + // Update nextPagePayload + nextPagePayload = nextPagePayloadFromResponse; + // To fetch the next page, pass the updated nextPagePayload. + } + } + }, + (error) => { + console.log("An error has occurred while fetching transactions."); + console.log( error ); + }); +---- + +++++++++++++ + +.Sample Response + +Please refer to the https://dev.ost.com/platform/docs/api/#transactions[Transactions Object] for a detailed description. + +[source,json] +---- +{ + "meta": { + "total_no": 14, + "next_page_payload": { + "pagination_identifier": "*****************************************************" + } + }, + "transactions": [ + { + "meta_property": { + "details": "Awesome Post", + "type": "user_to_user", + "name": "Like" + }, + "rule_name": "Direct Transfer", + "block_timestamp": 1566843589, + "block_confirmation": 969, + "transaction_fee": "94234000000000", + "gas_price": "1000000000", + "nonce": 613, + "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", + "id": "4efa1b45-8890-4978-a5f4-8f9368044852", + "transfers": [ + { + "kind": "transfer", + "amount": "200000", + "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", + "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", + "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", + "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" + } + ], + "block_number": 3581559, + "updated_timestamp": 1566843589, + "status": "SUCCESS", + "gas_used": 94234, + "value": "0", + "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "transaction_hash": "0xee8033f9ea7e9bf2d74435f0b6cc172d9378670e513a2b07cd855ef7e41dd2ad" + }, + { + "meta_property": { + "details": "Nice Pic", + "type": "user_to_user", + "name": "Fave" + }, + "rule_name": "Direct Transfer", + "block_timestamp": 1566843547, + "block_confirmation": 983, + "transaction_fee": "109170000000000", + "gas_price": "1000000000", + "nonce": 612, + "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", + "id": "7980ee91-7cf1-449c-bbaf-5074c2ba6b29", + "transfers": [ + { + "kind": "transfer", + "amount": "1600000", + "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", + "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", + "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", + "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" + } + ], + "block_number": 3581545, + "updated_timestamp": 1566843549, + "status": "SUCCESS", + "gas_used": 109170, + "value": "0", + "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "transaction_hash": "0x3e3bb3e25ab3a5123d1eaf20e1c31ab88bd56500c5cdfd2e32025c4df32735b3" + }, + ... + ... + ], + "result_type": "transactions" +} +---- + +++++++++++++ + +=== Get Devices + +API to get user's devices. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; +let nextPagePayload = null; + +/** + * Api to get user's device + * @param {String} userId - Ost User id + * @param {Object} nextPagePayload (@nullable). Pass null to get first page. + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getDeviceListForUserId(userId, nextPagePayload, + (response) => { + console.log(response); + // Let's check if more pages of data is available. + if ( response.meta ) { + let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; + if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { + // Next page is available. + // Update nextPagePayload + nextPagePayload = nextPagePayloadFromResponse; + // To fetch the next page, pass the updated nextPagePayload. + } + } + }, + (error) => { + console.log("An error has occurred while fetching devices."); + console.log( error ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "meta": { + "next_page_payload": {} + }, + "devices": [ + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566839512, + "status": "AUTHORIZED", + "api_signer_address": "0x2e12c4f6a27f7bdf8e58e628ec29bb4ce49c315e", + "linked_address": "0x0000000000000000000000000000000000000001", + "address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } + ], + "result_type": "devices" +} +---- diff --git a/docs/modules/ROOT/pages/OstTransactionConfig.md.adoc b/docs/modules/ROOT/pages/OstTransactionConfig.md.adoc new file mode 100644 index 0000000..a3687b8 --- /dev/null +++ b/docs/modules/ROOT/pages/OstTransactionConfig.md.adoc @@ -0,0 +1,46 @@ += OstTransaction Config + +== Introduction + +App developers can configure session `expiration_time` and `spending_limit` while executing transaction. +To configure the session creation parameters (session buckets), provide the sdk with JSON object. +The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. + +== Configuration Data Structure + +Here is the small sample json representation of the configuration. + +[source,js] +---- +{ + "session_buckets": [ + { + expiration_time: 60*60*24*30*2, //2 months + spending_limit: '10' + }, + { + expiration_time: 60*60*24*30, //1 months + spending_limit: '50' + }, + { + expiration_time: 60*60*24, //24 hours + spending_limit: '100' + }, + { + expiration_time: 60*60*1, //1 hour + spending_limit: '1000' + } + ] +} +---- + +In the above example: + +* The first-level key `session_buckets` corresponds to list of buckets for creating session. +The bucket selection is depends on `spending_limit`. +* The second-level keys + ** `expiration_time` : corresponds to expiry time of session. + ** `spending_limit` : corresponds to spending limit of session. + +Above configuration allows user to execute transction of spending limit `1000`. +SDK throws error, if user makes transaction above `1000`. diff --git a/docs/modules/ROOT/pages/OstTransactionHelper.md.adoc b/docs/modules/ROOT/pages/OstTransactionHelper.md.adoc new file mode 100644 index 0000000..e60c1a2 --- /dev/null +++ b/docs/modules/ROOT/pages/OstTransactionHelper.md.adoc @@ -0,0 +1,94 @@ += Ost Transaction Helper + +== Introduction + +Developer can call functions of transaction helper to execute transaction and setting up config for transaction. + +== Configuration + +App developers can configure session `expiration_time` and `spending_limit` while executing transaction. +To configure the session creation parameters (session buckets), the sdk needs to be provided with JSON object. +The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. + +=== Configuration Data Structure + +Here is the small sample json representation of the configuration. + +[source,js] +---- +{ + "session_buckets": [ + { + expiration_time: 60*60*24*30*2, //2 months + spending_limit: '10' + }, + { + expiration_time: 60*60*24*30, //1 months + spending_limit: '50' + }, + { + expiration_time: 60*60*24, //24 hours + spending_limit: '100' + }, + { + expiration_time: 60*60*1, //1 hour + spending_limit: '1000' + } + ] +} +---- + +In the above example: + +* The first-level key `session_buckets` corresponds to list of buckets for creating session. +The bucket selection is depends on `spending_limit`. +* The second-level keys + ** `expiration_time` : corresponds to expiry time of session. + ** `spending_limit` : corresponds to spending limit of session. + +Above configuration allows user to execute transction of spending limit `1000`. +SDK throws error, if user makes transaction above `1000`. + +=== Set Transaction Config + +Developer can set list of buckets for creating session. +For details, Please refer xref:./OstTransactionConfig.adoc[this] + +[source,js] +---- +import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" + +OstTransactionHelper.setTxConfig(ost-tx-config); +---- + +== Execute Direct Transfer + +Execute direct transfer can be performed by calling + +____ +*Note* + Developer needs to create a class extends from OstWalletUIWorkflowCallback and write logic to get passphrase prefix from their application server. +Please refer xref:./OstWalletUI.adoc[this] section for documentation. +____ + +[source,js] +---- +import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" + +const ostUserId = +const txMeta = {"type": "user_to_user", "name": "Tokens sent", "details": "Sending tokens vis direct transafer"}; +const workflowCallback = new OstWalletUIWorkflowCallback() + +let uuid = OstTransactionHelper.executeDirectTransfer(ostUserId, [tokenValue], [token_holder_address], txMeta, workflowCallback); + +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowComplete, (workflowContext, contextEntity) => { + //functionality for transaction success +}); +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowInterrupt, (workflowContext, ostError) => { + //functionality for transaction failed +}); +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.requestAcknowledged, (workflowContext, contextEntity) => { + //functionality for transaction ack. +}); +---- + +New session will be created with appropriate bucket, if sdk won't get any active session for given spending limit. diff --git a/docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc b/docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc new file mode 100644 index 0000000..2d4c2db --- /dev/null +++ b/docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc @@ -0,0 +1,395 @@ += OST Wallet React Native SDK Getter Methods + +== Table of Contents + +* <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> + +++++++++++++ + +== Before We Begin + +* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating getter methods. +* We recommend using these methods _after_ link:../README.md#setupdevice[setupDevice] workflow has been performed. +* The getter methods provide the data as available with the device. + ** The methods may return `null` if the data is not available. +* These methods are _synchronous_ in the native SDK. +Because of react-native's bridge they behave _asynchronous_ in the react-native SDK. + ** These methods do not make any API calls. + +++++++++++++ + +== Get Token + +Method to get token information. + +____ +`getToken` method will return partial data if device has not been registered. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update tokenId as per your needs. + Since this tokenId does not belong to your economy, you may get an error if you do not change it. + */ + let tokenId = '1129'; + + /** + * Get token object for provided userId + * @param {String} tokenId - Ost Token id + * @param {function} callback - Gets token object if present else nil + * @callback params {Object} token entity. Returns null if information is not available with device. + * @public + */ + OstWalletSdk.getToken(tokenId, (tokenEntity) => { + console.log("tokenEntity", tokenEntity); + }); +---- + +++++++++++++ + +.Sample Response + +Please refer to the https://dev.ost.com/platform/docs/api/#token[Token Object] for a detailed description. + +[source,json] +---- +{ + "updated_timestamp": 1560167796, + "auxiliary_chains": [ + { + "organization": { + "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", + "contract": "0xb8e3fcfb5dac714e40b63489f4f393c7073fdbb3" + }, + "company_uuids": [ + "d6bf0061-a32d-48af-a29b-013260a947f3" + ], + "company_token_holders": [ + "0x93f08d0c5d7bc28cc117681b3b23f8501a09e786" + ], + "utility_branded_token": "0xc50e3fd492a9a99a964f7aff8d755075d0732ff0", + "chain_id": 197 + } + ], + "origin_chain": { + "stakers": [ + "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637" + ], + "organization": { + "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", + "contract": "0x0260a404804b1d7cf6fa678fb5d8441495cfff1b" + }, + "branded_token": "0x18cbeae2f1785abf68c9984f9186a29ed062c3ca", + "chain_id": 3 + }, + "decimals": 6, + "total_supply": "500000000000", + "conversion_factor": 10, + "base_token": "USDC", + "symbol": "SC1", + "name": "STC1", + "id": 1129 +} +---- + +++++++++++++ + +== Get User + +Method to get user information. + +____ +`getUser` method will return partial data if device has not been registered. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get user object for provided userId + * @param {String} userId - Ost User id + * @param {function} callback - Gets object if present else nil + * @callback params {Object}user + * @public + */ + OstWalletSdk.getUser(userId, (userEntity)=>{ + console.log( userEntity ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "updated_timestamp": 1566832473, + "status": "ACTIVATED", + "type": "user", + "recovery_owner_address": "0x0a64dc924d32a569b1d0885acfc34832e1444944", + "recovery_address": "0x99c46a66621d6967cbd692e615ec36747d58fecb", + "device_manager_address": "0x55f379612796b863590d388ed509ae50de12a5d2", + "token_holder_address": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "token_id": 1129, + "id": "71c59448-ff77-484c-99d8-abea8a419836" +} +---- + +++++++++++++ + +== Get Current Device + +Method to get device entity. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get current device object for provided userId + * @param {String} userId - Ost User id + * @param {function} callback - Gets current device object if present else nil + * @callback params {Object} device + * @public + */ + OstWalletSdk.getCurrentDeviceForUserId(userId, (device)=>{ + console.log( device ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" +} +---- + +++++++++++++ + +== Get Biometric Preference + +Method to get biometric preference of the user. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get biometric preference for user + * + * @param userId - Ost User id + * @param callback - Gets biometric preference boolean value + */ + OstWalletSdk.isBiometricEnabled(userId, (status) => { + console.log("isBiometricEnabled", status ); + // logs true or false. + }); +---- + +++++++++++++ + +== Get Active Sessions + +Method to get active sessions available with device. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId and minimumSpendingLimitInWei as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + let minimumSpendingLimitInWei = "1000000"; + + /** + * Get user object for provided userId + * @param {String} userId - Ost User id + * @param {String} minimumSpendingLimitInWei - optional parameter, defaults to zero. + * @param {function} callback - Gets array of current device sessions. + * @callback params {Array} array of sessions + * @public + */ + OstWalletSdk.getActiveSessionsForUserId(userId, minimumSpendingLimitInWei, (activeSessions)=>{ + console.log(activeSessions); + }); + + + // Optionally, getActiveSessionsForUserId method can also + // be invoked without specifying minimumSpendingLimitInWei. + OstWalletSdk.getActiveSessionsForUserId(userId,(activeSessions)=>{ + console.log(activeSessions); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +[ + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x3171bce99d00812b77aa216ed544ab35fc8b6fb1", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x816324ed539b62652a247ce5c1f1962f6de13e14", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 3, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x95b3fcb5aa3930a9bc42da171b8733a3a869955f", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 3, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0xe57b68fc8aca57d9488d1607df628a4076571eda", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x459712cb13efd12ade7ff3a5fd4641f5c21904c9", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } +] +---- + +++++++++++++ + +== QR Code for Authorizing Device + +Method to generate QR code that can be scanned by an *authorized* device. +Scanning this QR code with an authorized mobile device will result in this device (from where the QR code has been generated) being authorized. + +____ +App should use this method only when the current device status is `REGISTERED`. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId and minimumSpendingLimitInWei as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get device QR code + * @param {String} userId - Ost User id + * @param {function} successCallback - returns image as base64 string. + * @param {function} errorCallback. + * @public + */ + OstWalletSdk.getAddDeviceQRCode( userId , (base64Image) => { + console.log(base64Image); + // Assuming this method is called from Component, + // let's update the component's state to display the image. + this.setState({ + qrCode: base64Image + }); + }, (error) => { + + }); +---- + +++++++++++++ + +.Sample Render Method +[source,jsx] +---- + render() { + // Assuming that callback will set 'qrCode' attribute in component's state. + if ( this.state.qrCode ) { + return ( + + ); + } + return null; + } +---- diff --git a/docs/modules/ROOT/pages/OstWalletSettings.md.adoc b/docs/modules/ROOT/pages/OstWalletSettings.md.adoc new file mode 100644 index 0000000..45115b0 --- /dev/null +++ b/docs/modules/ROOT/pages/OstWalletSettings.md.adoc @@ -0,0 +1,78 @@ += OstWallet Settings + +== Introduction + +OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. +It is a wallet settings page that can be used by end-users to perfrom different wallet operations. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +OstWalletSettings supports 13 workflows: + +* Activate User +* Wallet Details +* Initialize Recovery +* Add Session +* Reset a User's PIN +* Get Mnemonic Phrase +* Authorize device using mnemonics +* Abort Device Recovery +* Revoke Device +* Scan QR Code to add another device +* Get Current Device QR code +* Enable Biometrics +* Disable Biometrics + +== Usage + +=== Create wallet settings stack navigation + +[source,js] +---- +import {OstWalletSettingsComponent} from '@ostdotcom/ost-wallet-sdk-react-native'; + +let settingsStack = createStackNavigator( + { + "WalletSettingScreen": OstWalletSettingsComponent + } +); +---- + +=== Naviagte to settings page + +`ostUserId` and `ostWalletUIWorkflowCallback` are mandetory parameters that need to be passed as params to the `WalletSettingScreen` screen. + +[source,js] +---- +const ostUserId = +const delegate = new OstWalletUIWorkflowCallback(ostUserId, {}) +this.props.navigation.push("WalletSettingScreen", {'ostUserId': ostUserId, 'ostWalletUIWorkflowCallback': delegate}); +---- + +____ +*Note* + Developer needs to create a class extends from `OstWalletUIWorkflowCallback` and write logic to get passphrase prefix from their application server. +Please refer link:OstWalletUI.md#setup-your-passphrase-prefix-delegate[this] section for documentation. +____ + +== UI Customization + +Developer can customize wallet settings by updating respective properties mentioned in image. +OstTheme config shown link:./configs/ost-sdk-theme-config.js[here] + +image:images/wallet_settings.png[copy-framework-file] image:images/wallet_details.png[copy-framework-file] + +== Settings Content + +Developer can modify `header` and `description` of settings options. +To modify contet, xref:./OstWalletSettingsConfig.adoc[refer here]. + +[source,js] +---- +import {OstWalletSettings} from "@ostdotcom/ost-wallet-sdk-react-native/js/index"; + +let settingsContentConfig = {} + +OstWalletSettings.setMasterConfig(settingsContentConfig) +---- diff --git a/docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc b/docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc new file mode 100644 index 0000000..f441cb3 --- /dev/null +++ b/docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc @@ -0,0 +1,121 @@ += OstWallet Settings Config + +== Introduction + +App developers can configure the text shown on settings page. + +To configure the content, the sdk needs to be provided with https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON[JSON object]. + +The default configuration can be found link:../js/WalletSettings/ost-wallet-settings-config.json[here]. + +== Dictionary Data Structure + +Here is the small sample json representation of the configuration. + +[source,json] +---- +{ + "item_display_order": [ + "activate_user", + ], + "item_configs": { + "activate_user": { + "content_config": { + "heading": "Activate User", + "description": "User is not activated yet." + }, + "config": { + "spending_limit": "0", + "expiration_time": 0 + } + } + } +} +---- + +In the above example: + +* The first-level key `item_display_order` corresponds to sequence of allowed workflows. +* The first-level key `item_configs` corresponds to config for workflows. +* The second-level key `activate_user` corresponds to activate user workflow. +* The third-level key `content_config` corresponds to `heading` and `description` of workflows. +* The third-level key `config` corresponds to respective config for workflows. + +== Supported Workflows + +OstWalletSettings supports 13 workflows + +|=== +| Configuration Keys | Workflows + +| activate_user +| Activate User + +| wallet_details +| Wallet Details + +| recover_device +| Initialize Recovery + +| add_session +| Add Session + +| reset_pin +| Reset a User's PIN + +| show_mnemonics +| Get Mnemonic Phrase + +| authorize_device_with_mnemonics +| Authorize device using mnemonics + +| abort_recovery +| Abort Device Recovery + +| revoke_device +| Revoke Device + +| add_another_device +| Scan QR Code to add another device + +| show_device_qr_code +| Get current Device QR code + +| enable_biometrics +| Use biometrics to authorize new Sessions and to confirm high value transactions. + +| disable_biometrics +| Turn off biometrics and use PIN to authorize new Sessions and to confirm high value transactions. +|=== + +* All workflows have `content_config`. +* `config` varies workflow to workflow. + +== Workflow Config + +Some workflows requires additional data. +It can be passed to workflow by setting it in `config`. + +|=== +| Workflows | Config Keys | Config Type + +| activate_user +| - spending_limit +| String + +| +| - expiration_time +| Number + +| wallet_details +| - ost_view_endpoint +| String + +| add_session +| - spending_limit +| String + +| +| - expiration_time +| Number +|=== diff --git a/docs/modules/ROOT/pages/OstWalletUI.md.adoc b/docs/modules/ROOT/pages/OstWalletUI.md.adoc new file mode 100644 index 0000000..19fd2db --- /dev/null +++ b/docs/modules/ROOT/pages/OstWalletUI.md.adoc @@ -0,0 +1,842 @@ += OST Wallet React Native SDK UI + +== Introduction + +For quick and easy integration with SDK, developers can use built-in user interface components which are configurable and support content and theme customization. +All OstWalletSdkUI workflows return `workflow-id`. +The application can subscribe to the events of the workflow using the `workflow-id`. + +== Setup + +`OstWalletSdkUI` is packaged along with OstWalletSdk. +There are no additional steps for using `OstWalletSdkUI`. +To setup OstWalletSdk, please refer to link:../README.md#installing-react-native-sdk[setup]. + +== Before We Begin + +* App must link:../README.md#initializing-the-sdk[initialize] the sdk _*before*_ initiating any UI workflows. +* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any UI workflows. + +== OstWalletSdkUI SDK APIs + +To use OstWalletSdkUI + +---- +import {OstWalletSdkUI} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +=== Set Theme Config + +Theme for OstWalletSdkUI can be initialized by calling `setThemeConfig` API which setup OstWalletSdkUI theme config. +To define custom theme config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ThemeConfig.md[Theme Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ThemeConfig.md[Theme Config iOS] documentation. + +[source,js] +---- + // Define the content config + const theme_config = { + "nav_bar_logo_image": { + "asset_name": "YOUR_LOGO_ASSET_NAME" + } + }; + + /** + * Set theme config for UI + * config: Config to use for UI + */ + OstWalletSdkUI.setThemeConfig(theme_config); +---- + +____ +* In the above example, `asset_name` is name of asset which is present in the respective assets folder for iOS/android. +____ + +=== Set Content Config + +Content for OstWalletSdkUI can be initialized by calling `setContentConfig` API which set-up OstWalletSdkUI content config. +To define custom content config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ContentConfig.md[Content Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ContentConfig.md[Content Config iOS] documentation. + +[source,js] +---- + // Please update terms_and_condition.url as per your needs. + const content_config = { + "activate_user": { + "create_pin": { + "placeholders": { + "terms_and_condition": { + "url": "https://YOUR-WEB-SITE.com/terms-page" + } + } + }, + "confirm_pin": { + "placeholders": { + "terms_and_condition": { + "url": "https://YOUR-WEB-SITE.com/terms-page" + } + } + } + } + }; + + /** + * Set content config for UI + * config: Config to use for UI + */ + OstWalletSdkUI.setContentConfig(content_config); +---- + +=== Set Loader Manager + +Application loader for OstWalletUI can be initialized by calling `setLoaderManager` API. +This API is available in native SDK. ++ + Custom loader is supported from OstWalletSdk-native version Android v``2.3.6`` Or iOS v``2.3.5`` + Please, verify OstWalletSdk version in `Cartfile`. ++ + Custom loader needs to be written in native code (java, swift/Objective-C). ++ Sample code for custom loader is available in respective platform directory. +For https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/Samples/CustomLoader/OstMockCustomLoader.md[iOS] and https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/Samples/customloader/OstCustomLoader.md[Android] + +=== Setup your Passphrase Prefix Delegate + +`Passphrase Prefix` is a salt provided by your application that assists in generation of User's recovery key using user's PIN. +This salt should be _unique_ for each user, is immutable and needs to be associated with the user. +The salt should not be stored in memory or on deivce unencrypted. +When the UI workflow need's to ask for user's PIN, delegate's getPassphrase method is invoked. + +The delegate must be derived from `OstWalletUIWorkflowCallback` class. + +Here is an example: + +[source,javascript] +---- +import { OstWalletUIWorkflowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; +class UserPassphrasePrefixDelegate extends OstWalletUIWorkflowCallback { + constructor() { + super(); + } + + getPassphrase(userId, ostWorkflowContext, OstPassphrasePrefixAccept) { + let fetchPromise = new Promise((resolve,reject) => { + //Write code here to validate userId. + //If it is not the same as that of the logged-in user, reject the promise. + + //Write code here to fetch the salt from your server. + //Read the passphrasePrefix from response and resolve the Promise. + }); + fetchPromise + .then((passphrasePrefix) => { + OstPassphrasePrefixAccept.setPassphrase(passphrasePrefix, userId, (error) => { + console.warn(error); + }); + }) + .catch((err) => { + // Cancel the workflow. + OstPassphrasePrefixAccept.cancelFlow(); + }); + } + + /** + * Optional Callback Implementation + * -------------------------------- + * + * Application can also define and use following callback methods: + * - requestAcknowledged(ostWorkflowContext , ostContextEntity ) + * - flowComplete(ostWorkflowContext , ostContextEntity ) + * - flowInterrupt(ostWorkflowContext , ostError) + * + * Note: + * These methods can be helpful for debugging. + * Defining these methods does NOT impact ui workflow event subscription in any way. + * If application subscribes to events and also defines these callbacks, both shall be invoked. + */ + + requestAcknowledged(ostWorkflowContext , ostContextEntity ) { + console.log("Received requestAcknowledged callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let entityType = ostContextEntity.entityType; + let entityData = ostContextEntity.entity; + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- OstContextEntity type:", entityType) + console.log("- OstContextEntity entityData:", entityData); + } + + flowComplete(ostWorkflowContext , ostContextEntity ) { + console.log("Received flowComplete callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let entityType = ostContextEntity.entityType; + let entityData = ostContextEntity.entity; + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- OstContextEntity type:", entityType) + console.log("- OstContextEntity entityData:", entityData); + } + + flowInterrupt(ostWorkflowContext , ostError) { + console.log("Received flowInterrupt callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let errorData = ostError.error; + let errorCode = ostError.getErrorCode(); + + // If you would like to reach out to Ost Devs for support, + // we request you to collect internalErrorCode + let internalErrorCode = ostError.getInternalErrorCode(); + let isApiError = ostError.isApiError(); + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- Error"); + console.log(" - Error Code:", errorCode); + console.log(" - Is Api Error:", isApiError); + console.log(" - Sdk Internal Error Code", internalErrorCode); + console.log(" - error data", errorData); + + if ( isApiError && ostError.isApiSignerUnauthorized() ) { + console.log("- This device has either been revoked or not yet registered."); + } else if ("WORKFLOW_CANCELED" === errorCode.toUpperCase() ) { + console.log("- This error can be ignored. The workflow has been canceled by the user or application"); + } + } +} +export default UserPassphrasePrefixDelegate; +---- + +=== Ost Wallet Settings + +OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. +It is a wallet settings page that can be used by end-users to perfrom different wallet operations(Ost Wallet UI Workflows). +For details xref:./OstWalletSettings.adoc[check here] + +____ +*Note* + `OstWalletSettings` is available from `ost-wallet-sdk-react-native` SKD version v2.3.12-beta.1 +____ + +=== Ost Wallet UI Workflows + +==== Activate User + +User activation refers to the deployment of smart-contracts that form the user's token wallet. +An activated user can engage with a token. + +[source,javascript] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** +* Activate user +* @param {String} userId - Ost User id +* @param {String} expiresAfterInSecs - session key expiry time. +* @param {String} spendingLimit - spending limit once in a transaction of session +* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication +* @public +*/ +let workflowId = OstWalletSdkUI.activateUser( + userId, + expiresAfterInSecs, + spendingLimit, + uiCallback +); + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // User is being activated. At this point, user can neither receive or send tokens. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // User has been activated. User can now start receiving tokens. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. The user has NOT been activated. +}); +---- + +==== Add Session + +A session is a period of time during which a sessionKey is authorized to sign transactions under a pre-set limit per transaction on behalf of the user. +The device manager, which controls the tokens, authorizes sessions. + +[source,js] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Add user session + * @param {String} userId - Ost User id + * @param {String} expiresAfterInSecs - session key expiry time. + * @param {String} spendingLimit - spending limit once in a transaction of session + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ +let workflowId = OstWalletSdkUI.addSession( + userId, + expiresAfterInSecs, + spendingLimit, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Session is being added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Session has been added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. The Session has NOT been added. +}); +---- + +==== Get Mnemonic Phrase + +The mnemonic phrase represents a human-readable way to authorize a new device. +This phrase is 12 words long. + +[source,js] +---- +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Get device mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ +let workflowId = OstWalletSdkUI.getDeviceMnemonics( + userId, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // User has seen the mnemonics +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +==== Reset a User's PIN + +The user's PIN is set when activating the user. +This method supports re-setting a PIN and re-creating the recoveryOwner as part of that. + +[source,js] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Reset pin + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + */ +let workflowId = OstWalletSdkUI.resetPin( + userId, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Pin is being reset. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Workflow completed successfully. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +==== Initiate Recovery + +A user can control their tokens using their authorized device(s). +If the user loses their authorized device, she can recover access to their tokens by authorizing a new device via the recovery process. + +If application set `recoverDeviceAddress` then OstWalletUI ask for `pin` to initiate device recovery. +Else it displays authorized device list for given `userId` to select device from. + +[source,javascript] +---- + +let uiCallback = new UserPassphrasePrefixDelegate(); + +/** +* Initiate device recovery +* @param {String} userId - Ost User id +* @param {String} recoverDeviceAddress - Device address which wants to recover +* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication +* @public +*/ +let workflowId = OstWalletSdkUI.initiateDeviceRecovery( + userId, + recoverDeviceAddress, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Device recovery has been initiated. + // The device will be recovered after 12 hours. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device recovery has been initiated. + // The device will be recovered after 12 hours. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +____ +`recoverDeviceAddress` can be `null`. ++ If you have your own UI to select the device to revoke, set `recoverDeviceAddress` to the selected device address. ++ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. ++ +____ + +==== Abort Device Recovery + +To abort initiated device recovery. + +[source,javascript] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Abort device recovery + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + OstWalletSdkUI.abortDeviceRecovery( + userId, + uiCallback + ) + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device recovery has been aborted. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Revoke Device + +To revoke device access. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Revoke device + * @param {String} userId - Ost User id + * @param {String} deviceAddressToRevoke - Device address which wants to recover + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.revokeDevice(userId, deviceAddressToRevoke, uiCallback ); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been revoked. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +____ +`deviceAddressToRevoke` can be `null`. ++ If you have your own UI to select the device to revoke, set `deviceAddressToRevoke` to the selected device address. ++ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. ++ +____ + +==== Update Biometric Preference + +To enable or disable the biometric. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + let shouldEnable = true; + + /** + * Update biometric preference + * @param {String} userId - Ost User id + * @param {boolean} shouldEnable - pass true to enable biometic preference, false to disable. + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.updateBiometricPreference( userId, shouldEnable, uiCallback ); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Preference has been updated. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Authorize Current Device With Mnemonics + +To add a new device using 12 words recovery phrase. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + /** + * Authorize user device with mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.authorizeCurrentDeviceWithMnemonics(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Get Add Device QR-Code + +To show QR-Code to scan from another authorized device + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Get add device QR code + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.getAddDeviceQRCode(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Current Device is being authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Current Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +=== Scan QR-Code to Authorize Device + +To authorize device by scanning device QR-Code. + +QR-Code Sample: + +[source,json] +---- +{ + "dd":"AD", + "ddv":"1.1.0", + "d":{ + "da": "0x7701af46018fc57c443b63e839eb24872755a2f8" + } +} +---- + +[source,js] +---- + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Scan QR-Code to authorize device + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.scanQRCodeToAuthorizeDevice(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Device is being authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +=== Execute Transaction + +* ++++++By Scanning QR-Code ++++++ + To execute transaction via device by scanning device QR-Code. + +QR-Code Sample: + +[source,json] +---- +{ + "dd":"TX", + "ddv":"1.1.0", + "d":{ + "rn":"direct transfer", + "ads":[ + "0x7701af46018fc57c443b63e839eb24872755a2f8", + "0xed09dc167a72d939ecf3d3854ad0978fb13a8fe9" + ], + "ams":[ + "1000000000000000000", + "1000000000000000000" + ], + "tid": 1140, + "o":{ + "cs":"USD", + "s": "$" + } + }, + "m":{ + "tn":"comment", + "tt":"user_to_user", + "td":"Thanks for comment" + } +} +---- + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Scan QR-Code to execute transaction + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.scanQRCodeToExecuteTransaction(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Transaction is being executed. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Transaction has been executed successfully. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +* *By Calling function* + Helper method creates session if active sessoin for transction amount is not available. +To execute transaction via helper method, xref:./OstTransactionHelper.adoc[ref here] + +== Ost Wallet UI Events and Listeners + +=== Subscribe + +Subscribe to specified event of UI Workflow + +Supported `EventName` are: + +* requestAcknowledged +* flowComplete +* flowInterrupt + +You can retrive event names from Sdk: + +[source,javascript] +---- +OstWalletSdkUI.EVENTS.requestAcknowledged +OstWalletSdkUI.EVENTS.flowComplete +OstWalletSdkUI.EVENTS.flowInterrupt +---- + +[source,javascript] +---- +/** +* Subscribes to specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.subscribe( + workflowId, + eventName, + listener, + context +) +---- + +[source,javascript] +---- +/** +* Subscribes once to specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.subscribeOnce( + workflowId, + eventName, + listener, + context +) +---- + +=== Unsubscribe + +Unsubscribes the listener from the specified event of UI Workflow. + +[source,javascript] +---- +/** +* Unsubscribes the listener from the specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.unsubscribe( + workflowId, + eventName, + listener, + context +) +---- + +=== Event Listeners + +==== Request Acknowledged Listener + +Acknowledge application about the request which is going to made by SDK. + +[source,js] +---- +/** + * Request acknowledged + * @param {Object} ostWorkflowContext - info about workflow type + * @param ostContextEntity - info about entity + * @override + */ + requestAcknowledged(ostWorkflowContext, ostContextEntity ) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- + +==== Flow Complete Listener + +[source,js] +---- +/** + * Flow complete + * @param ostWorkflowContext - workflow type + * @param ostContextEntity - status of the flow + * @override + */ + flowComplete(ostWorkflowContext, ostContextEntity ) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- + +==== Flow Interrupt Listener + +[source,js] +---- +/** + * Flow interrupt + * @param ostWorkflowContext workflow type + * @param ostError reason of interruption + * @override + */ + flowInterrupt(ostWorkflowContext, ostError) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- diff --git a/docs/modules/ROOT/pages/android_setup.md.adoc b/docs/modules/ROOT/pages/android_setup.md.adoc new file mode 100644 index 0000000..089c726 --- /dev/null +++ b/docs/modules/ROOT/pages/android_setup.md.adoc @@ -0,0 +1,79 @@ += Android set-up required for Ost React Native SDK +:doctype: book + +== 1. Linking the Ost React Native SDK + +=== Automatic Linking + +[source,bash] +---- +react-native link @ostdotcom/ost-wallet-sdk-react-native +---- + +=== Manual Linking + +. Open up `+./android/app/src/main/java/[...]/MainApplication.java+`. + ** Add `import com.ostwalletrnsdk.OstWalletRnSdkPackage;` to the imports at the top of the file. + ** Add `new OstWalletRnSdkPackage()` to the list returned by the `getPackages()` method +. Append the following lines to `./android/settings.gradle`: ` include ':ost-wallet-sdk-react-native' project(':ost-wallet-sdk-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/ost-wallet-sdk-react-native/android') ` +. Insert the following lines inside the dependencies block in `./android/app/build.gradle`: ``` compile project(':ost-wallet-sdk-react-native') + +== 2. Changing `minSdkVersion` in './android/build.gradle' file + +Change the `minSdkVersion` to 22 in `android/build.gradle` + +---- +android { + defaultConfig { + minSdkVersion 22 + ... + ... + ... + } +} +---- + +== 3. Create SDK configuration file + +Create file `./android/app/src/main/assets/ost-mobilesdk.json` with application specific configurations using the json below as an example + +[source,json] +---- +{ + "BLOCK_GENERATION_TIME": 3, + "PIN_MAX_RETRY_COUNT": 3, + "REQUEST_TIMEOUT_DURATION": 60, + "SESSION_BUFFER_TIME": 3600, + "PRICE_POINT_CURRENCY_SYMBOL": "USD", + "USE_SEED_PASSWORD": false +} +---- + +. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. +. PricePointTokenSymbol: This is the symbol of base currency. +So its value will be OST. +. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. +. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. +. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. +. SessionBufferTime: Buffer expiration time for session keys in seconds. +Default value is 3600 seconds. +. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. +When UseSeedPassword set to `true`, different deterministic salts are used for different keys. + +*NOTE: These configurations are MANDATORY for successful operation. +Failing to set them will significantly impact usage.* + += Debug builds with Android 9 (API level 28) + +Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. +On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. +As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. +To work-around this issues, application needs to have TrustKit as a dependency and initialize it. + +Please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/documentation/TrustKitPublickeyPinning.md[Public Key Pinning Using TrustKit] documentation. + += Next Steps + +. link:../README.md#sdk-usage[SDK Usage] +. link:../README.md#sdk-methods[SDK Methods] +. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] diff --git a/docs/modules/ROOT/pages/ios_setup.md.adoc b/docs/modules/ROOT/pages/ios_setup.md.adoc new file mode 100644 index 0000000..60ecb74 --- /dev/null +++ b/docs/modules/ROOT/pages/ios_setup.md.adoc @@ -0,0 +1,152 @@ += iOS setup required for OST React Native SDK +:doctype: book + +== 1. Installing https://github.com/Carthage/Carthage[Carthage] + +Get https://github.com/Carthage/Carthage[Carthage] by running following command on terminal + +[source,bash] +---- + brew install carthage +---- + +You can also choose https://github.com/Carthage/Carthage/#installing-carthage[other methods] to install https://github.com/Carthage/Carthage[Carthage] + +== 2. Downloading OST React Native SDK using Carthage + +Carthage looks at a file called `Cartfile` to determine which libraries to install. +Create a file in the `./ios` directory of your react-native project called `Cartfile` and enter the following to tell Carthage which dependencies we want: + +Add following entry in your `Cartfile` + +[source,bash] +---- + github "ostdotcom/ost-wallet-sdk-ios" == 2.3.6 +---- + +Now to actually install everything run the following in your terminal: + +[source,bash] +---- + carthage update --platform iOS +---- + +A `Cartfile.resolved` file and a `Carthage` directory will appear in the same directory where your `.xcodeproj` or `.xcworkspace` is. + +== 3. Copying the `OstWalletSdk.framework` file in your Xcode project + +Open your project in Xcode, click on the project file in the left section of the screen and scroll down to the `Linked Frameworks and Libraries` section in Xcode. + +`Carthage` folder will have the `.framework` files that we will add in Xcode project. + +Now open the `./ios/Carthage/Build/iOS` folder in Finder: + +Run this command + +[source,bash] +---- +open ios/Carthage/Build/iOS +---- + +Open application target, under General tab, drag the built `OstWalletSdk.framework` binary from `./ios/Carthage/Build/iOS` folder into Linked Frameworks and Libraries section. + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/copy-framework-file.png[copy-framework-file] + +== 4. Adding the `OstWalletSdk` dependencies in your Xcode project + +We need to add the `.framework` files of dependencies present inside `./ios/Carthage/Build/iOS`. + +Open `application targets` in Xcode. +Under `Build Phases` click `+` icon and choose `New Run Script Phase`. +Add the following command. + +[source,bash] +---- +/usr/local/bin/carthage copy-frameworks +---- + +Click the `+` under `Input Files` and add the following entry framework: + +---- +$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework +$(SRCROOT)/Carthage/Build/iOS/BigInt.framework +$(SRCROOT)/Carthage/Build/iOS/CryptoEthereumSwift.framework +$(SRCROOT)/Carthage/Build/iOS/CryptoSwift.framework +$(SRCROOT)/Carthage/Build/iOS/EthereumKit.framework +$(SRCROOT)/Carthage/Build/iOS/FMDB.framework +$(SRCROOT)/Carthage/Build/iOS/SipHash.framework +$(SRCROOT)/Carthage/Build/iOS/TrustKit.framework +$(SRCROOT)/Carthage/Build/iOS/OstWalletSdk.framework +---- + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/add-dependency-framework-files.png[copy-framework-file] + +== 5. Add additional SDK files + +Follow these steps to add additional files: + +* Click on your project, select `File > Add Files to ""` +* Browse to `./node_modules/@ostdotcom/ost-wallet-sdk-react-native/ios` +* Add the folder `ostwalletrnsdk` with following settings: + ** Destination: (uncheck) Copy items if needed + ** Added folders: (select) Create groups + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/additional-files.png[Add-image] + +== 6. Change Build Settings + +Open application target, under `Build Settings` tab, enable `Always Embed Swift Standard Libraries` under `Build Options` + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/build-options.png[Add image] + +== 7. Create SDK configuration file + +Create `OstWalletSdk.plist` file. +This file has configuration attributes used by OstWalletSdk. +You should copy paste the configuration values from below snippet. + +---- + + + + + BlockGenerationTime + 3 + PricePointTokenSymbol + OST + PricePointCurrencySymbol + USD + RequestTimeoutDuration + 30 + PinMaxRetryCount + 3 + SessionBufferTime + 3600 + UseSeedPassword + + EnableIOSDeviceRestore + + + +---- + +. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. +. PricePointTokenSymbol: This is the symbol of base currency. +So its value will be OST. +. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. +. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. +. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. +. SessionBufferTime: Buffer expiration time for session keys in seconds. +Default value is 3600 seconds. +. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. +When UseSeedPassword set to `true`, different deterministic salts are used for different keys. +. EnableIOSDeviceRestore: When EnableIOSDeviceRestore is set to `true`, After app re-installation, SDK checks for available device key in Keychain for given user id. + +*These configurations are MANDATORY for successful operation. +Failing to set them will significantly impact usage.* + += Next Steps + +. link:../README.md#sdk-usage[SDK Usage] +. link:../README.md#sdk-methods[SDK Methods] +. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] diff --git a/documentation/OstCoreWorkflows.md.adoc b/documentation/OstCoreWorkflows.md.adoc new file mode 100644 index 0000000..4a8bcf2 --- /dev/null +++ b/documentation/OstCoreWorkflows.md.adoc @@ -0,0 +1,624 @@ += Ost Core Workflow APIs + +Ost core workflows api do not use any UI components, thereby giving complete control to the developers. +The xref:./OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost Core Workflows. + +== Table of Contents + +* <> +* <> + ** <> + ** <> + ** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> +* <> + ** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + ** <> + +== Import the OstWalletSdk + +To use the core workflow APIs, import the `OstWalletSdk` from '@ostdotcom/ost-wallet-sdk-react-native'. + +[source,javascript] +---- +import {OstWalletSdk} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +== Create Workflow Callback + +The core workflows communicates with the application using callbacks. +A base callback class `OstWalletWorkFlowCallback` is given as a part of the SDK. +The base callback class gives only declaration of callback functions. +A detailed overview of callback functions is available in the later part of this readme. + +=== OstWalletWorkFlowCallback Interface + +[source,javascript] +---- +import { OstWalletWorkFlowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; + +class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { + constructor() { + super(); + } + + registerDevice(apiParams, ostDeviceRegistered) {} + + getPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} + + invalidPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} + + pinValidated(ostWorkflowContext, ostContextEntity) {} + + flowComplete( ostWorkflowContext, ostContextEntity ) {} + + flowInterrupt(ostWorkflowContext, ostError ) {} + + requestAcknowledged(ostWorkflowContext, ostContextEntity) {} + + verifyData(ostWorkflowContext, ostContextEntity, ostVerifyData) {} +} + +export default OstWalletSdkCallbackImplementation; +---- + +*Developers are expected to implement a new class for each workflow.* + +=== An example of callback implementation + +[source,javascript] +---- + +import {OstWalletWorkFlowCallback} from '@ostdotcom/ost-wallet-sdk-react-native'; + +class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { + constructor() { + super(); + } + + flowComplete(ostWorkflowContext , ostContextEntity) { + console.log('flowComplete ostWorkflowContext', ostWorkflowContext, "ostContextEntity- ", ostContextEntity); + if(Actions.currentScene !== "HomePage"){ + Actions.popTo("HomePage"); + } + if(ostWorkflowContext){ + let wfType = ostWorkflowContext.WORKFLOW_TYPE; + if( wfType !== "SETUP_DEVICE") { + Alert.alert(`${wfType} Complete!`); + } + } + store.dispatch(setLoading(false)); + } + + flowInterrupt(ostWorkflowContext , ostError) { + console.log('flowInterrupt ostWorkflowContext', ostWorkflowContext , "ostError" , ostError ); + if (ostError) { + let displayError = ostError.getErrorMessage(), + apiError, errorData; + if(ostError.isApiError()){ + apiError = ostError.getApiErrorMessage(); + if(apiError && apiError.includes('err.error_data')){ + apiError = ''; + } + errorData = ostError.getApiErrorData(); + if(errorData && errorData.length > 0){ + for(let i=0; i} tokenHolderAddresses - Token holder addresses of amount receiver. + * @param {Array} amounts -Amounts corresponding to tokenHolderAddresses to be transfered + * @param {String} ruleName - Rule name to be executed. + * @param {object} meta - additional data. + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + + OstWalletSdk.executeTransaction( userId, + tokenHolderAddresses, + amounts, + ruleName, + meta, + workflow) +---- + +==== getDeviceMnemonics + +The mnemonic phrase represents a human-readable way to authorize a new device. +This phrase is 12 words long. + +[source,javascript] +---- +/** + * Get Device mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.getDeviceMnemonics( userId, + workflow) +---- + +==== authorizeCurrentDeviceWithMnemonics + +A user that has stored their mnemonic phrase can enter it on a new mobile device and authorize that device to be able to control their tokens. + +[source,javascript] +---- + /** + * Authorize user device with mnemonics + * @param {String} userId - Ost User id + * @param {String} mnemonics - string of mnemonics + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + + OstWalletSdk.authorizeCurrentDeviceWithMnemonics(userId, + mnemonics, + workflow) +---- + +==== performQRAction + +QR codes can be used to encode transaction data for authorizing devices and making purchases via webstores, etc. +This method can be used to process the information scanned off a QR code and act on it. + +[source,javascript] +---- +/** + * Perform QR action + * @param {String} userId - Ost User id + * @param {String} data - Json string of payload is scanned by QR-Code. + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.performQRAction(userId, + data, + workflow) +---- + +==== resetPin + +The user's PIN is set when activating the user. +This method supports re-setting a PIN and re-creating the recoveryOwner. + +[source,javascript] +---- +/** + * Reset user pin + * @param {String} userId - Ost User id + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {String} currentPin - user current pin + * @param {String} newPin - user new pin + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.resetPin( userId, + appSalt, + currentPin, + newPin, + workflow ) +---- + +==== initiateDeviceRecovery + +A user can control their tokens using their authorized device(s). +If a user loses their authorized device, the user can recover access to her tokens by authorizing a new device by initiating the recovery process. + +[source,javascript] +---- +/** + * Initiate device recovery + * @param {String} userId - Ost User id + * @param {String} pin - user current pin + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {String} deviceAddressToRecover - Device address which wants to recover + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.initiateDeviceRecovery( userId, + pin, + appSalt, + deviceAddressToRecover, + workflow ) +---- + +==== abortDeviceRecovery + +To abort an initiated device recovery. + +[source,javascript] +---- +/** + * Abort device recovery + * @param {String} userId - Ost User id + * @param {String} pin - user current pin + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.abortDeviceRecovery(userId, + pin , + appSalt , + workflow ) +---- + +==== logoutAllSessions + +To revoke all sessions associated with provided userId. + +[source,javascript] +---- +/** + * Logout user all sessions + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.logoutAllSessions(userId, + workflow ) +---- + +==== revokeDevice + +To unauthorize the current device. + +[source,javascript] +---- +/** + * revokeDevice + * @param {String} userId - Ost User id + * @param {String} deviceAddress - device address + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.revokeDevice( userId , + deviceAddress , + workflow) +---- + +==== updateBiometricPreference + +To enable or disable biometrics. + +[source,javascript] +---- +/** + * Update biometric prederence + * @param {String} userId - Ost User id + * @param {boolean} enable - to enable biometric prefernce + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.updateBiometricPreference( userId , enable ,workflow ) +---- + +=== Execute a workflow + +To execute a workflow, you need to pass an instance of `OstWalletSdkCallbackImplementation` class. +The callback implementation will be different for each workflow available in the SDK. + +[source,javascript] +---- + +import OstWalletWorkflowCallback from './OstWalletSdkCallbackImplementation'; + +onLogoutAllSessions() { + AsyncStorage.getItem('user').then((user) => { + user = JSON.parse(user); + // Note: logoutAllSessions will revoke all sessions keys from all the devices of the user. + OstWalletSdk.logoutAllSessions(user.user_details.user_id, new OstWalletWorkflowCallback(), console.warn); + }); +} +---- diff --git a/documentation/OstJsonApi.md.adoc b/documentation/OstJsonApi.md.adoc new file mode 100644 index 0000000..cb4a2d9 --- /dev/null +++ b/documentation/OstJsonApi.md.adoc @@ -0,0 +1,615 @@ += OST JSON APIs + +OST JSON APIs are a set of _asynchronous_ methods that make API calls to OST Platform servers. + +== Table of Contents + +* <> +* <> +* <> +* <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + *** <> +* <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + +++++++++++++ + +== Before We Begin + +* Although it is *NOT RECOMMENDED*, but if your app needs to allow multiple users to login on same device, the app must: + ** ensure to pass the `userId` of the currently *logged-in and authenticated* user. + ** ensure that the user has not logged-out *before* processing/displaying the response. +* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating any JSON API. +* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any JSON API. +* All `OstJsonApi` methods expect `userId` as first parameter because all requests need to be signed by the user's API key. +* It's always good to check if the device can make API calls by calling `OstWalletSdk.getCurrentDeviceForUserId` method. + ** Any device with status `REGISTERED`, `AUTHORIZING`, `AUTHORIZED`, `RECOVERING` or `REVOKING` can make this API call. + +++++++++++++ + +== JSON API Types + +The JSON APIs can be categorized into 2 groups. + +* <> - The APIs that get entities (e.g. +current-device, price-point, balance, etc.) +* <> - The APIs that get list of entities and support pagination (e.g. +device list, transactions) + +++++++++++++ + +== Importing OstJsonApi + +Use the following code to import `OstJsonApi` + +---- +import {OstJsonApi} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +++++++++++++ + +== Entity API + +++++++++++++ + +=== Get Current Device + +API to get user's current device. + +____ +While the equivalent getter method `OstWalletSdk.getCurrentDeviceForUserId` gives the data stored in SDK's database, this method makes an API call to OST Platform. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * API to get user's current device. + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getCurrentDeviceForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "device": { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x0000000000000000000000000000000000000001", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "result_type": "device" +} +---- + +++++++++++++ + +=== Get Balance + +API to get user's balance. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getBalanceForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "balance": { + "updated_timestamp": 1566832497, + "unsettled_debit": "0", + "available_balance": "10000000", + "total_balance": "10000000", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "result_type": "balance" +} +---- + +++++++++++++ + +=== Get Price Points + +API to get price-points of token's staking currency (OST or USDC). + +____ +This API call is generally needed to compute the current fiat value to your brand-tokens. +E.g. +displaying user's balance in fiat. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getPricePointForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "price_point": { + "USDC": { + "updated_timestamp": 1566834913, + "decimals": 18, + "GBP": 0.8201717727, + "EUR": 0.9028162679, + "USD": 1.0025110673 + } + }, + "result_type": "price_point" +} +---- + +++++++++++++ + +=== Get Balance And Price Points + +This is a convenience method that makes `OstJsonApi.getBalanceForUserId` and `OstJsonApi.getPricePointForUserId` API calls and merges the response. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getBalanceWithPricePointForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "balance": { + "updated_timestamp": 1566832497, + "unsettled_debit": "0", + "available_balance": "10000000", + "total_balance": "10000000", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "price_point": { + "USDC": { + "updated_timestamp": 1566834913, + "decimals": 18, + "GBP": 0.8201717727, + "EUR": 0.9028162679, + "USD": 1.0025110673 + } + }, + "result_type": "balance" +} +---- + +++++++++++++ + +=== Get Pending Recovery + +API to get user's pending recovery. +A pending recovery is created when the user recovers the device using their PIN. + +____ +This API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ +OstJsonApi.getPendingRecoveryForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => { + console.log( error ); + if ( error.is_api_error ) { + if ( "UNPROCESSABLE_ENTITY" === String(error.api_error.code).toUppercase() ) { + console.log("User does not have any recovery in progress."); + // You can safely ignore this error. + return; + } + } + } +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- + { + "devices": [ + { + "updated_timestamp": 1566902100, + "status": "REVOKING", + "api_signer_address": "0x903ad1a1017c14b8e6b0bb1dd32d3f65a8741732", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x629e13063a2aa24e2fb2a49697ef871806071550", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566902100, + "status": "RECOVERING", + "api_signer_address": "0x6f5b1b8df95cbc3bd8d18d6c378cef7c34644729", + "linked_address": "null", + "address": "0x33e736a4761bc07ed54b1ceb82e44dfb497f478c", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } + ], + "result_type": "devices" +} +---- + +++++++++++++ + +.Sample Error + +The `getPendingRecoveryForUserId` API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. + +[source,json] +---- +{ + "api_error": { + "internal_id": "***********", + "error_data": [], + "msg": "Initiate Recovery request for user not found.", + "code": "UNPROCESSABLE_ENTITY" + }, + "is_api_error": 1, + "error_message": "OST Platform Api returned error.", + "internal_error_code": "***********", + "error_code": "API_RESPONSE_ERROR" +} +---- + +++++++++++++ + +== List API + +All `List` APIs support pagination. +The response of all `List` APIs has an extra attribute `meta`. +To determine if next page is available, the app should look at `meta.next_page_payload`. +If `meta.next_page_payload` is an empty object (`{}`), next page is not available. + +++++++++++++ + +=== Get Transactions + +API to get user's transactions. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; +let nextPagePayload = null; + +/** + * Api to get user's transactions + * @param {String} userId - Ost User id + * @param {Object} nextPagePayload (@nullable). Pass null to get first page. + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getTransactionsForUserId(userId, nextPagePayload, + (response) => { + console.log(response); + // Let's check if more pages of data is available. + if ( response.meta ) { + let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; + if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { + // Next page is available. + // Update nextPagePayload + nextPagePayload = nextPagePayloadFromResponse; + // To fetch the next page, pass the updated nextPagePayload. + } + } + }, + (error) => { + console.log("An error has occurred while fetching transactions."); + console.log( error ); + }); +---- + +++++++++++++ + +.Sample Response + +Please refer to the https://dev.ost.com/platform/docs/api/#transactions[Transactions Object] for a detailed description. + +[source,json] +---- +{ + "meta": { + "total_no": 14, + "next_page_payload": { + "pagination_identifier": "*****************************************************" + } + }, + "transactions": [ + { + "meta_property": { + "details": "Awesome Post", + "type": "user_to_user", + "name": "Like" + }, + "rule_name": "Direct Transfer", + "block_timestamp": 1566843589, + "block_confirmation": 969, + "transaction_fee": "94234000000000", + "gas_price": "1000000000", + "nonce": 613, + "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", + "id": "4efa1b45-8890-4978-a5f4-8f9368044852", + "transfers": [ + { + "kind": "transfer", + "amount": "200000", + "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", + "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", + "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", + "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" + } + ], + "block_number": 3581559, + "updated_timestamp": 1566843589, + "status": "SUCCESS", + "gas_used": 94234, + "value": "0", + "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "transaction_hash": "0xee8033f9ea7e9bf2d74435f0b6cc172d9378670e513a2b07cd855ef7e41dd2ad" + }, + { + "meta_property": { + "details": "Nice Pic", + "type": "user_to_user", + "name": "Fave" + }, + "rule_name": "Direct Transfer", + "block_timestamp": 1566843547, + "block_confirmation": 983, + "transaction_fee": "109170000000000", + "gas_price": "1000000000", + "nonce": 612, + "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", + "id": "7980ee91-7cf1-449c-bbaf-5074c2ba6b29", + "transfers": [ + { + "kind": "transfer", + "amount": "1600000", + "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", + "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", + "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", + "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" + } + ], + "block_number": 3581545, + "updated_timestamp": 1566843549, + "status": "SUCCESS", + "gas_used": 109170, + "value": "0", + "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "transaction_hash": "0x3e3bb3e25ab3a5123d1eaf20e1c31ab88bd56500c5cdfd2e32025c4df32735b3" + }, + ... + ... + ], + "result_type": "transactions" +} +---- + +++++++++++++ + +=== Get Devices + +API to get user's devices. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; +let nextPagePayload = null; + +/** + * Api to get user's device + * @param {String} userId - Ost User id + * @param {Object} nextPagePayload (@nullable). Pass null to get first page. + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getDeviceListForUserId(userId, nextPagePayload, + (response) => { + console.log(response); + // Let's check if more pages of data is available. + if ( response.meta ) { + let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; + if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { + // Next page is available. + // Update nextPagePayload + nextPagePayload = nextPagePayloadFromResponse; + // To fetch the next page, pass the updated nextPagePayload. + } + } + }, + (error) => { + console.log("An error has occurred while fetching devices."); + console.log( error ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "meta": { + "next_page_payload": {} + }, + "devices": [ + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566839512, + "status": "AUTHORIZED", + "api_signer_address": "0x2e12c4f6a27f7bdf8e58e628ec29bb4ce49c315e", + "linked_address": "0x0000000000000000000000000000000000000001", + "address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } + ], + "result_type": "devices" +} +---- diff --git a/documentation/OstTransactionConfig.md.adoc b/documentation/OstTransactionConfig.md.adoc new file mode 100644 index 0000000..a3687b8 --- /dev/null +++ b/documentation/OstTransactionConfig.md.adoc @@ -0,0 +1,46 @@ += OstTransaction Config + +== Introduction + +App developers can configure session `expiration_time` and `spending_limit` while executing transaction. +To configure the session creation parameters (session buckets), provide the sdk with JSON object. +The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. + +== Configuration Data Structure + +Here is the small sample json representation of the configuration. + +[source,js] +---- +{ + "session_buckets": [ + { + expiration_time: 60*60*24*30*2, //2 months + spending_limit: '10' + }, + { + expiration_time: 60*60*24*30, //1 months + spending_limit: '50' + }, + { + expiration_time: 60*60*24, //24 hours + spending_limit: '100' + }, + { + expiration_time: 60*60*1, //1 hour + spending_limit: '1000' + } + ] +} +---- + +In the above example: + +* The first-level key `session_buckets` corresponds to list of buckets for creating session. +The bucket selection is depends on `spending_limit`. +* The second-level keys + ** `expiration_time` : corresponds to expiry time of session. + ** `spending_limit` : corresponds to spending limit of session. + +Above configuration allows user to execute transction of spending limit `1000`. +SDK throws error, if user makes transaction above `1000`. diff --git a/documentation/OstTransactionHelper.md.adoc b/documentation/OstTransactionHelper.md.adoc new file mode 100644 index 0000000..e60c1a2 --- /dev/null +++ b/documentation/OstTransactionHelper.md.adoc @@ -0,0 +1,94 @@ += Ost Transaction Helper + +== Introduction + +Developer can call functions of transaction helper to execute transaction and setting up config for transaction. + +== Configuration + +App developers can configure session `expiration_time` and `spending_limit` while executing transaction. +To configure the session creation parameters (session buckets), the sdk needs to be provided with JSON object. +The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. + +=== Configuration Data Structure + +Here is the small sample json representation of the configuration. + +[source,js] +---- +{ + "session_buckets": [ + { + expiration_time: 60*60*24*30*2, //2 months + spending_limit: '10' + }, + { + expiration_time: 60*60*24*30, //1 months + spending_limit: '50' + }, + { + expiration_time: 60*60*24, //24 hours + spending_limit: '100' + }, + { + expiration_time: 60*60*1, //1 hour + spending_limit: '1000' + } + ] +} +---- + +In the above example: + +* The first-level key `session_buckets` corresponds to list of buckets for creating session. +The bucket selection is depends on `spending_limit`. +* The second-level keys + ** `expiration_time` : corresponds to expiry time of session. + ** `spending_limit` : corresponds to spending limit of session. + +Above configuration allows user to execute transction of spending limit `1000`. +SDK throws error, if user makes transaction above `1000`. + +=== Set Transaction Config + +Developer can set list of buckets for creating session. +For details, Please refer xref:./OstTransactionConfig.adoc[this] + +[source,js] +---- +import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" + +OstTransactionHelper.setTxConfig(ost-tx-config); +---- + +== Execute Direct Transfer + +Execute direct transfer can be performed by calling + +____ +*Note* + Developer needs to create a class extends from OstWalletUIWorkflowCallback and write logic to get passphrase prefix from their application server. +Please refer xref:./OstWalletUI.adoc[this] section for documentation. +____ + +[source,js] +---- +import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" + +const ostUserId = +const txMeta = {"type": "user_to_user", "name": "Tokens sent", "details": "Sending tokens vis direct transafer"}; +const workflowCallback = new OstWalletUIWorkflowCallback() + +let uuid = OstTransactionHelper.executeDirectTransfer(ostUserId, [tokenValue], [token_holder_address], txMeta, workflowCallback); + +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowComplete, (workflowContext, contextEntity) => { + //functionality for transaction success +}); +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowInterrupt, (workflowContext, ostError) => { + //functionality for transaction failed +}); +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.requestAcknowledged, (workflowContext, contextEntity) => { + //functionality for transaction ack. +}); +---- + +New session will be created with appropriate bucket, if sdk won't get any active session for given spending limit. diff --git a/documentation/OstWalletSdkGetMethods.md.adoc b/documentation/OstWalletSdkGetMethods.md.adoc new file mode 100644 index 0000000..2d4c2db --- /dev/null +++ b/documentation/OstWalletSdkGetMethods.md.adoc @@ -0,0 +1,395 @@ += OST Wallet React Native SDK Getter Methods + +== Table of Contents + +* <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> + +++++++++++++ + +== Before We Begin + +* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating getter methods. +* We recommend using these methods _after_ link:../README.md#setupdevice[setupDevice] workflow has been performed. +* The getter methods provide the data as available with the device. + ** The methods may return `null` if the data is not available. +* These methods are _synchronous_ in the native SDK. +Because of react-native's bridge they behave _asynchronous_ in the react-native SDK. + ** These methods do not make any API calls. + +++++++++++++ + +== Get Token + +Method to get token information. + +____ +`getToken` method will return partial data if device has not been registered. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update tokenId as per your needs. + Since this tokenId does not belong to your economy, you may get an error if you do not change it. + */ + let tokenId = '1129'; + + /** + * Get token object for provided userId + * @param {String} tokenId - Ost Token id + * @param {function} callback - Gets token object if present else nil + * @callback params {Object} token entity. Returns null if information is not available with device. + * @public + */ + OstWalletSdk.getToken(tokenId, (tokenEntity) => { + console.log("tokenEntity", tokenEntity); + }); +---- + +++++++++++++ + +.Sample Response + +Please refer to the https://dev.ost.com/platform/docs/api/#token[Token Object] for a detailed description. + +[source,json] +---- +{ + "updated_timestamp": 1560167796, + "auxiliary_chains": [ + { + "organization": { + "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", + "contract": "0xb8e3fcfb5dac714e40b63489f4f393c7073fdbb3" + }, + "company_uuids": [ + "d6bf0061-a32d-48af-a29b-013260a947f3" + ], + "company_token_holders": [ + "0x93f08d0c5d7bc28cc117681b3b23f8501a09e786" + ], + "utility_branded_token": "0xc50e3fd492a9a99a964f7aff8d755075d0732ff0", + "chain_id": 197 + } + ], + "origin_chain": { + "stakers": [ + "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637" + ], + "organization": { + "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", + "contract": "0x0260a404804b1d7cf6fa678fb5d8441495cfff1b" + }, + "branded_token": "0x18cbeae2f1785abf68c9984f9186a29ed062c3ca", + "chain_id": 3 + }, + "decimals": 6, + "total_supply": "500000000000", + "conversion_factor": 10, + "base_token": "USDC", + "symbol": "SC1", + "name": "STC1", + "id": 1129 +} +---- + +++++++++++++ + +== Get User + +Method to get user information. + +____ +`getUser` method will return partial data if device has not been registered. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get user object for provided userId + * @param {String} userId - Ost User id + * @param {function} callback - Gets object if present else nil + * @callback params {Object}user + * @public + */ + OstWalletSdk.getUser(userId, (userEntity)=>{ + console.log( userEntity ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "updated_timestamp": 1566832473, + "status": "ACTIVATED", + "type": "user", + "recovery_owner_address": "0x0a64dc924d32a569b1d0885acfc34832e1444944", + "recovery_address": "0x99c46a66621d6967cbd692e615ec36747d58fecb", + "device_manager_address": "0x55f379612796b863590d388ed509ae50de12a5d2", + "token_holder_address": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "token_id": 1129, + "id": "71c59448-ff77-484c-99d8-abea8a419836" +} +---- + +++++++++++++ + +== Get Current Device + +Method to get device entity. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get current device object for provided userId + * @param {String} userId - Ost User id + * @param {function} callback - Gets current device object if present else nil + * @callback params {Object} device + * @public + */ + OstWalletSdk.getCurrentDeviceForUserId(userId, (device)=>{ + console.log( device ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" +} +---- + +++++++++++++ + +== Get Biometric Preference + +Method to get biometric preference of the user. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get biometric preference for user + * + * @param userId - Ost User id + * @param callback - Gets biometric preference boolean value + */ + OstWalletSdk.isBiometricEnabled(userId, (status) => { + console.log("isBiometricEnabled", status ); + // logs true or false. + }); +---- + +++++++++++++ + +== Get Active Sessions + +Method to get active sessions available with device. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId and minimumSpendingLimitInWei as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + let minimumSpendingLimitInWei = "1000000"; + + /** + * Get user object for provided userId + * @param {String} userId - Ost User id + * @param {String} minimumSpendingLimitInWei - optional parameter, defaults to zero. + * @param {function} callback - Gets array of current device sessions. + * @callback params {Array} array of sessions + * @public + */ + OstWalletSdk.getActiveSessionsForUserId(userId, minimumSpendingLimitInWei, (activeSessions)=>{ + console.log(activeSessions); + }); + + + // Optionally, getActiveSessionsForUserId method can also + // be invoked without specifying minimumSpendingLimitInWei. + OstWalletSdk.getActiveSessionsForUserId(userId,(activeSessions)=>{ + console.log(activeSessions); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +[ + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x3171bce99d00812b77aa216ed544ab35fc8b6fb1", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x816324ed539b62652a247ce5c1f1962f6de13e14", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 3, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x95b3fcb5aa3930a9bc42da171b8733a3a869955f", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 3, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0xe57b68fc8aca57d9488d1607df628a4076571eda", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x459712cb13efd12ade7ff3a5fd4641f5c21904c9", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } +] +---- + +++++++++++++ + +== QR Code for Authorizing Device + +Method to generate QR code that can be scanned by an *authorized* device. +Scanning this QR code with an authorized mobile device will result in this device (from where the QR code has been generated) being authorized. + +____ +App should use this method only when the current device status is `REGISTERED`. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId and minimumSpendingLimitInWei as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get device QR code + * @param {String} userId - Ost User id + * @param {function} successCallback - returns image as base64 string. + * @param {function} errorCallback. + * @public + */ + OstWalletSdk.getAddDeviceQRCode( userId , (base64Image) => { + console.log(base64Image); + // Assuming this method is called from Component, + // let's update the component's state to display the image. + this.setState({ + qrCode: base64Image + }); + }, (error) => { + + }); +---- + +++++++++++++ + +.Sample Render Method +[source,jsx] +---- + render() { + // Assuming that callback will set 'qrCode' attribute in component's state. + if ( this.state.qrCode ) { + return ( + + ); + } + return null; + } +---- diff --git a/documentation/OstWalletSettings.md.adoc b/documentation/OstWalletSettings.md.adoc new file mode 100644 index 0000000..45115b0 --- /dev/null +++ b/documentation/OstWalletSettings.md.adoc @@ -0,0 +1,78 @@ += OstWallet Settings + +== Introduction + +OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. +It is a wallet settings page that can be used by end-users to perfrom different wallet operations. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +OstWalletSettings supports 13 workflows: + +* Activate User +* Wallet Details +* Initialize Recovery +* Add Session +* Reset a User's PIN +* Get Mnemonic Phrase +* Authorize device using mnemonics +* Abort Device Recovery +* Revoke Device +* Scan QR Code to add another device +* Get Current Device QR code +* Enable Biometrics +* Disable Biometrics + +== Usage + +=== Create wallet settings stack navigation + +[source,js] +---- +import {OstWalletSettingsComponent} from '@ostdotcom/ost-wallet-sdk-react-native'; + +let settingsStack = createStackNavigator( + { + "WalletSettingScreen": OstWalletSettingsComponent + } +); +---- + +=== Naviagte to settings page + +`ostUserId` and `ostWalletUIWorkflowCallback` are mandetory parameters that need to be passed as params to the `WalletSettingScreen` screen. + +[source,js] +---- +const ostUserId = +const delegate = new OstWalletUIWorkflowCallback(ostUserId, {}) +this.props.navigation.push("WalletSettingScreen", {'ostUserId': ostUserId, 'ostWalletUIWorkflowCallback': delegate}); +---- + +____ +*Note* + Developer needs to create a class extends from `OstWalletUIWorkflowCallback` and write logic to get passphrase prefix from their application server. +Please refer link:OstWalletUI.md#setup-your-passphrase-prefix-delegate[this] section for documentation. +____ + +== UI Customization + +Developer can customize wallet settings by updating respective properties mentioned in image. +OstTheme config shown link:./configs/ost-sdk-theme-config.js[here] + +image:images/wallet_settings.png[copy-framework-file] image:images/wallet_details.png[copy-framework-file] + +== Settings Content + +Developer can modify `header` and `description` of settings options. +To modify contet, xref:./OstWalletSettingsConfig.adoc[refer here]. + +[source,js] +---- +import {OstWalletSettings} from "@ostdotcom/ost-wallet-sdk-react-native/js/index"; + +let settingsContentConfig = {} + +OstWalletSettings.setMasterConfig(settingsContentConfig) +---- diff --git a/documentation/OstWalletSettingsConfig.md.adoc b/documentation/OstWalletSettingsConfig.md.adoc new file mode 100644 index 0000000..f441cb3 --- /dev/null +++ b/documentation/OstWalletSettingsConfig.md.adoc @@ -0,0 +1,121 @@ += OstWallet Settings Config + +== Introduction + +App developers can configure the text shown on settings page. + +To configure the content, the sdk needs to be provided with https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON[JSON object]. + +The default configuration can be found link:../js/WalletSettings/ost-wallet-settings-config.json[here]. + +== Dictionary Data Structure + +Here is the small sample json representation of the configuration. + +[source,json] +---- +{ + "item_display_order": [ + "activate_user", + ], + "item_configs": { + "activate_user": { + "content_config": { + "heading": "Activate User", + "description": "User is not activated yet." + }, + "config": { + "spending_limit": "0", + "expiration_time": 0 + } + } + } +} +---- + +In the above example: + +* The first-level key `item_display_order` corresponds to sequence of allowed workflows. +* The first-level key `item_configs` corresponds to config for workflows. +* The second-level key `activate_user` corresponds to activate user workflow. +* The third-level key `content_config` corresponds to `heading` and `description` of workflows. +* The third-level key `config` corresponds to respective config for workflows. + +== Supported Workflows + +OstWalletSettings supports 13 workflows + +|=== +| Configuration Keys | Workflows + +| activate_user +| Activate User + +| wallet_details +| Wallet Details + +| recover_device +| Initialize Recovery + +| add_session +| Add Session + +| reset_pin +| Reset a User's PIN + +| show_mnemonics +| Get Mnemonic Phrase + +| authorize_device_with_mnemonics +| Authorize device using mnemonics + +| abort_recovery +| Abort Device Recovery + +| revoke_device +| Revoke Device + +| add_another_device +| Scan QR Code to add another device + +| show_device_qr_code +| Get current Device QR code + +| enable_biometrics +| Use biometrics to authorize new Sessions and to confirm high value transactions. + +| disable_biometrics +| Turn off biometrics and use PIN to authorize new Sessions and to confirm high value transactions. +|=== + +* All workflows have `content_config`. +* `config` varies workflow to workflow. + +== Workflow Config + +Some workflows requires additional data. +It can be passed to workflow by setting it in `config`. + +|=== +| Workflows | Config Keys | Config Type + +| activate_user +| - spending_limit +| String + +| +| - expiration_time +| Number + +| wallet_details +| - ost_view_endpoint +| String + +| add_session +| - spending_limit +| String + +| +| - expiration_time +| Number +|=== diff --git a/documentation/OstWalletUI.md.adoc b/documentation/OstWalletUI.md.adoc new file mode 100644 index 0000000..19fd2db --- /dev/null +++ b/documentation/OstWalletUI.md.adoc @@ -0,0 +1,842 @@ += OST Wallet React Native SDK UI + +== Introduction + +For quick and easy integration with SDK, developers can use built-in user interface components which are configurable and support content and theme customization. +All OstWalletSdkUI workflows return `workflow-id`. +The application can subscribe to the events of the workflow using the `workflow-id`. + +== Setup + +`OstWalletSdkUI` is packaged along with OstWalletSdk. +There are no additional steps for using `OstWalletSdkUI`. +To setup OstWalletSdk, please refer to link:../README.md#installing-react-native-sdk[setup]. + +== Before We Begin + +* App must link:../README.md#initializing-the-sdk[initialize] the sdk _*before*_ initiating any UI workflows. +* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any UI workflows. + +== OstWalletSdkUI SDK APIs + +To use OstWalletSdkUI + +---- +import {OstWalletSdkUI} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +=== Set Theme Config + +Theme for OstWalletSdkUI can be initialized by calling `setThemeConfig` API which setup OstWalletSdkUI theme config. +To define custom theme config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ThemeConfig.md[Theme Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ThemeConfig.md[Theme Config iOS] documentation. + +[source,js] +---- + // Define the content config + const theme_config = { + "nav_bar_logo_image": { + "asset_name": "YOUR_LOGO_ASSET_NAME" + } + }; + + /** + * Set theme config for UI + * config: Config to use for UI + */ + OstWalletSdkUI.setThemeConfig(theme_config); +---- + +____ +* In the above example, `asset_name` is name of asset which is present in the respective assets folder for iOS/android. +____ + +=== Set Content Config + +Content for OstWalletSdkUI can be initialized by calling `setContentConfig` API which set-up OstWalletSdkUI content config. +To define custom content config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ContentConfig.md[Content Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ContentConfig.md[Content Config iOS] documentation. + +[source,js] +---- + // Please update terms_and_condition.url as per your needs. + const content_config = { + "activate_user": { + "create_pin": { + "placeholders": { + "terms_and_condition": { + "url": "https://YOUR-WEB-SITE.com/terms-page" + } + } + }, + "confirm_pin": { + "placeholders": { + "terms_and_condition": { + "url": "https://YOUR-WEB-SITE.com/terms-page" + } + } + } + } + }; + + /** + * Set content config for UI + * config: Config to use for UI + */ + OstWalletSdkUI.setContentConfig(content_config); +---- + +=== Set Loader Manager + +Application loader for OstWalletUI can be initialized by calling `setLoaderManager` API. +This API is available in native SDK. ++ + Custom loader is supported from OstWalletSdk-native version Android v``2.3.6`` Or iOS v``2.3.5`` + Please, verify OstWalletSdk version in `Cartfile`. ++ + Custom loader needs to be written in native code (java, swift/Objective-C). ++ Sample code for custom loader is available in respective platform directory. +For https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/Samples/CustomLoader/OstMockCustomLoader.md[iOS] and https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/Samples/customloader/OstCustomLoader.md[Android] + +=== Setup your Passphrase Prefix Delegate + +`Passphrase Prefix` is a salt provided by your application that assists in generation of User's recovery key using user's PIN. +This salt should be _unique_ for each user, is immutable and needs to be associated with the user. +The salt should not be stored in memory or on deivce unencrypted. +When the UI workflow need's to ask for user's PIN, delegate's getPassphrase method is invoked. + +The delegate must be derived from `OstWalletUIWorkflowCallback` class. + +Here is an example: + +[source,javascript] +---- +import { OstWalletUIWorkflowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; +class UserPassphrasePrefixDelegate extends OstWalletUIWorkflowCallback { + constructor() { + super(); + } + + getPassphrase(userId, ostWorkflowContext, OstPassphrasePrefixAccept) { + let fetchPromise = new Promise((resolve,reject) => { + //Write code here to validate userId. + //If it is not the same as that of the logged-in user, reject the promise. + + //Write code here to fetch the salt from your server. + //Read the passphrasePrefix from response and resolve the Promise. + }); + fetchPromise + .then((passphrasePrefix) => { + OstPassphrasePrefixAccept.setPassphrase(passphrasePrefix, userId, (error) => { + console.warn(error); + }); + }) + .catch((err) => { + // Cancel the workflow. + OstPassphrasePrefixAccept.cancelFlow(); + }); + } + + /** + * Optional Callback Implementation + * -------------------------------- + * + * Application can also define and use following callback methods: + * - requestAcknowledged(ostWorkflowContext , ostContextEntity ) + * - flowComplete(ostWorkflowContext , ostContextEntity ) + * - flowInterrupt(ostWorkflowContext , ostError) + * + * Note: + * These methods can be helpful for debugging. + * Defining these methods does NOT impact ui workflow event subscription in any way. + * If application subscribes to events and also defines these callbacks, both shall be invoked. + */ + + requestAcknowledged(ostWorkflowContext , ostContextEntity ) { + console.log("Received requestAcknowledged callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let entityType = ostContextEntity.entityType; + let entityData = ostContextEntity.entity; + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- OstContextEntity type:", entityType) + console.log("- OstContextEntity entityData:", entityData); + } + + flowComplete(ostWorkflowContext , ostContextEntity ) { + console.log("Received flowComplete callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let entityType = ostContextEntity.entityType; + let entityData = ostContextEntity.entity; + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- OstContextEntity type:", entityType) + console.log("- OstContextEntity entityData:", entityData); + } + + flowInterrupt(ostWorkflowContext , ostError) { + console.log("Received flowInterrupt callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let errorData = ostError.error; + let errorCode = ostError.getErrorCode(); + + // If you would like to reach out to Ost Devs for support, + // we request you to collect internalErrorCode + let internalErrorCode = ostError.getInternalErrorCode(); + let isApiError = ostError.isApiError(); + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- Error"); + console.log(" - Error Code:", errorCode); + console.log(" - Is Api Error:", isApiError); + console.log(" - Sdk Internal Error Code", internalErrorCode); + console.log(" - error data", errorData); + + if ( isApiError && ostError.isApiSignerUnauthorized() ) { + console.log("- This device has either been revoked or not yet registered."); + } else if ("WORKFLOW_CANCELED" === errorCode.toUpperCase() ) { + console.log("- This error can be ignored. The workflow has been canceled by the user or application"); + } + } +} +export default UserPassphrasePrefixDelegate; +---- + +=== Ost Wallet Settings + +OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. +It is a wallet settings page that can be used by end-users to perfrom different wallet operations(Ost Wallet UI Workflows). +For details xref:./OstWalletSettings.adoc[check here] + +____ +*Note* + `OstWalletSettings` is available from `ost-wallet-sdk-react-native` SKD version v2.3.12-beta.1 +____ + +=== Ost Wallet UI Workflows + +==== Activate User + +User activation refers to the deployment of smart-contracts that form the user's token wallet. +An activated user can engage with a token. + +[source,javascript] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** +* Activate user +* @param {String} userId - Ost User id +* @param {String} expiresAfterInSecs - session key expiry time. +* @param {String} spendingLimit - spending limit once in a transaction of session +* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication +* @public +*/ +let workflowId = OstWalletSdkUI.activateUser( + userId, + expiresAfterInSecs, + spendingLimit, + uiCallback +); + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // User is being activated. At this point, user can neither receive or send tokens. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // User has been activated. User can now start receiving tokens. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. The user has NOT been activated. +}); +---- + +==== Add Session + +A session is a period of time during which a sessionKey is authorized to sign transactions under a pre-set limit per transaction on behalf of the user. +The device manager, which controls the tokens, authorizes sessions. + +[source,js] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Add user session + * @param {String} userId - Ost User id + * @param {String} expiresAfterInSecs - session key expiry time. + * @param {String} spendingLimit - spending limit once in a transaction of session + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ +let workflowId = OstWalletSdkUI.addSession( + userId, + expiresAfterInSecs, + spendingLimit, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Session is being added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Session has been added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. The Session has NOT been added. +}); +---- + +==== Get Mnemonic Phrase + +The mnemonic phrase represents a human-readable way to authorize a new device. +This phrase is 12 words long. + +[source,js] +---- +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Get device mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ +let workflowId = OstWalletSdkUI.getDeviceMnemonics( + userId, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // User has seen the mnemonics +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +==== Reset a User's PIN + +The user's PIN is set when activating the user. +This method supports re-setting a PIN and re-creating the recoveryOwner as part of that. + +[source,js] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Reset pin + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + */ +let workflowId = OstWalletSdkUI.resetPin( + userId, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Pin is being reset. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Workflow completed successfully. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +==== Initiate Recovery + +A user can control their tokens using their authorized device(s). +If the user loses their authorized device, she can recover access to their tokens by authorizing a new device via the recovery process. + +If application set `recoverDeviceAddress` then OstWalletUI ask for `pin` to initiate device recovery. +Else it displays authorized device list for given `userId` to select device from. + +[source,javascript] +---- + +let uiCallback = new UserPassphrasePrefixDelegate(); + +/** +* Initiate device recovery +* @param {String} userId - Ost User id +* @param {String} recoverDeviceAddress - Device address which wants to recover +* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication +* @public +*/ +let workflowId = OstWalletSdkUI.initiateDeviceRecovery( + userId, + recoverDeviceAddress, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Device recovery has been initiated. + // The device will be recovered after 12 hours. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device recovery has been initiated. + // The device will be recovered after 12 hours. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +____ +`recoverDeviceAddress` can be `null`. ++ If you have your own UI to select the device to revoke, set `recoverDeviceAddress` to the selected device address. ++ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. ++ +____ + +==== Abort Device Recovery + +To abort initiated device recovery. + +[source,javascript] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Abort device recovery + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + OstWalletSdkUI.abortDeviceRecovery( + userId, + uiCallback + ) + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device recovery has been aborted. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Revoke Device + +To revoke device access. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Revoke device + * @param {String} userId - Ost User id + * @param {String} deviceAddressToRevoke - Device address which wants to recover + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.revokeDevice(userId, deviceAddressToRevoke, uiCallback ); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been revoked. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +____ +`deviceAddressToRevoke` can be `null`. ++ If you have your own UI to select the device to revoke, set `deviceAddressToRevoke` to the selected device address. ++ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. ++ +____ + +==== Update Biometric Preference + +To enable or disable the biometric. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + let shouldEnable = true; + + /** + * Update biometric preference + * @param {String} userId - Ost User id + * @param {boolean} shouldEnable - pass true to enable biometic preference, false to disable. + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.updateBiometricPreference( userId, shouldEnable, uiCallback ); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Preference has been updated. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Authorize Current Device With Mnemonics + +To add a new device using 12 words recovery phrase. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + /** + * Authorize user device with mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.authorizeCurrentDeviceWithMnemonics(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Get Add Device QR-Code + +To show QR-Code to scan from another authorized device + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Get add device QR code + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.getAddDeviceQRCode(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Current Device is being authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Current Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +=== Scan QR-Code to Authorize Device + +To authorize device by scanning device QR-Code. + +QR-Code Sample: + +[source,json] +---- +{ + "dd":"AD", + "ddv":"1.1.0", + "d":{ + "da": "0x7701af46018fc57c443b63e839eb24872755a2f8" + } +} +---- + +[source,js] +---- + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Scan QR-Code to authorize device + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.scanQRCodeToAuthorizeDevice(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Device is being authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +=== Execute Transaction + +* ++++++By Scanning QR-Code ++++++ + To execute transaction via device by scanning device QR-Code. + +QR-Code Sample: + +[source,json] +---- +{ + "dd":"TX", + "ddv":"1.1.0", + "d":{ + "rn":"direct transfer", + "ads":[ + "0x7701af46018fc57c443b63e839eb24872755a2f8", + "0xed09dc167a72d939ecf3d3854ad0978fb13a8fe9" + ], + "ams":[ + "1000000000000000000", + "1000000000000000000" + ], + "tid": 1140, + "o":{ + "cs":"USD", + "s": "$" + } + }, + "m":{ + "tn":"comment", + "tt":"user_to_user", + "td":"Thanks for comment" + } +} +---- + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Scan QR-Code to execute transaction + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.scanQRCodeToExecuteTransaction(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Transaction is being executed. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Transaction has been executed successfully. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +* *By Calling function* + Helper method creates session if active sessoin for transction amount is not available. +To execute transaction via helper method, xref:./OstTransactionHelper.adoc[ref here] + +== Ost Wallet UI Events and Listeners + +=== Subscribe + +Subscribe to specified event of UI Workflow + +Supported `EventName` are: + +* requestAcknowledged +* flowComplete +* flowInterrupt + +You can retrive event names from Sdk: + +[source,javascript] +---- +OstWalletSdkUI.EVENTS.requestAcknowledged +OstWalletSdkUI.EVENTS.flowComplete +OstWalletSdkUI.EVENTS.flowInterrupt +---- + +[source,javascript] +---- +/** +* Subscribes to specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.subscribe( + workflowId, + eventName, + listener, + context +) +---- + +[source,javascript] +---- +/** +* Subscribes once to specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.subscribeOnce( + workflowId, + eventName, + listener, + context +) +---- + +=== Unsubscribe + +Unsubscribes the listener from the specified event of UI Workflow. + +[source,javascript] +---- +/** +* Unsubscribes the listener from the specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.unsubscribe( + workflowId, + eventName, + listener, + context +) +---- + +=== Event Listeners + +==== Request Acknowledged Listener + +Acknowledge application about the request which is going to made by SDK. + +[source,js] +---- +/** + * Request acknowledged + * @param {Object} ostWorkflowContext - info about workflow type + * @param ostContextEntity - info about entity + * @override + */ + requestAcknowledged(ostWorkflowContext, ostContextEntity ) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- + +==== Flow Complete Listener + +[source,js] +---- +/** + * Flow complete + * @param ostWorkflowContext - workflow type + * @param ostContextEntity - status of the flow + * @override + */ + flowComplete(ostWorkflowContext, ostContextEntity ) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- + +==== Flow Interrupt Listener + +[source,js] +---- +/** + * Flow interrupt + * @param ostWorkflowContext workflow type + * @param ostError reason of interruption + * @override + */ + flowInterrupt(ostWorkflowContext, ostError) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- diff --git a/documentation/android_setup.md.adoc b/documentation/android_setup.md.adoc new file mode 100644 index 0000000..089c726 --- /dev/null +++ b/documentation/android_setup.md.adoc @@ -0,0 +1,79 @@ += Android set-up required for Ost React Native SDK +:doctype: book + +== 1. Linking the Ost React Native SDK + +=== Automatic Linking + +[source,bash] +---- +react-native link @ostdotcom/ost-wallet-sdk-react-native +---- + +=== Manual Linking + +. Open up `+./android/app/src/main/java/[...]/MainApplication.java+`. + ** Add `import com.ostwalletrnsdk.OstWalletRnSdkPackage;` to the imports at the top of the file. + ** Add `new OstWalletRnSdkPackage()` to the list returned by the `getPackages()` method +. Append the following lines to `./android/settings.gradle`: ` include ':ost-wallet-sdk-react-native' project(':ost-wallet-sdk-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/ost-wallet-sdk-react-native/android') ` +. Insert the following lines inside the dependencies block in `./android/app/build.gradle`: ``` compile project(':ost-wallet-sdk-react-native') + +== 2. Changing `minSdkVersion` in './android/build.gradle' file + +Change the `minSdkVersion` to 22 in `android/build.gradle` + +---- +android { + defaultConfig { + minSdkVersion 22 + ... + ... + ... + } +} +---- + +== 3. Create SDK configuration file + +Create file `./android/app/src/main/assets/ost-mobilesdk.json` with application specific configurations using the json below as an example + +[source,json] +---- +{ + "BLOCK_GENERATION_TIME": 3, + "PIN_MAX_RETRY_COUNT": 3, + "REQUEST_TIMEOUT_DURATION": 60, + "SESSION_BUFFER_TIME": 3600, + "PRICE_POINT_CURRENCY_SYMBOL": "USD", + "USE_SEED_PASSWORD": false +} +---- + +. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. +. PricePointTokenSymbol: This is the symbol of base currency. +So its value will be OST. +. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. +. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. +. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. +. SessionBufferTime: Buffer expiration time for session keys in seconds. +Default value is 3600 seconds. +. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. +When UseSeedPassword set to `true`, different deterministic salts are used for different keys. + +*NOTE: These configurations are MANDATORY for successful operation. +Failing to set them will significantly impact usage.* + += Debug builds with Android 9 (API level 28) + +Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. +On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. +As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. +To work-around this issues, application needs to have TrustKit as a dependency and initialize it. + +Please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/documentation/TrustKitPublickeyPinning.md[Public Key Pinning Using TrustKit] documentation. + += Next Steps + +. link:../README.md#sdk-usage[SDK Usage] +. link:../README.md#sdk-methods[SDK Methods] +. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] diff --git a/documentation/ios_setup.md.adoc b/documentation/ios_setup.md.adoc new file mode 100644 index 0000000..60ecb74 --- /dev/null +++ b/documentation/ios_setup.md.adoc @@ -0,0 +1,152 @@ += iOS setup required for OST React Native SDK +:doctype: book + +== 1. Installing https://github.com/Carthage/Carthage[Carthage] + +Get https://github.com/Carthage/Carthage[Carthage] by running following command on terminal + +[source,bash] +---- + brew install carthage +---- + +You can also choose https://github.com/Carthage/Carthage/#installing-carthage[other methods] to install https://github.com/Carthage/Carthage[Carthage] + +== 2. Downloading OST React Native SDK using Carthage + +Carthage looks at a file called `Cartfile` to determine which libraries to install. +Create a file in the `./ios` directory of your react-native project called `Cartfile` and enter the following to tell Carthage which dependencies we want: + +Add following entry in your `Cartfile` + +[source,bash] +---- + github "ostdotcom/ost-wallet-sdk-ios" == 2.3.6 +---- + +Now to actually install everything run the following in your terminal: + +[source,bash] +---- + carthage update --platform iOS +---- + +A `Cartfile.resolved` file and a `Carthage` directory will appear in the same directory where your `.xcodeproj` or `.xcworkspace` is. + +== 3. Copying the `OstWalletSdk.framework` file in your Xcode project + +Open your project in Xcode, click on the project file in the left section of the screen and scroll down to the `Linked Frameworks and Libraries` section in Xcode. + +`Carthage` folder will have the `.framework` files that we will add in Xcode project. + +Now open the `./ios/Carthage/Build/iOS` folder in Finder: + +Run this command + +[source,bash] +---- +open ios/Carthage/Build/iOS +---- + +Open application target, under General tab, drag the built `OstWalletSdk.framework` binary from `./ios/Carthage/Build/iOS` folder into Linked Frameworks and Libraries section. + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/copy-framework-file.png[copy-framework-file] + +== 4. Adding the `OstWalletSdk` dependencies in your Xcode project + +We need to add the `.framework` files of dependencies present inside `./ios/Carthage/Build/iOS`. + +Open `application targets` in Xcode. +Under `Build Phases` click `+` icon and choose `New Run Script Phase`. +Add the following command. + +[source,bash] +---- +/usr/local/bin/carthage copy-frameworks +---- + +Click the `+` under `Input Files` and add the following entry framework: + +---- +$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework +$(SRCROOT)/Carthage/Build/iOS/BigInt.framework +$(SRCROOT)/Carthage/Build/iOS/CryptoEthereumSwift.framework +$(SRCROOT)/Carthage/Build/iOS/CryptoSwift.framework +$(SRCROOT)/Carthage/Build/iOS/EthereumKit.framework +$(SRCROOT)/Carthage/Build/iOS/FMDB.framework +$(SRCROOT)/Carthage/Build/iOS/SipHash.framework +$(SRCROOT)/Carthage/Build/iOS/TrustKit.framework +$(SRCROOT)/Carthage/Build/iOS/OstWalletSdk.framework +---- + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/add-dependency-framework-files.png[copy-framework-file] + +== 5. Add additional SDK files + +Follow these steps to add additional files: + +* Click on your project, select `File > Add Files to ""` +* Browse to `./node_modules/@ostdotcom/ost-wallet-sdk-react-native/ios` +* Add the folder `ostwalletrnsdk` with following settings: + ** Destination: (uncheck) Copy items if needed + ** Added folders: (select) Create groups + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/additional-files.png[Add-image] + +== 6. Change Build Settings + +Open application target, under `Build Settings` tab, enable `Always Embed Swift Standard Libraries` under `Build Options` + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/build-options.png[Add image] + +== 7. Create SDK configuration file + +Create `OstWalletSdk.plist` file. +This file has configuration attributes used by OstWalletSdk. +You should copy paste the configuration values from below snippet. + +---- + + + + + BlockGenerationTime + 3 + PricePointTokenSymbol + OST + PricePointCurrencySymbol + USD + RequestTimeoutDuration + 30 + PinMaxRetryCount + 3 + SessionBufferTime + 3600 + UseSeedPassword + + EnableIOSDeviceRestore + + + +---- + +. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. +. PricePointTokenSymbol: This is the symbol of base currency. +So its value will be OST. +. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. +. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. +. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. +. SessionBufferTime: Buffer expiration time for session keys in seconds. +Default value is 3600 seconds. +. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. +When UseSeedPassword set to `true`, different deterministic salts are used for different keys. +. EnableIOSDeviceRestore: When EnableIOSDeviceRestore is set to `true`, After app re-installation, SDK checks for available device key in Keychain for given user id. + +*These configurations are MANDATORY for successful operation. +Failing to set them will significantly impact usage.* + += Next Steps + +. link:../README.md#sdk-usage[SDK Usage] +. link:../README.md#sdk-methods[SDK Methods] +. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] From 8d02c8f837bfc78947166b263f950f2327f7c788 Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Tue, 25 Feb 2020 00:06:28 +0100 Subject: [PATCH 07/13] updated .adoc files and nav.adoc --- README.md.adoc | 336 ----------------- docs/modules/ROOT/nav.adoc | 14 +- ...orkflows.md.adoc => OstCoreWorkflows.adoc} | 0 .../{OstJsonApi.md.adoc => OstJsonApi.adoc} | 0 ...nfig.md.adoc => OstTransactionConfig.adoc} | 0 ...lper.md.adoc => OstTransactionHelper.adoc} | 0 ...ds.md.adoc => OstWalletSdkGetMethods.adoc} | 0 ...ettings.md.adoc => OstWalletSettings.adoc} | 0 ...g.md.adoc => OstWalletSettingsConfig.adoc} | 0 .../{OstWalletUI.md.adoc => OstWalletUI.adoc} | 0 ...droid_setup.md.adoc => android-setup.adoc} | 25 +- docs/modules/ROOT/pages/index.adoc | 337 +++++++++++++++++- .../{ios_setup.md.adoc => ios-setup.adoc} | 0 13 files changed, 360 insertions(+), 352 deletions(-) delete mode 100644 README.md.adoc rename docs/modules/ROOT/pages/{OstCoreWorkflows.md.adoc => OstCoreWorkflows.adoc} (100%) rename docs/modules/ROOT/pages/{OstJsonApi.md.adoc => OstJsonApi.adoc} (100%) rename docs/modules/ROOT/pages/{OstTransactionConfig.md.adoc => OstTransactionConfig.adoc} (100%) rename docs/modules/ROOT/pages/{OstTransactionHelper.md.adoc => OstTransactionHelper.adoc} (100%) rename docs/modules/ROOT/pages/{OstWalletSdkGetMethods.md.adoc => OstWalletSdkGetMethods.adoc} (100%) rename docs/modules/ROOT/pages/{OstWalletSettings.md.adoc => OstWalletSettings.adoc} (100%) rename docs/modules/ROOT/pages/{OstWalletSettingsConfig.md.adoc => OstWalletSettingsConfig.adoc} (100%) rename docs/modules/ROOT/pages/{OstWalletUI.md.adoc => OstWalletUI.adoc} (100%) rename docs/modules/ROOT/pages/{android_setup.md.adoc => android-setup.adoc} (73%) rename docs/modules/ROOT/pages/{ios_setup.md.adoc => ios-setup.adoc} (100%) diff --git a/README.md.adoc b/README.md.adoc deleted file mode 100644 index 1e70145..0000000 --- a/README.md.adoc +++ /dev/null @@ -1,336 +0,0 @@ -= Ost Wallet SDK React Native - -== Introduction - -Ost React Native Wallet SDK is the official Ost Wallet SDK for react-native platform. -The SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. - -Ost React Native Wallet SDK... - -* Safely generates and stores keys on the user's mobile device -* Signs ethereum transactions and data as defined by contracts using EIP-1077 -* Enables users to recover access to their Brand Tokens in case the user loses their authorized device - -== Table of Contents - -* <> -* <> -* <> - ** <> - ** <> - ** <> -* <> -* <> -* <> - ** <> - *** <> - *** <> - *** <> - ** <> - *** <> - *** <> - *** <> - ** <> - *** <> - ** <> - *** <> -* <> -* <> -* <> - ** <> - ** <> - -== Installing React-native SDK - -. Install React Native and create a react-native project - -Follow this https://facebook.github.io/react-native/docs/0.59/getting-started[official react-native getting started guide] to install react native and create a react-native project - -. Install Ost React Native SDK in your project The sdk needs following peer dependencies: - ** https://www.npmjs.com/package/eventemitter3[eventemitter3] - ** https://www.npmjs.com/package/lodash.merge[lodash.merge] - ** https://www.npmjs.com/package/bignumber.js[bignumber.js] - -[source,bash] ----- - npm install --save lodash.merge - npm install --save eventemitter3 - npm install --save bignumber.js ----- - -Run following command in your react-native project root - -[source,bash] ----- - npm install --save @ostdotcom/ost-wallet-sdk-react-native ----- - -. Linking the Ost React Native SDK with your project - -[source,bash] ----- - react-native link @ostdotcom/ost-wallet-sdk-react-native ----- - -. xref:./documentation/android_setup.adoc[Android set-up for Ost React Native SDK] -. xref:./documentation/ios_setup.adoc[iOS Set-up for Ost React Native SDK] - -== Migrating to another version - -If you decide to change the SDK version, please make sure to update the downsteam native SDKs. - -For Android, please run: - -[source,shell] ----- -react-native link -react-native run-android ----- - -For iOS, please update the `ios/Cartfile` with desired version and run: - -[source,shell] ----- -carthage update --cache-builds --platform ios ----- - -After updating the SDK, please delete `ostwalletrnsdk` using the *Remove References* option and add it back by following link:./documentation/ios_setup.md#5-add-additional-sdk-files[this step]. - -== SDK Usage - -* Initialize the SDK -* Subscribe to events -* Implement `OstWalletWorkFlowCallback` for a workflow -* Execute workflow - -=== Initializing the SDK - -You must initialize the SDK before using it. - -____ -Initialize the SDK in using BASE_URL (Ost Platform endpoint) inside App.js `constructor()` method. -____ - -[source,javascript] ----- -/** - * Initialize wallet sdk - * @param {String} endpoint - Ost Platform endpoint - * @param {function} Callback function with error and success status. - * @public - */ - OstWalletSdk.initialize( endpoint, - (error, success) => {}) ----- - -=== Initializing SDK With Config - -Starting version `2.3.1` application can also pass SDK config in the initialize method - -____ -If config is passed in `initialize` method, the configs specified in `OstWalletSdk.plist` and `ost-mobilesdk.json` are ignored. -It is no longer mandatory to define `ost-mobilesdk.json` and `OstWalletSdk.plist` files. -____ - -[source,javascript] ----- - let sdkConfig = { - "BLOCK_GENERATION_TIME": 3, - "PIN_MAX_RETRY_COUNT": 3, - "REQUEST_TIMEOUT_DURATION": 60, - "SESSION_BUFFER_TIME": 3600, - "PRICE_POINT_CURRENCY_SYMBOL": "USD", - "USE_SEED_PASSWORD": false, - "NO_OF_SESSIONS_ON_ACTIVATE_USER": 1, - "ENABLE_IOS_DEVICE_RESTORE": false - }; - - /** - * Initialize wallet sdk - * @param {String} endpoint - Ost Platform endpoint - * @param {Object} config (optional) - SDK Config. Supported from version 2.3.1 - * @param {function} callback - A typical node-style, error-first callback. - * @callback params {Object}error , {Boolean} success - * @public - */ - OstWalletSdk.initialize( endpoint, sdkConfig, (error, success) => { - - }); ----- - -=== Subscribe to `OstWalletSdkEvents` in your top most level component - -In the most top level component (mostly `App.js`) import like this: - -[source,javascript] ----- -import { OstWalletSdkEvents, OstWalletSdk, OstWalletSdkUI, OstJsonApi } from '@ostdotcom/ost-wallet-sdk-react-native'; ----- - -In `componentDidMount()` subscribe to OstWalletSdkEvents and in `componentWillUnmount()` unsubscribe to OstWalletSdkEvents. -Also initialize the SDK in using BASE_URL (Ost Platform endpoint) `constructor()` method: - -[source,javascript] ----- -class App extends Component { - - constructor() { - super(); - OstWalletSdk.initialize(BASE_URL, (error, success) => { - if(error) { - console.warn(error); - } - else { - console.warn(success); - } - - }); - } - - componentDidMount() { - OstWalletSdkEvents.subscribeEvent(); - } - - componentWillUnmount() { - OstWalletSdkEvents.unsubscribeEvent(); - } - -} ----- - -== Getter Methods - -The SDK provides getter methods that applications can use for various purposes. -These methods provide the application with data as available in the device's database. -Please refer to xref:./documentation/OstWalletSdkGetMethods.adoc[Ost Wallet SDK Getter Methods] for documentation. - -== Ost JSON APIs - -While the getter methods provide application with data stored in device's database, the JSON API methods make API calls to Ost Platform servers. -Please refer to xref:./documentation/OstJsonApi.adoc[Ost JSON API] for documentation. - -== Quick Start Guide - Ost Macro Workflows - -Starting version 2.3.12-beta.1, developers can enable all the Ost wallet features implementing the Ost Macro Workflows. - -=== 1. Setup Device Core Workflow - -''' - -The setup device workflow establishes trust between the device and Ost Platform. -As application is responsible for user authentication, application servers must facilitate this workflow using the server side sdk. - -==== Workflow Details - -* When this workflow is initiated by the application, the Sdk creates the following keys: - ** API key - the key used to sign API requests sent to Ost Platform from the sdk. - ** Device key - the user's wallet device key. -All device manager operations shall be performed using this key. -* The Sdk asks the application to register the device entity with Ost Platform. -* The application must send the device entity to the application server. -* The application server must then use the server side sdk to register the device with Ost Plaform by using device service's create device Api. -* Once the device is registered by the Ost Platform, the application server must send the response to the mobile application. -* The mobile application must then use the `deviceRegistered` callbacks to provide the response to the Sdk. -* The sdk validates the registration by making Api calls to the Ost Plaform. - -image::./documentation/images/setup_device_workflow.svg[] - -==== Notes - -* Setup device workflow must be initiated *on every app launch*. -* Setup device workflow must be initiated only *after the user has been autheniticated* by the application, including cookie based authentication for already logged-in users. -* Each of user's device creates its own API key and device key. -* User's Device and API keys are not shared across devices. -* User's API key & device key are stored in persistent storage on the device and created only if needed. -* The Sdk shall request for device registration only when needed. -`registerDevice` shall not be invoked if device is already authorized and sdk is able to make Api calls to Ost Platform. - -==== Implementation - -Please refer to link:./documentation/OstCoreWorkflows.md#setupdevice[`setupDevice` core workflow documentation] for implementation details. - -=== 2. Activate User UI Workflow - -''' - -Activate User workflow deploys user's wallet on the blockchain and whitelists the user's wallet and enables it to take part in application's brand token economy. - -==== Blockchain Transactions Performed During Activate User Workflow - -* Deploys user's contracts - ** Device-manager and token-holder contracts - ** Set user's recovery key address, device key address in device-manager contract - ** Authorizes session key(s) in token-holder contract -* Whitelists user's contract in UBT (Utility Brand Token Contract). - -==== Recovery Key Generation Using 6 Digit Pin - -* User's recovery key is generated using https://en.bitcoinwiki.org/wiki/Scrypt[SCrypt], a password-based key derivation function. -* The '`password`' provided to this function is a string created by concatenating: -* A prefix provided by application server. -+ -____ -Application server must generate and store prefix for each user, treat it as sensitive and immutable information. -____ - -* User's PIN -* User's Ost-id -* The salt required for SCrypt is provided by Ost Platform - -==== Implementation - -Please refer to link:./documentation/OstWalletUI.md#activate-user[Activate User UI Workflow Documentation] for implementation details. - -=== 3. Wallet Settings UI Component - -''' - -OstWallet Settings is a pre-built UI component available exclusively available in `ost-wallet-sdk-react-native` SDK. -It is a wallet settings page that can be used by end-users to perfrom 12 different wallet operations and view their wallet details. - -____ -*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. -____ - -==== Implementation - -Please refer to xref:./documentation/OstWalletSettings.adoc[OstWallet Settings Documentation] for implementation details. - -=== 4. OstvTransaction Helper - Transaction and Add Session Integrated Workflow - -''' - -`OstTransactionHelper` is a transaction helper provided by the SDK that creates session keys before performing a transaction if needed. -App developers can configure the session creation parameters (session buckets) as per application's need. - -==== Implementation - -Please refer to xref:./documentation/OstTransactionHelper.adoc[Ost Transaction Helper Documentation] for implementation details. - -== Intermediate Usage - Ost Wallet SDK UI - -For quick and easy integration with SDK, developers can use built-in user-interface components which are configurable and support content and theme customization. - -Please refer to xref:./documentation/OstWalletUI.adoc[Ost Wallet SDK UI] for documentation. - -== Advance Usage - Ost Wallet Core Workflow APIs - -Ost core workflows API do not use any UI components, thereby giving complete ux control to the developers. -The xref:./documentation/OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost core workflows. - -Please refer to xref:./documentation/OstCoreWorkflows.adoc[Ost Core Workflow APIs] for documentation. - -== Known Issues - -=== Sdk Initialization Fails on Android 9 (API level 28) - -Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. -On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. -As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. -To work-around this issues, application needs to have TrustKit as a dependency and initialize it. - -=== Setup Device Workflow Fails on iOS-13 Simulator - -Ost Wallet Sdk uses iOS's https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain[Keychain] to store user's cryptographic keys. -Unfortunately, Keychain doesn't work as expected on iOS-13 Simulators. -We request you to kindly test your application on actual iOS-13 device while we continue to look for a workaround. diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 4e37921..4aa94aa 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -1,2 +1,12 @@ -* xref:index.adoc[OverviewX] -* xref:android_setup.md.adoc[Android Setup] +* xref:index.adoc[Overview] +* xref:android-setup.adoc[Android Setup] +* xref:ios-setup.adoc[iOS Setup] +* xref:OstCoreWorkflows.adoc[Ost Core Workflows] +* xref:OstWalletSettings.adoc[Ost Wallet Settings] +* xref:OstWalletSettingsConfig.adoc[Ost Wallet Settings Config] +* xref:OstWalletUI.adoc[Ost Wallet UI] +* xref:OstTransactionHelper.adoc[Ost Transaction Helper] +* xref:OstTransactionConfig.adoc[Ost Transaction Config] +* xref:OstWalletSdkGetMethods.adoc[Ost Wallet SDK Get Methods] +* xref:OstJsonAPI.adoc[Ost JSON API] + diff --git a/docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc b/docs/modules/ROOT/pages/OstCoreWorkflows.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc rename to docs/modules/ROOT/pages/OstCoreWorkflows.adoc diff --git a/docs/modules/ROOT/pages/OstJsonApi.md.adoc b/docs/modules/ROOT/pages/OstJsonApi.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstJsonApi.md.adoc rename to docs/modules/ROOT/pages/OstJsonApi.adoc diff --git a/docs/modules/ROOT/pages/OstTransactionConfig.md.adoc b/docs/modules/ROOT/pages/OstTransactionConfig.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstTransactionConfig.md.adoc rename to docs/modules/ROOT/pages/OstTransactionConfig.adoc diff --git a/docs/modules/ROOT/pages/OstTransactionHelper.md.adoc b/docs/modules/ROOT/pages/OstTransactionHelper.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstTransactionHelper.md.adoc rename to docs/modules/ROOT/pages/OstTransactionHelper.adoc diff --git a/docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc b/docs/modules/ROOT/pages/OstWalletSdkGetMethods.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc rename to docs/modules/ROOT/pages/OstWalletSdkGetMethods.adoc diff --git a/docs/modules/ROOT/pages/OstWalletSettings.md.adoc b/docs/modules/ROOT/pages/OstWalletSettings.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstWalletSettings.md.adoc rename to docs/modules/ROOT/pages/OstWalletSettings.adoc diff --git a/docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc b/docs/modules/ROOT/pages/OstWalletSettingsConfig.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc rename to docs/modules/ROOT/pages/OstWalletSettingsConfig.adoc diff --git a/docs/modules/ROOT/pages/OstWalletUI.md.adoc b/docs/modules/ROOT/pages/OstWalletUI.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstWalletUI.md.adoc rename to docs/modules/ROOT/pages/OstWalletUI.adoc diff --git a/docs/modules/ROOT/pages/android_setup.md.adoc b/docs/modules/ROOT/pages/android-setup.adoc similarity index 73% rename from docs/modules/ROOT/pages/android_setup.md.adoc rename to docs/modules/ROOT/pages/android-setup.adoc index 089c726..c203215 100644 --- a/docs/modules/ROOT/pages/android_setup.md.adoc +++ b/docs/modules/ROOT/pages/android-setup.adoc @@ -1,5 +1,4 @@ = Android set-up required for Ost React Native SDK -:doctype: book == 1. Linking the Ost React Native SDK @@ -12,16 +11,17 @@ react-native link @ostdotcom/ost-wallet-sdk-react-native === Manual Linking -. Open up `+./android/app/src/main/java/[...]/MainApplication.java+`. - ** Add `import com.ostwalletrnsdk.OstWalletRnSdkPackage;` to the imports at the top of the file. - ** Add `new OstWalletRnSdkPackage()` to the list returned by the `getPackages()` method -. Append the following lines to `./android/settings.gradle`: ` include ':ost-wallet-sdk-react-native' project(':ost-wallet-sdk-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/ost-wallet-sdk-react-native/android') ` -. Insert the following lines inside the dependencies block in `./android/app/build.gradle`: ``` compile project(':ost-wallet-sdk-react-native') +. Open `+./android/app/src/main/java/[...]/MainApplication.java+` +. Add `import com.ostwalletrnsdk.OstWalletRnSdkPackage;` to the imports at the top of the file. +. Add `new OstWalletRnSdkPackage()` to the list returned by the `getPackages()` method +. Append the following lines to `./android/settings.gradle`: `include ':ost-wallet-sdk-react-native' project(':ost-wallet-sdk-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/ost-wallet-sdk-react-native/android')` +. Insert the following lines inside the dependencies block in `./android/app/build.gradle`: compile project(':ost-wallet-sdk-react-native') == 2. Changing `minSdkVersion` in './android/build.gradle' file Change the `minSdkVersion` to 22 in `android/build.gradle` +[source,json] ---- android { defaultConfig { @@ -35,7 +35,7 @@ android { == 3. Create SDK configuration file -Create file `./android/app/src/main/assets/ost-mobilesdk.json` with application specific configurations using the json below as an example +Create file `./android/app/src/main/assets/ost-mobilesdk.json` with application specific configurations using the json below as an example [source,json] ---- @@ -50,8 +50,7 @@ Create file `./android/app/src/main/assets/ost-mobilesdk.json` with application ---- . BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. -. PricePointTokenSymbol: This is the symbol of base currency. -So its value will be OST. +. PricePointTokenSymbol: This is the symbol of base currency. So its value will be OST. . PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. . RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. . PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. @@ -66,14 +65,16 @@ Failing to set them will significantly impact usage.* = Debug builds with Android 9 (API level 28) Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. + On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. + To work-around this issues, application needs to have TrustKit as a dependency and initialize it. Please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/documentation/TrustKitPublickeyPinning.md[Public Key Pinning Using TrustKit] documentation. = Next Steps -. link:../README.md#sdk-usage[SDK Usage] -. link:../README.md#sdk-methods[SDK Methods] -. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] +. link:index.adoc#sdk-usage[SDK Usage] +. link:index.adoc#sdk-methods[SDK Methods] +. link:index.adoc#sdk-workflow-callbacks[SDK Callbacks] \ No newline at end of file diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index de94c79..1e70145 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -1,3 +1,336 @@ -This is the index.adoc page for OST-WALLET-SDK-REACT-NATIVE += Ost Wallet SDK React Native -This is a test :) \ No newline at end of file +== Introduction + +Ost React Native Wallet SDK is the official Ost Wallet SDK for react-native platform. +The SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. + +Ost React Native Wallet SDK... + +* Safely generates and stores keys on the user's mobile device +* Signs ethereum transactions and data as defined by contracts using EIP-1077 +* Enables users to recover access to their Brand Tokens in case the user loses their authorized device + +== Table of Contents + +* <> +* <> +* <> + ** <> + ** <> + ** <> +* <> +* <> +* <> + ** <> + *** <> + *** <> + *** <> + ** <> + *** <> + *** <> + *** <> + ** <> + *** <> + ** <> + *** <> +* <> +* <> +* <> + ** <> + ** <> + +== Installing React-native SDK + +. Install React Native and create a react-native project + +Follow this https://facebook.github.io/react-native/docs/0.59/getting-started[official react-native getting started guide] to install react native and create a react-native project + +. Install Ost React Native SDK in your project The sdk needs following peer dependencies: + ** https://www.npmjs.com/package/eventemitter3[eventemitter3] + ** https://www.npmjs.com/package/lodash.merge[lodash.merge] + ** https://www.npmjs.com/package/bignumber.js[bignumber.js] + +[source,bash] +---- + npm install --save lodash.merge + npm install --save eventemitter3 + npm install --save bignumber.js +---- + +Run following command in your react-native project root + +[source,bash] +---- + npm install --save @ostdotcom/ost-wallet-sdk-react-native +---- + +. Linking the Ost React Native SDK with your project + +[source,bash] +---- + react-native link @ostdotcom/ost-wallet-sdk-react-native +---- + +. xref:./documentation/android_setup.adoc[Android set-up for Ost React Native SDK] +. xref:./documentation/ios_setup.adoc[iOS Set-up for Ost React Native SDK] + +== Migrating to another version + +If you decide to change the SDK version, please make sure to update the downsteam native SDKs. + +For Android, please run: + +[source,shell] +---- +react-native link +react-native run-android +---- + +For iOS, please update the `ios/Cartfile` with desired version and run: + +[source,shell] +---- +carthage update --cache-builds --platform ios +---- + +After updating the SDK, please delete `ostwalletrnsdk` using the *Remove References* option and add it back by following link:./documentation/ios_setup.md#5-add-additional-sdk-files[this step]. + +== SDK Usage + +* Initialize the SDK +* Subscribe to events +* Implement `OstWalletWorkFlowCallback` for a workflow +* Execute workflow + +=== Initializing the SDK + +You must initialize the SDK before using it. + +____ +Initialize the SDK in using BASE_URL (Ost Platform endpoint) inside App.js `constructor()` method. +____ + +[source,javascript] +---- +/** + * Initialize wallet sdk + * @param {String} endpoint - Ost Platform endpoint + * @param {function} Callback function with error and success status. + * @public + */ + OstWalletSdk.initialize( endpoint, + (error, success) => {}) +---- + +=== Initializing SDK With Config + +Starting version `2.3.1` application can also pass SDK config in the initialize method + +____ +If config is passed in `initialize` method, the configs specified in `OstWalletSdk.plist` and `ost-mobilesdk.json` are ignored. +It is no longer mandatory to define `ost-mobilesdk.json` and `OstWalletSdk.plist` files. +____ + +[source,javascript] +---- + let sdkConfig = { + "BLOCK_GENERATION_TIME": 3, + "PIN_MAX_RETRY_COUNT": 3, + "REQUEST_TIMEOUT_DURATION": 60, + "SESSION_BUFFER_TIME": 3600, + "PRICE_POINT_CURRENCY_SYMBOL": "USD", + "USE_SEED_PASSWORD": false, + "NO_OF_SESSIONS_ON_ACTIVATE_USER": 1, + "ENABLE_IOS_DEVICE_RESTORE": false + }; + + /** + * Initialize wallet sdk + * @param {String} endpoint - Ost Platform endpoint + * @param {Object} config (optional) - SDK Config. Supported from version 2.3.1 + * @param {function} callback - A typical node-style, error-first callback. + * @callback params {Object}error , {Boolean} success + * @public + */ + OstWalletSdk.initialize( endpoint, sdkConfig, (error, success) => { + + }); +---- + +=== Subscribe to `OstWalletSdkEvents` in your top most level component + +In the most top level component (mostly `App.js`) import like this: + +[source,javascript] +---- +import { OstWalletSdkEvents, OstWalletSdk, OstWalletSdkUI, OstJsonApi } from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +In `componentDidMount()` subscribe to OstWalletSdkEvents and in `componentWillUnmount()` unsubscribe to OstWalletSdkEvents. +Also initialize the SDK in using BASE_URL (Ost Platform endpoint) `constructor()` method: + +[source,javascript] +---- +class App extends Component { + + constructor() { + super(); + OstWalletSdk.initialize(BASE_URL, (error, success) => { + if(error) { + console.warn(error); + } + else { + console.warn(success); + } + + }); + } + + componentDidMount() { + OstWalletSdkEvents.subscribeEvent(); + } + + componentWillUnmount() { + OstWalletSdkEvents.unsubscribeEvent(); + } + +} +---- + +== Getter Methods + +The SDK provides getter methods that applications can use for various purposes. +These methods provide the application with data as available in the device's database. +Please refer to xref:./documentation/OstWalletSdkGetMethods.adoc[Ost Wallet SDK Getter Methods] for documentation. + +== Ost JSON APIs + +While the getter methods provide application with data stored in device's database, the JSON API methods make API calls to Ost Platform servers. +Please refer to xref:./documentation/OstJsonApi.adoc[Ost JSON API] for documentation. + +== Quick Start Guide - Ost Macro Workflows + +Starting version 2.3.12-beta.1, developers can enable all the Ost wallet features implementing the Ost Macro Workflows. + +=== 1. Setup Device Core Workflow + +''' + +The setup device workflow establishes trust between the device and Ost Platform. +As application is responsible for user authentication, application servers must facilitate this workflow using the server side sdk. + +==== Workflow Details + +* When this workflow is initiated by the application, the Sdk creates the following keys: + ** API key - the key used to sign API requests sent to Ost Platform from the sdk. + ** Device key - the user's wallet device key. +All device manager operations shall be performed using this key. +* The Sdk asks the application to register the device entity with Ost Platform. +* The application must send the device entity to the application server. +* The application server must then use the server side sdk to register the device with Ost Plaform by using device service's create device Api. +* Once the device is registered by the Ost Platform, the application server must send the response to the mobile application. +* The mobile application must then use the `deviceRegistered` callbacks to provide the response to the Sdk. +* The sdk validates the registration by making Api calls to the Ost Plaform. + +image::./documentation/images/setup_device_workflow.svg[] + +==== Notes + +* Setup device workflow must be initiated *on every app launch*. +* Setup device workflow must be initiated only *after the user has been autheniticated* by the application, including cookie based authentication for already logged-in users. +* Each of user's device creates its own API key and device key. +* User's Device and API keys are not shared across devices. +* User's API key & device key are stored in persistent storage on the device and created only if needed. +* The Sdk shall request for device registration only when needed. +`registerDevice` shall not be invoked if device is already authorized and sdk is able to make Api calls to Ost Platform. + +==== Implementation + +Please refer to link:./documentation/OstCoreWorkflows.md#setupdevice[`setupDevice` core workflow documentation] for implementation details. + +=== 2. Activate User UI Workflow + +''' + +Activate User workflow deploys user's wallet on the blockchain and whitelists the user's wallet and enables it to take part in application's brand token economy. + +==== Blockchain Transactions Performed During Activate User Workflow + +* Deploys user's contracts + ** Device-manager and token-holder contracts + ** Set user's recovery key address, device key address in device-manager contract + ** Authorizes session key(s) in token-holder contract +* Whitelists user's contract in UBT (Utility Brand Token Contract). + +==== Recovery Key Generation Using 6 Digit Pin + +* User's recovery key is generated using https://en.bitcoinwiki.org/wiki/Scrypt[SCrypt], a password-based key derivation function. +* The '`password`' provided to this function is a string created by concatenating: +* A prefix provided by application server. ++ +____ +Application server must generate and store prefix for each user, treat it as sensitive and immutable information. +____ + +* User's PIN +* User's Ost-id +* The salt required for SCrypt is provided by Ost Platform + +==== Implementation + +Please refer to link:./documentation/OstWalletUI.md#activate-user[Activate User UI Workflow Documentation] for implementation details. + +=== 3. Wallet Settings UI Component + +''' + +OstWallet Settings is a pre-built UI component available exclusively available in `ost-wallet-sdk-react-native` SDK. +It is a wallet settings page that can be used by end-users to perfrom 12 different wallet operations and view their wallet details. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +==== Implementation + +Please refer to xref:./documentation/OstWalletSettings.adoc[OstWallet Settings Documentation] for implementation details. + +=== 4. OstvTransaction Helper - Transaction and Add Session Integrated Workflow + +''' + +`OstTransactionHelper` is a transaction helper provided by the SDK that creates session keys before performing a transaction if needed. +App developers can configure the session creation parameters (session buckets) as per application's need. + +==== Implementation + +Please refer to xref:./documentation/OstTransactionHelper.adoc[Ost Transaction Helper Documentation] for implementation details. + +== Intermediate Usage - Ost Wallet SDK UI + +For quick and easy integration with SDK, developers can use built-in user-interface components which are configurable and support content and theme customization. + +Please refer to xref:./documentation/OstWalletUI.adoc[Ost Wallet SDK UI] for documentation. + +== Advance Usage - Ost Wallet Core Workflow APIs + +Ost core workflows API do not use any UI components, thereby giving complete ux control to the developers. +The xref:./documentation/OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost core workflows. + +Please refer to xref:./documentation/OstCoreWorkflows.adoc[Ost Core Workflow APIs] for documentation. + +== Known Issues + +=== Sdk Initialization Fails on Android 9 (API level 28) + +Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. +On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. +As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. +To work-around this issues, application needs to have TrustKit as a dependency and initialize it. + +=== Setup Device Workflow Fails on iOS-13 Simulator + +Ost Wallet Sdk uses iOS's https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain[Keychain] to store user's cryptographic keys. +Unfortunately, Keychain doesn't work as expected on iOS-13 Simulators. +We request you to kindly test your application on actual iOS-13 device while we continue to look for a workaround. diff --git a/docs/modules/ROOT/pages/ios_setup.md.adoc b/docs/modules/ROOT/pages/ios-setup.adoc similarity index 100% rename from docs/modules/ROOT/pages/ios_setup.md.adoc rename to docs/modules/ROOT/pages/ios-setup.adoc From 840d4c539de05d7ac2343752a2d3e9e79d296401 Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Tue, 25 Feb 2020 00:09:33 +0100 Subject: [PATCH 08/13] fixed minor formatting errors --- docs/modules/ROOT/pages/android-setup.adoc | 1 + docs/modules/ROOT/pages/ios-setup.adoc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/modules/ROOT/pages/android-setup.adoc b/docs/modules/ROOT/pages/android-setup.adoc index c203215..24244c2 100644 --- a/docs/modules/ROOT/pages/android-setup.adoc +++ b/docs/modules/ROOT/pages/android-setup.adoc @@ -1,4 +1,5 @@ = Android set-up required for Ost React Native SDK +:doctype: book == 1. Linking the Ost React Native SDK diff --git a/docs/modules/ROOT/pages/ios-setup.adoc b/docs/modules/ROOT/pages/ios-setup.adoc index 60ecb74..1a930e6 100644 --- a/docs/modules/ROOT/pages/ios-setup.adoc +++ b/docs/modules/ROOT/pages/ios-setup.adoc @@ -149,4 +149,4 @@ Failing to set them will significantly impact usage.* . link:../README.md#sdk-usage[SDK Usage] . link:../README.md#sdk-methods[SDK Methods] -. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] +. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] \ No newline at end of file From 3b7b3f11cc397fa8afd5303ca9bc2661020d6dea Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Tue, 25 Feb 2020 00:13:09 +0100 Subject: [PATCH 09/13] fixed minor errors --- docs/modules/ROOT/pages/android-setup.adoc | 8 +------- docs/modules/ROOT/pages/ios-setup.adoc | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/docs/modules/ROOT/pages/android-setup.adoc b/docs/modules/ROOT/pages/android-setup.adoc index 24244c2..8625342 100644 --- a/docs/modules/ROOT/pages/android-setup.adoc +++ b/docs/modules/ROOT/pages/android-setup.adoc @@ -72,10 +72,4 @@ As TrustKit can only be inititialized with application's https://developer.andro To work-around this issues, application needs to have TrustKit as a dependency and initialize it. -Please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/documentation/TrustKitPublickeyPinning.md[Public Key Pinning Using TrustKit] documentation. - -= Next Steps - -. link:index.adoc#sdk-usage[SDK Usage] -. link:index.adoc#sdk-methods[SDK Methods] -. link:index.adoc#sdk-workflow-callbacks[SDK Callbacks] \ No newline at end of file +Please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/documentation/TrustKitPublickeyPinning.md[Public Key Pinning Using TrustKit] documentation. \ No newline at end of file diff --git a/docs/modules/ROOT/pages/ios-setup.adoc b/docs/modules/ROOT/pages/ios-setup.adoc index 1a930e6..aa426cd 100644 --- a/docs/modules/ROOT/pages/ios-setup.adoc +++ b/docs/modules/ROOT/pages/ios-setup.adoc @@ -143,10 +143,4 @@ When UseSeedPassword set to `true`, different deterministic salts are used for d . EnableIOSDeviceRestore: When EnableIOSDeviceRestore is set to `true`, After app re-installation, SDK checks for available device key in Keychain for given user id. *These configurations are MANDATORY for successful operation. -Failing to set them will significantly impact usage.* - -= Next Steps - -. link:../README.md#sdk-usage[SDK Usage] -. link:../README.md#sdk-methods[SDK Methods] -. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] \ No newline at end of file +Failing to set them will significantly impact usage.* \ No newline at end of file From 0b52ba8a2c836bb8fdf7e93293696ad7710b7669 Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Wed, 11 Mar 2020 17:29:21 +0100 Subject: [PATCH 10/13] undoing previous changes... so that I can merge antora-docs into develop --- docs/modules/ROOT/pages/OstCoreWorkflows.adoc | 624 ------------- docs/modules/ROOT/pages/OstJsonApi.adoc | 615 ------------- .../ROOT/pages/OstTransactionConfig.adoc | 46 - .../ROOT/pages/OstTransactionHelper.adoc | 94 -- .../ROOT/pages/OstWalletSdkGetMethods.adoc | 395 -------- .../modules/ROOT/pages/OstWalletSettings.adoc | 78 -- .../ROOT/pages/OstWalletSettingsConfig.adoc | 121 --- docs/modules/ROOT/pages/OstWalletUI.adoc | 842 ------------------ docs/modules/ROOT/pages/android-setup.adoc | 75 -- docs/modules/ROOT/pages/ios-setup.adoc | 146 --- documentation/OstCoreWorkflows.md.adoc | 624 ------------- documentation/OstJsonApi.md.adoc | 615 ------------- documentation/OstTransactionConfig.md.adoc | 46 - documentation/OstTransactionHelper.md.adoc | 94 -- documentation/OstWalletSdkGetMethods.md.adoc | 395 -------- documentation/OstWalletSettings.md.adoc | 78 -- documentation/OstWalletSettingsConfig.md.adoc | 121 --- documentation/OstWalletUI.md.adoc | 842 ------------------ documentation/android_setup.md.adoc | 79 -- documentation/ios_setup.md.adoc | 152 ---- 20 files changed, 6082 deletions(-) delete mode 100644 docs/modules/ROOT/pages/OstCoreWorkflows.adoc delete mode 100644 docs/modules/ROOT/pages/OstJsonApi.adoc delete mode 100644 docs/modules/ROOT/pages/OstTransactionConfig.adoc delete mode 100644 docs/modules/ROOT/pages/OstTransactionHelper.adoc delete mode 100644 docs/modules/ROOT/pages/OstWalletSdkGetMethods.adoc delete mode 100644 docs/modules/ROOT/pages/OstWalletSettings.adoc delete mode 100644 docs/modules/ROOT/pages/OstWalletSettingsConfig.adoc delete mode 100644 docs/modules/ROOT/pages/OstWalletUI.adoc delete mode 100644 docs/modules/ROOT/pages/android-setup.adoc delete mode 100644 docs/modules/ROOT/pages/ios-setup.adoc delete mode 100644 documentation/OstCoreWorkflows.md.adoc delete mode 100644 documentation/OstJsonApi.md.adoc delete mode 100644 documentation/OstTransactionConfig.md.adoc delete mode 100644 documentation/OstTransactionHelper.md.adoc delete mode 100644 documentation/OstWalletSdkGetMethods.md.adoc delete mode 100644 documentation/OstWalletSettings.md.adoc delete mode 100644 documentation/OstWalletSettingsConfig.md.adoc delete mode 100644 documentation/OstWalletUI.md.adoc delete mode 100644 documentation/android_setup.md.adoc delete mode 100644 documentation/ios_setup.md.adoc diff --git a/docs/modules/ROOT/pages/OstCoreWorkflows.adoc b/docs/modules/ROOT/pages/OstCoreWorkflows.adoc deleted file mode 100644 index 4a8bcf2..0000000 --- a/docs/modules/ROOT/pages/OstCoreWorkflows.adoc +++ /dev/null @@ -1,624 +0,0 @@ -= Ost Core Workflow APIs - -Ost core workflows api do not use any UI components, thereby giving complete control to the developers. -The xref:./OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost Core Workflows. - -== Table of Contents - -* <> -* <> - ** <> - ** <> - ** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> -* <> - ** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - ** <> - -== Import the OstWalletSdk - -To use the core workflow APIs, import the `OstWalletSdk` from '@ostdotcom/ost-wallet-sdk-react-native'. - -[source,javascript] ----- -import {OstWalletSdk} from '@ostdotcom/ost-wallet-sdk-react-native'; ----- - -== Create Workflow Callback - -The core workflows communicates with the application using callbacks. -A base callback class `OstWalletWorkFlowCallback` is given as a part of the SDK. -The base callback class gives only declaration of callback functions. -A detailed overview of callback functions is available in the later part of this readme. - -=== OstWalletWorkFlowCallback Interface - -[source,javascript] ----- -import { OstWalletWorkFlowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; - -class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { - constructor() { - super(); - } - - registerDevice(apiParams, ostDeviceRegistered) {} - - getPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} - - invalidPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} - - pinValidated(ostWorkflowContext, ostContextEntity) {} - - flowComplete( ostWorkflowContext, ostContextEntity ) {} - - flowInterrupt(ostWorkflowContext, ostError ) {} - - requestAcknowledged(ostWorkflowContext, ostContextEntity) {} - - verifyData(ostWorkflowContext, ostContextEntity, ostVerifyData) {} -} - -export default OstWalletSdkCallbackImplementation; ----- - -*Developers are expected to implement a new class for each workflow.* - -=== An example of callback implementation - -[source,javascript] ----- - -import {OstWalletWorkFlowCallback} from '@ostdotcom/ost-wallet-sdk-react-native'; - -class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { - constructor() { - super(); - } - - flowComplete(ostWorkflowContext , ostContextEntity) { - console.log('flowComplete ostWorkflowContext', ostWorkflowContext, "ostContextEntity- ", ostContextEntity); - if(Actions.currentScene !== "HomePage"){ - Actions.popTo("HomePage"); - } - if(ostWorkflowContext){ - let wfType = ostWorkflowContext.WORKFLOW_TYPE; - if( wfType !== "SETUP_DEVICE") { - Alert.alert(`${wfType} Complete!`); - } - } - store.dispatch(setLoading(false)); - } - - flowInterrupt(ostWorkflowContext , ostError) { - console.log('flowInterrupt ostWorkflowContext', ostWorkflowContext , "ostError" , ostError ); - if (ostError) { - let displayError = ostError.getErrorMessage(), - apiError, errorData; - if(ostError.isApiError()){ - apiError = ostError.getApiErrorMessage(); - if(apiError && apiError.includes('err.error_data')){ - apiError = ''; - } - errorData = ostError.getApiErrorData(); - if(errorData && errorData.length > 0){ - for(let i=0; i} tokenHolderAddresses - Token holder addresses of amount receiver. - * @param {Array} amounts -Amounts corresponding to tokenHolderAddresses to be transfered - * @param {String} ruleName - Rule name to be executed. - * @param {object} meta - additional data. - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - - OstWalletSdk.executeTransaction( userId, - tokenHolderAddresses, - amounts, - ruleName, - meta, - workflow) ----- - -==== getDeviceMnemonics - -The mnemonic phrase represents a human-readable way to authorize a new device. -This phrase is 12 words long. - -[source,javascript] ----- -/** - * Get Device mnemonics - * @param {String} userId - Ost User id - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.getDeviceMnemonics( userId, - workflow) ----- - -==== authorizeCurrentDeviceWithMnemonics - -A user that has stored their mnemonic phrase can enter it on a new mobile device and authorize that device to be able to control their tokens. - -[source,javascript] ----- - /** - * Authorize user device with mnemonics - * @param {String} userId - Ost User id - * @param {String} mnemonics - string of mnemonics - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - - OstWalletSdk.authorizeCurrentDeviceWithMnemonics(userId, - mnemonics, - workflow) ----- - -==== performQRAction - -QR codes can be used to encode transaction data for authorizing devices and making purchases via webstores, etc. -This method can be used to process the information scanned off a QR code and act on it. - -[source,javascript] ----- -/** - * Perform QR action - * @param {String} userId - Ost User id - * @param {String} data - Json string of payload is scanned by QR-Code. - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.performQRAction(userId, - data, - workflow) ----- - -==== resetPin - -The user's PIN is set when activating the user. -This method supports re-setting a PIN and re-creating the recoveryOwner. - -[source,javascript] ----- -/** - * Reset user pin - * @param {String} userId - Ost User id - * @param {String} appSalt - Passphrase prefix provided by application server - * @param {String} currentPin - user current pin - * @param {String} newPin - user new pin - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.resetPin( userId, - appSalt, - currentPin, - newPin, - workflow ) ----- - -==== initiateDeviceRecovery - -A user can control their tokens using their authorized device(s). -If a user loses their authorized device, the user can recover access to her tokens by authorizing a new device by initiating the recovery process. - -[source,javascript] ----- -/** - * Initiate device recovery - * @param {String} userId - Ost User id - * @param {String} pin - user current pin - * @param {String} appSalt - Passphrase prefix provided by application server - * @param {String} deviceAddressToRecover - Device address which wants to recover - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ -OstWalletSdk.initiateDeviceRecovery( userId, - pin, - appSalt, - deviceAddressToRecover, - workflow ) ----- - -==== abortDeviceRecovery - -To abort an initiated device recovery. - -[source,javascript] ----- -/** - * Abort device recovery - * @param {String} userId - Ost User id - * @param {String} pin - user current pin - * @param {String} appSalt - Passphrase prefix provided by application server - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ -OstWalletSdk.abortDeviceRecovery(userId, - pin , - appSalt , - workflow ) ----- - -==== logoutAllSessions - -To revoke all sessions associated with provided userId. - -[source,javascript] ----- -/** - * Logout user all sessions - * @param {String} userId - Ost User id - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ -OstWalletSdk.logoutAllSessions(userId, - workflow ) ----- - -==== revokeDevice - -To unauthorize the current device. - -[source,javascript] ----- -/** - * revokeDevice - * @param {String} userId - Ost User id - * @param {String} deviceAddress - device address - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.revokeDevice( userId , - deviceAddress , - workflow) ----- - -==== updateBiometricPreference - -To enable or disable biometrics. - -[source,javascript] ----- -/** - * Update biometric prederence - * @param {String} userId - Ost User id - * @param {boolean} enable - to enable biometric prefernce - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.updateBiometricPreference( userId , enable ,workflow ) ----- - -=== Execute a workflow - -To execute a workflow, you need to pass an instance of `OstWalletSdkCallbackImplementation` class. -The callback implementation will be different for each workflow available in the SDK. - -[source,javascript] ----- - -import OstWalletWorkflowCallback from './OstWalletSdkCallbackImplementation'; - -onLogoutAllSessions() { - AsyncStorage.getItem('user').then((user) => { - user = JSON.parse(user); - // Note: logoutAllSessions will revoke all sessions keys from all the devices of the user. - OstWalletSdk.logoutAllSessions(user.user_details.user_id, new OstWalletWorkflowCallback(), console.warn); - }); -} ----- diff --git a/docs/modules/ROOT/pages/OstJsonApi.adoc b/docs/modules/ROOT/pages/OstJsonApi.adoc deleted file mode 100644 index cb4a2d9..0000000 --- a/docs/modules/ROOT/pages/OstJsonApi.adoc +++ /dev/null @@ -1,615 +0,0 @@ -= OST JSON APIs - -OST JSON APIs are a set of _asynchronous_ methods that make API calls to OST Platform servers. - -== Table of Contents - -* <> -* <> -* <> -* <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - *** <> -* <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - -++++++++++++ - -== Before We Begin - -* Although it is *NOT RECOMMENDED*, but if your app needs to allow multiple users to login on same device, the app must: - ** ensure to pass the `userId` of the currently *logged-in and authenticated* user. - ** ensure that the user has not logged-out *before* processing/displaying the response. -* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating any JSON API. -* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any JSON API. -* All `OstJsonApi` methods expect `userId` as first parameter because all requests need to be signed by the user's API key. -* It's always good to check if the device can make API calls by calling `OstWalletSdk.getCurrentDeviceForUserId` method. - ** Any device with status `REGISTERED`, `AUTHORIZING`, `AUTHORIZED`, `RECOVERING` or `REVOKING` can make this API call. - -++++++++++++ - -== JSON API Types - -The JSON APIs can be categorized into 2 groups. - -* <> - The APIs that get entities (e.g. -current-device, price-point, balance, etc.) -* <> - The APIs that get list of entities and support pagination (e.g. -device list, transactions) - -++++++++++++ - -== Importing OstJsonApi - -Use the following code to import `OstJsonApi` - ----- -import {OstJsonApi} from '@ostdotcom/ost-wallet-sdk-react-native'; ----- - -++++++++++++ - -== Entity API - -++++++++++++ - -=== Get Current Device - -API to get user's current device. - -____ -While the equivalent getter method `OstWalletSdk.getCurrentDeviceForUserId` gives the data stored in SDK's database, this method makes an API call to OST Platform. -____ - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * API to get user's current device. - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getCurrentDeviceForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => {} -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "device": { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", - "linked_address": "0x0000000000000000000000000000000000000001", - "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - "result_type": "device" -} ----- - -++++++++++++ - -=== Get Balance - -API to get user's balance. - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * Api to get user balance - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getBalanceForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => {} -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "balance": { - "updated_timestamp": 1566832497, - "unsettled_debit": "0", - "available_balance": "10000000", - "total_balance": "10000000", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - "result_type": "balance" -} ----- - -++++++++++++ - -=== Get Price Points - -API to get price-points of token's staking currency (OST or USDC). - -____ -This API call is generally needed to compute the current fiat value to your brand-tokens. -E.g. -displaying user's balance in fiat. -____ - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * Api to get user balance - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getPricePointForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => {} -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "price_point": { - "USDC": { - "updated_timestamp": 1566834913, - "decimals": 18, - "GBP": 0.8201717727, - "EUR": 0.9028162679, - "USD": 1.0025110673 - } - }, - "result_type": "price_point" -} ----- - -++++++++++++ - -=== Get Balance And Price Points - -This is a convenience method that makes `OstJsonApi.getBalanceForUserId` and `OstJsonApi.getPricePointForUserId` API calls and merges the response. - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * Api to get user balance - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getBalanceWithPricePointForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => {} -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "balance": { - "updated_timestamp": 1566832497, - "unsettled_debit": "0", - "available_balance": "10000000", - "total_balance": "10000000", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - "price_point": { - "USDC": { - "updated_timestamp": 1566834913, - "decimals": 18, - "GBP": 0.8201717727, - "EUR": 0.9028162679, - "USD": 1.0025110673 - } - }, - "result_type": "balance" -} ----- - -++++++++++++ - -=== Get Pending Recovery - -API to get user's pending recovery. -A pending recovery is created when the user recovers the device using their PIN. - -____ -This API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. -____ - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * Api to get user balance - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ -OstJsonApi.getPendingRecoveryForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => { - console.log( error ); - if ( error.is_api_error ) { - if ( "UNPROCESSABLE_ENTITY" === String(error.api_error.code).toUppercase() ) { - console.log("User does not have any recovery in progress."); - // You can safely ignore this error. - return; - } - } - } -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- - { - "devices": [ - { - "updated_timestamp": 1566902100, - "status": "REVOKING", - "api_signer_address": "0x903ad1a1017c14b8e6b0bb1dd32d3f65a8741732", - "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", - "address": "0x629e13063a2aa24e2fb2a49697ef871806071550", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566902100, - "status": "RECOVERING", - "api_signer_address": "0x6f5b1b8df95cbc3bd8d18d6c378cef7c34644729", - "linked_address": "null", - "address": "0x33e736a4761bc07ed54b1ceb82e44dfb497f478c", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - } - ], - "result_type": "devices" -} ----- - -++++++++++++ - -.Sample Error - -The `getPendingRecoveryForUserId` API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. - -[source,json] ----- -{ - "api_error": { - "internal_id": "***********", - "error_data": [], - "msg": "Initiate Recovery request for user not found.", - "code": "UNPROCESSABLE_ENTITY" - }, - "is_api_error": 1, - "error_message": "OST Platform Api returned error.", - "internal_error_code": "***********", - "error_code": "API_RESPONSE_ERROR" -} ----- - -++++++++++++ - -== List API - -All `List` APIs support pagination. -The response of all `List` APIs has an extra attribute `meta`. -To determine if next page is available, the app should look at `meta.next_page_payload`. -If `meta.next_page_payload` is an empty object (`{}`), next page is not available. - -++++++++++++ - -=== Get Transactions - -API to get user's transactions. - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; -let nextPagePayload = null; - -/** - * Api to get user's transactions - * @param {String} userId - Ost User id - * @param {Object} nextPagePayload (@nullable). Pass null to get first page. - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getTransactionsForUserId(userId, nextPagePayload, - (response) => { - console.log(response); - // Let's check if more pages of data is available. - if ( response.meta ) { - let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; - if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { - // Next page is available. - // Update nextPagePayload - nextPagePayload = nextPagePayloadFromResponse; - // To fetch the next page, pass the updated nextPagePayload. - } - } - }, - (error) => { - console.log("An error has occurred while fetching transactions."); - console.log( error ); - }); ----- - -++++++++++++ - -.Sample Response - -Please refer to the https://dev.ost.com/platform/docs/api/#transactions[Transactions Object] for a detailed description. - -[source,json] ----- -{ - "meta": { - "total_no": 14, - "next_page_payload": { - "pagination_identifier": "*****************************************************" - } - }, - "transactions": [ - { - "meta_property": { - "details": "Awesome Post", - "type": "user_to_user", - "name": "Like" - }, - "rule_name": "Direct Transfer", - "block_timestamp": 1566843589, - "block_confirmation": 969, - "transaction_fee": "94234000000000", - "gas_price": "1000000000", - "nonce": 613, - "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", - "id": "4efa1b45-8890-4978-a5f4-8f9368044852", - "transfers": [ - { - "kind": "transfer", - "amount": "200000", - "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", - "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", - "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", - "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" - } - ], - "block_number": 3581559, - "updated_timestamp": 1566843589, - "status": "SUCCESS", - "gas_used": 94234, - "value": "0", - "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", - "transaction_hash": "0xee8033f9ea7e9bf2d74435f0b6cc172d9378670e513a2b07cd855ef7e41dd2ad" - }, - { - "meta_property": { - "details": "Nice Pic", - "type": "user_to_user", - "name": "Fave" - }, - "rule_name": "Direct Transfer", - "block_timestamp": 1566843547, - "block_confirmation": 983, - "transaction_fee": "109170000000000", - "gas_price": "1000000000", - "nonce": 612, - "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", - "id": "7980ee91-7cf1-449c-bbaf-5074c2ba6b29", - "transfers": [ - { - "kind": "transfer", - "amount": "1600000", - "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", - "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", - "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", - "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" - } - ], - "block_number": 3581545, - "updated_timestamp": 1566843549, - "status": "SUCCESS", - "gas_used": 109170, - "value": "0", - "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", - "transaction_hash": "0x3e3bb3e25ab3a5123d1eaf20e1c31ab88bd56500c5cdfd2e32025c4df32735b3" - }, - ... - ... - ], - "result_type": "transactions" -} ----- - -++++++++++++ - -=== Get Devices - -API to get user's devices. - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; -let nextPagePayload = null; - -/** - * Api to get user's device - * @param {String} userId - Ost User id - * @param {Object} nextPagePayload (@nullable). Pass null to get first page. - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getDeviceListForUserId(userId, nextPagePayload, - (response) => { - console.log(response); - // Let's check if more pages of data is available. - if ( response.meta ) { - let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; - if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { - // Next page is available. - // Update nextPagePayload - nextPagePayload = nextPagePayloadFromResponse; - // To fetch the next page, pass the updated nextPagePayload. - } - } - }, - (error) => { - console.log("An error has occurred while fetching devices."); - console.log( error ); - }); ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "meta": { - "next_page_payload": {} - }, - "devices": [ - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", - "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", - "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566839512, - "status": "AUTHORIZED", - "api_signer_address": "0x2e12c4f6a27f7bdf8e58e628ec29bb4ce49c315e", - "linked_address": "0x0000000000000000000000000000000000000001", - "address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - } - ], - "result_type": "devices" -} ----- diff --git a/docs/modules/ROOT/pages/OstTransactionConfig.adoc b/docs/modules/ROOT/pages/OstTransactionConfig.adoc deleted file mode 100644 index a3687b8..0000000 --- a/docs/modules/ROOT/pages/OstTransactionConfig.adoc +++ /dev/null @@ -1,46 +0,0 @@ -= OstTransaction Config - -== Introduction - -App developers can configure session `expiration_time` and `spending_limit` while executing transaction. -To configure the session creation parameters (session buckets), provide the sdk with JSON object. -The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. - -== Configuration Data Structure - -Here is the small sample json representation of the configuration. - -[source,js] ----- -{ - "session_buckets": [ - { - expiration_time: 60*60*24*30*2, //2 months - spending_limit: '10' - }, - { - expiration_time: 60*60*24*30, //1 months - spending_limit: '50' - }, - { - expiration_time: 60*60*24, //24 hours - spending_limit: '100' - }, - { - expiration_time: 60*60*1, //1 hour - spending_limit: '1000' - } - ] -} ----- - -In the above example: - -* The first-level key `session_buckets` corresponds to list of buckets for creating session. -The bucket selection is depends on `spending_limit`. -* The second-level keys - ** `expiration_time` : corresponds to expiry time of session. - ** `spending_limit` : corresponds to spending limit of session. - -Above configuration allows user to execute transction of spending limit `1000`. -SDK throws error, if user makes transaction above `1000`. diff --git a/docs/modules/ROOT/pages/OstTransactionHelper.adoc b/docs/modules/ROOT/pages/OstTransactionHelper.adoc deleted file mode 100644 index e60c1a2..0000000 --- a/docs/modules/ROOT/pages/OstTransactionHelper.adoc +++ /dev/null @@ -1,94 +0,0 @@ -= Ost Transaction Helper - -== Introduction - -Developer can call functions of transaction helper to execute transaction and setting up config for transaction. - -== Configuration - -App developers can configure session `expiration_time` and `spending_limit` while executing transaction. -To configure the session creation parameters (session buckets), the sdk needs to be provided with JSON object. -The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. - -=== Configuration Data Structure - -Here is the small sample json representation of the configuration. - -[source,js] ----- -{ - "session_buckets": [ - { - expiration_time: 60*60*24*30*2, //2 months - spending_limit: '10' - }, - { - expiration_time: 60*60*24*30, //1 months - spending_limit: '50' - }, - { - expiration_time: 60*60*24, //24 hours - spending_limit: '100' - }, - { - expiration_time: 60*60*1, //1 hour - spending_limit: '1000' - } - ] -} ----- - -In the above example: - -* The first-level key `session_buckets` corresponds to list of buckets for creating session. -The bucket selection is depends on `spending_limit`. -* The second-level keys - ** `expiration_time` : corresponds to expiry time of session. - ** `spending_limit` : corresponds to spending limit of session. - -Above configuration allows user to execute transction of spending limit `1000`. -SDK throws error, if user makes transaction above `1000`. - -=== Set Transaction Config - -Developer can set list of buckets for creating session. -For details, Please refer xref:./OstTransactionConfig.adoc[this] - -[source,js] ----- -import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" - -OstTransactionHelper.setTxConfig(ost-tx-config); ----- - -== Execute Direct Transfer - -Execute direct transfer can be performed by calling - -____ -*Note* + Developer needs to create a class extends from OstWalletUIWorkflowCallback and write logic to get passphrase prefix from their application server. -Please refer xref:./OstWalletUI.adoc[this] section for documentation. -____ - -[source,js] ----- -import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" - -const ostUserId = -const txMeta = {"type": "user_to_user", "name": "Tokens sent", "details": "Sending tokens vis direct transafer"}; -const workflowCallback = new OstWalletUIWorkflowCallback() - -let uuid = OstTransactionHelper.executeDirectTransfer(ostUserId, [tokenValue], [token_holder_address], txMeta, workflowCallback); - -OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowComplete, (workflowContext, contextEntity) => { - //functionality for transaction success -}); -OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowInterrupt, (workflowContext, ostError) => { - //functionality for transaction failed -}); -OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.requestAcknowledged, (workflowContext, contextEntity) => { - //functionality for transaction ack. -}); ----- - -New session will be created with appropriate bucket, if sdk won't get any active session for given spending limit. diff --git a/docs/modules/ROOT/pages/OstWalletSdkGetMethods.adoc b/docs/modules/ROOT/pages/OstWalletSdkGetMethods.adoc deleted file mode 100644 index 2d4c2db..0000000 --- a/docs/modules/ROOT/pages/OstWalletSdkGetMethods.adoc +++ /dev/null @@ -1,395 +0,0 @@ -= OST Wallet React Native SDK Getter Methods - -== Table of Contents - -* <> -* <> - ** <> - ** <> -* <> - ** <> - ** <> -* <> - ** <> - ** <> -* <> - ** <> -* <> - ** <> - ** <> -* <> - ** <> - ** <> - -++++++++++++ - -== Before We Begin - -* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating getter methods. -* We recommend using these methods _after_ link:../README.md#setupdevice[setupDevice] workflow has been performed. -* The getter methods provide the data as available with the device. - ** The methods may return `null` if the data is not available. -* These methods are _synchronous_ in the native SDK. -Because of react-native's bridge they behave _asynchronous_ in the react-native SDK. - ** These methods do not make any API calls. - -++++++++++++ - -== Get Token - -Method to get token information. - -____ -`getToken` method will return partial data if device has not been registered. -____ - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update tokenId as per your needs. - Since this tokenId does not belong to your economy, you may get an error if you do not change it. - */ - let tokenId = '1129'; - - /** - * Get token object for provided userId - * @param {String} tokenId - Ost Token id - * @param {function} callback - Gets token object if present else nil - * @callback params {Object} token entity. Returns null if information is not available with device. - * @public - */ - OstWalletSdk.getToken(tokenId, (tokenEntity) => { - console.log("tokenEntity", tokenEntity); - }); ----- - -++++++++++++ - -.Sample Response - -Please refer to the https://dev.ost.com/platform/docs/api/#token[Token Object] for a detailed description. - -[source,json] ----- -{ - "updated_timestamp": 1560167796, - "auxiliary_chains": [ - { - "organization": { - "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", - "contract": "0xb8e3fcfb5dac714e40b63489f4f393c7073fdbb3" - }, - "company_uuids": [ - "d6bf0061-a32d-48af-a29b-013260a947f3" - ], - "company_token_holders": [ - "0x93f08d0c5d7bc28cc117681b3b23f8501a09e786" - ], - "utility_branded_token": "0xc50e3fd492a9a99a964f7aff8d755075d0732ff0", - "chain_id": 197 - } - ], - "origin_chain": { - "stakers": [ - "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637" - ], - "organization": { - "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", - "contract": "0x0260a404804b1d7cf6fa678fb5d8441495cfff1b" - }, - "branded_token": "0x18cbeae2f1785abf68c9984f9186a29ed062c3ca", - "chain_id": 3 - }, - "decimals": 6, - "total_supply": "500000000000", - "conversion_factor": 10, - "base_token": "USDC", - "symbol": "SC1", - "name": "STC1", - "id": 1129 -} ----- - -++++++++++++ - -== Get User - -Method to get user information. - -____ -`getUser` method will return partial data if device has not been registered. -____ - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - - /** - * Get user object for provided userId - * @param {String} userId - Ost User id - * @param {function} callback - Gets object if present else nil - * @callback params {Object}user - * @public - */ - OstWalletSdk.getUser(userId, (userEntity)=>{ - console.log( userEntity ); - }); ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "updated_timestamp": 1566832473, - "status": "ACTIVATED", - "type": "user", - "recovery_owner_address": "0x0a64dc924d32a569b1d0885acfc34832e1444944", - "recovery_address": "0x99c46a66621d6967cbd692e615ec36747d58fecb", - "device_manager_address": "0x55f379612796b863590d388ed509ae50de12a5d2", - "token_holder_address": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", - "token_id": 1129, - "id": "71c59448-ff77-484c-99d8-abea8a419836" -} ----- - -++++++++++++ - -== Get Current Device - -Method to get device entity. - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId as per your needs. - Since this userId does not belong to your economy, you may get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - - /** - * Get current device object for provided userId - * @param {String} userId - Ost User id - * @param {function} callback - Gets current device object if present else nil - * @callback params {Object} device - * @public - */ - OstWalletSdk.getCurrentDeviceForUserId(userId, (device)=>{ - console.log( device ); - }); ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", - "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", - "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" -} ----- - -++++++++++++ - -== Get Biometric Preference - -Method to get biometric preference of the user. - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId as per your needs. - Since this userId does not belong to your economy, you may get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - - /** - * Get biometric preference for user - * - * @param userId - Ost User id - * @param callback - Gets biometric preference boolean value - */ - OstWalletSdk.isBiometricEnabled(userId, (status) => { - console.log("isBiometricEnabled", status ); - // logs true or false. - }); ----- - -++++++++++++ - -== Get Active Sessions - -Method to get active sessions available with device. - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId and minimumSpendingLimitInWei as per your needs. - Since this userId does not belong to your economy, you may get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - let minimumSpendingLimitInWei = "1000000"; - - /** - * Get user object for provided userId - * @param {String} userId - Ost User id - * @param {String} minimumSpendingLimitInWei - optional parameter, defaults to zero. - * @param {function} callback - Gets array of current device sessions. - * @callback params {Array} array of sessions - * @public - */ - OstWalletSdk.getActiveSessionsForUserId(userId, minimumSpendingLimitInWei, (activeSessions)=>{ - console.log(activeSessions); - }); - - - // Optionally, getActiveSessionsForUserId method can also - // be invoked without specifying minimumSpendingLimitInWei. - OstWalletSdk.getActiveSessionsForUserId(userId,(activeSessions)=>{ - console.log(activeSessions); - }); ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -[ - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 2, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0x3171bce99d00812b77aa216ed544ab35fc8b6fb1", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 2, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0x816324ed539b62652a247ce5c1f1962f6de13e14", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 3, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0x95b3fcb5aa3930a9bc42da171b8733a3a869955f", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 3, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0xe57b68fc8aca57d9488d1607df628a4076571eda", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 2, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0x459712cb13efd12ade7ff3a5fd4641f5c21904c9", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - } -] ----- - -++++++++++++ - -== QR Code for Authorizing Device - -Method to generate QR code that can be scanned by an *authorized* device. -Scanning this QR code with an authorized mobile device will result in this device (from where the QR code has been generated) being authorized. - -____ -App should use this method only when the current device status is `REGISTERED`. -____ - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId and minimumSpendingLimitInWei as per your needs. - Since this userId does not belong to your economy, you may get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - - /** - * Get device QR code - * @param {String} userId - Ost User id - * @param {function} successCallback - returns image as base64 string. - * @param {function} errorCallback. - * @public - */ - OstWalletSdk.getAddDeviceQRCode( userId , (base64Image) => { - console.log(base64Image); - // Assuming this method is called from Component, - // let's update the component's state to display the image. - this.setState({ - qrCode: base64Image - }); - }, (error) => { - - }); ----- - -++++++++++++ - -.Sample Render Method -[source,jsx] ----- - render() { - // Assuming that callback will set 'qrCode' attribute in component's state. - if ( this.state.qrCode ) { - return ( - - ); - } - return null; - } ----- diff --git a/docs/modules/ROOT/pages/OstWalletSettings.adoc b/docs/modules/ROOT/pages/OstWalletSettings.adoc deleted file mode 100644 index 45115b0..0000000 --- a/docs/modules/ROOT/pages/OstWalletSettings.adoc +++ /dev/null @@ -1,78 +0,0 @@ -= OstWallet Settings - -== Introduction - -OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. -It is a wallet settings page that can be used by end-users to perfrom different wallet operations. - -____ -*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. -____ - -OstWalletSettings supports 13 workflows: - -* Activate User -* Wallet Details -* Initialize Recovery -* Add Session -* Reset a User's PIN -* Get Mnemonic Phrase -* Authorize device using mnemonics -* Abort Device Recovery -* Revoke Device -* Scan QR Code to add another device -* Get Current Device QR code -* Enable Biometrics -* Disable Biometrics - -== Usage - -=== Create wallet settings stack navigation - -[source,js] ----- -import {OstWalletSettingsComponent} from '@ostdotcom/ost-wallet-sdk-react-native'; - -let settingsStack = createStackNavigator( - { - "WalletSettingScreen": OstWalletSettingsComponent - } -); ----- - -=== Naviagte to settings page - -`ostUserId` and `ostWalletUIWorkflowCallback` are mandetory parameters that need to be passed as params to the `WalletSettingScreen` screen. - -[source,js] ----- -const ostUserId = -const delegate = new OstWalletUIWorkflowCallback(ostUserId, {}) -this.props.navigation.push("WalletSettingScreen", {'ostUserId': ostUserId, 'ostWalletUIWorkflowCallback': delegate}); ----- - -____ -*Note* + Developer needs to create a class extends from `OstWalletUIWorkflowCallback` and write logic to get passphrase prefix from their application server. -Please refer link:OstWalletUI.md#setup-your-passphrase-prefix-delegate[this] section for documentation. -____ - -== UI Customization - -Developer can customize wallet settings by updating respective properties mentioned in image. -OstTheme config shown link:./configs/ost-sdk-theme-config.js[here] - -image:images/wallet_settings.png[copy-framework-file] image:images/wallet_details.png[copy-framework-file] - -== Settings Content - -Developer can modify `header` and `description` of settings options. -To modify contet, xref:./OstWalletSettingsConfig.adoc[refer here]. - -[source,js] ----- -import {OstWalletSettings} from "@ostdotcom/ost-wallet-sdk-react-native/js/index"; - -let settingsContentConfig = {} - -OstWalletSettings.setMasterConfig(settingsContentConfig) ----- diff --git a/docs/modules/ROOT/pages/OstWalletSettingsConfig.adoc b/docs/modules/ROOT/pages/OstWalletSettingsConfig.adoc deleted file mode 100644 index f441cb3..0000000 --- a/docs/modules/ROOT/pages/OstWalletSettingsConfig.adoc +++ /dev/null @@ -1,121 +0,0 @@ -= OstWallet Settings Config - -== Introduction - -App developers can configure the text shown on settings page. - -To configure the content, the sdk needs to be provided with https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON[JSON object]. - -The default configuration can be found link:../js/WalletSettings/ost-wallet-settings-config.json[here]. - -== Dictionary Data Structure - -Here is the small sample json representation of the configuration. - -[source,json] ----- -{ - "item_display_order": [ - "activate_user", - ], - "item_configs": { - "activate_user": { - "content_config": { - "heading": "Activate User", - "description": "User is not activated yet." - }, - "config": { - "spending_limit": "0", - "expiration_time": 0 - } - } - } -} ----- - -In the above example: - -* The first-level key `item_display_order` corresponds to sequence of allowed workflows. -* The first-level key `item_configs` corresponds to config for workflows. -* The second-level key `activate_user` corresponds to activate user workflow. -* The third-level key `content_config` corresponds to `heading` and `description` of workflows. -* The third-level key `config` corresponds to respective config for workflows. - -== Supported Workflows - -OstWalletSettings supports 13 workflows - -|=== -| Configuration Keys | Workflows - -| activate_user -| Activate User - -| wallet_details -| Wallet Details - -| recover_device -| Initialize Recovery - -| add_session -| Add Session - -| reset_pin -| Reset a User's PIN - -| show_mnemonics -| Get Mnemonic Phrase - -| authorize_device_with_mnemonics -| Authorize device using mnemonics - -| abort_recovery -| Abort Device Recovery - -| revoke_device -| Revoke Device - -| add_another_device -| Scan QR Code to add another device - -| show_device_qr_code -| Get current Device QR code - -| enable_biometrics -| Use biometrics to authorize new Sessions and to confirm high value transactions. - -| disable_biometrics -| Turn off biometrics and use PIN to authorize new Sessions and to confirm high value transactions. -|=== - -* All workflows have `content_config`. -* `config` varies workflow to workflow. - -== Workflow Config - -Some workflows requires additional data. -It can be passed to workflow by setting it in `config`. - -|=== -| Workflows | Config Keys | Config Type - -| activate_user -| - spending_limit -| String - -| -| - expiration_time -| Number - -| wallet_details -| - ost_view_endpoint -| String - -| add_session -| - spending_limit -| String - -| -| - expiration_time -| Number -|=== diff --git a/docs/modules/ROOT/pages/OstWalletUI.adoc b/docs/modules/ROOT/pages/OstWalletUI.adoc deleted file mode 100644 index 19fd2db..0000000 --- a/docs/modules/ROOT/pages/OstWalletUI.adoc +++ /dev/null @@ -1,842 +0,0 @@ -= OST Wallet React Native SDK UI - -== Introduction - -For quick and easy integration with SDK, developers can use built-in user interface components which are configurable and support content and theme customization. -All OstWalletSdkUI workflows return `workflow-id`. -The application can subscribe to the events of the workflow using the `workflow-id`. - -== Setup - -`OstWalletSdkUI` is packaged along with OstWalletSdk. -There are no additional steps for using `OstWalletSdkUI`. -To setup OstWalletSdk, please refer to link:../README.md#installing-react-native-sdk[setup]. - -== Before We Begin - -* App must link:../README.md#initializing-the-sdk[initialize] the sdk _*before*_ initiating any UI workflows. -* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any UI workflows. - -== OstWalletSdkUI SDK APIs - -To use OstWalletSdkUI - ----- -import {OstWalletSdkUI} from '@ostdotcom/ost-wallet-sdk-react-native'; ----- - -=== Set Theme Config - -Theme for OstWalletSdkUI can be initialized by calling `setThemeConfig` API which setup OstWalletSdkUI theme config. -To define custom theme config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ThemeConfig.md[Theme Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ThemeConfig.md[Theme Config iOS] documentation. - -[source,js] ----- - // Define the content config - const theme_config = { - "nav_bar_logo_image": { - "asset_name": "YOUR_LOGO_ASSET_NAME" - } - }; - - /** - * Set theme config for UI - * config: Config to use for UI - */ - OstWalletSdkUI.setThemeConfig(theme_config); ----- - -____ -* In the above example, `asset_name` is name of asset which is present in the respective assets folder for iOS/android. -____ - -=== Set Content Config - -Content for OstWalletSdkUI can be initialized by calling `setContentConfig` API which set-up OstWalletSdkUI content config. -To define custom content config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ContentConfig.md[Content Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ContentConfig.md[Content Config iOS] documentation. - -[source,js] ----- - // Please update terms_and_condition.url as per your needs. - const content_config = { - "activate_user": { - "create_pin": { - "placeholders": { - "terms_and_condition": { - "url": "https://YOUR-WEB-SITE.com/terms-page" - } - } - }, - "confirm_pin": { - "placeholders": { - "terms_and_condition": { - "url": "https://YOUR-WEB-SITE.com/terms-page" - } - } - } - } - }; - - /** - * Set content config for UI - * config: Config to use for UI - */ - OstWalletSdkUI.setContentConfig(content_config); ----- - -=== Set Loader Manager - -Application loader for OstWalletUI can be initialized by calling `setLoaderManager` API. -This API is available in native SDK. -+ + Custom loader is supported from OstWalletSdk-native version Android v``2.3.6`` Or iOS v``2.3.5`` + Please, verify OstWalletSdk version in `Cartfile`. -+ + Custom loader needs to be written in native code (java, swift/Objective-C). -+ Sample code for custom loader is available in respective platform directory. -For https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/Samples/CustomLoader/OstMockCustomLoader.md[iOS] and https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/Samples/customloader/OstCustomLoader.md[Android] - -=== Setup your Passphrase Prefix Delegate - -`Passphrase Prefix` is a salt provided by your application that assists in generation of User's recovery key using user's PIN. -This salt should be _unique_ for each user, is immutable and needs to be associated with the user. -The salt should not be stored in memory or on deivce unencrypted. -When the UI workflow need's to ask for user's PIN, delegate's getPassphrase method is invoked. - -The delegate must be derived from `OstWalletUIWorkflowCallback` class. - -Here is an example: - -[source,javascript] ----- -import { OstWalletUIWorkflowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; -class UserPassphrasePrefixDelegate extends OstWalletUIWorkflowCallback { - constructor() { - super(); - } - - getPassphrase(userId, ostWorkflowContext, OstPassphrasePrefixAccept) { - let fetchPromise = new Promise((resolve,reject) => { - //Write code here to validate userId. - //If it is not the same as that of the logged-in user, reject the promise. - - //Write code here to fetch the salt from your server. - //Read the passphrasePrefix from response and resolve the Promise. - }); - fetchPromise - .then((passphrasePrefix) => { - OstPassphrasePrefixAccept.setPassphrase(passphrasePrefix, userId, (error) => { - console.warn(error); - }); - }) - .catch((err) => { - // Cancel the workflow. - OstPassphrasePrefixAccept.cancelFlow(); - }); - } - - /** - * Optional Callback Implementation - * -------------------------------- - * - * Application can also define and use following callback methods: - * - requestAcknowledged(ostWorkflowContext , ostContextEntity ) - * - flowComplete(ostWorkflowContext , ostContextEntity ) - * - flowInterrupt(ostWorkflowContext , ostError) - * - * Note: - * These methods can be helpful for debugging. - * Defining these methods does NOT impact ui workflow event subscription in any way. - * If application subscribes to events and also defines these callbacks, both shall be invoked. - */ - - requestAcknowledged(ostWorkflowContext , ostContextEntity ) { - console.log("Received requestAcknowledged callback"); - - let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; - let workflowType = ostWorkflowContext.WORKFLOW_TYPE; - let entityType = ostContextEntity.entityType; - let entityData = ostContextEntity.entity; - - console.log("- Workflow Id:", contextWorkflowId); - console.log("- Workflow Type:", workflowType); - console.log("- OstContextEntity type:", entityType) - console.log("- OstContextEntity entityData:", entityData); - } - - flowComplete(ostWorkflowContext , ostContextEntity ) { - console.log("Received flowComplete callback"); - - let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; - let workflowType = ostWorkflowContext.WORKFLOW_TYPE; - let entityType = ostContextEntity.entityType; - let entityData = ostContextEntity.entity; - - console.log("- Workflow Id:", contextWorkflowId); - console.log("- Workflow Type:", workflowType); - console.log("- OstContextEntity type:", entityType) - console.log("- OstContextEntity entityData:", entityData); - } - - flowInterrupt(ostWorkflowContext , ostError) { - console.log("Received flowInterrupt callback"); - - let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; - let workflowType = ostWorkflowContext.WORKFLOW_TYPE; - let errorData = ostError.error; - let errorCode = ostError.getErrorCode(); - - // If you would like to reach out to Ost Devs for support, - // we request you to collect internalErrorCode - let internalErrorCode = ostError.getInternalErrorCode(); - let isApiError = ostError.isApiError(); - - console.log("- Workflow Id:", contextWorkflowId); - console.log("- Workflow Type:", workflowType); - console.log("- Error"); - console.log(" - Error Code:", errorCode); - console.log(" - Is Api Error:", isApiError); - console.log(" - Sdk Internal Error Code", internalErrorCode); - console.log(" - error data", errorData); - - if ( isApiError && ostError.isApiSignerUnauthorized() ) { - console.log("- This device has either been revoked or not yet registered."); - } else if ("WORKFLOW_CANCELED" === errorCode.toUpperCase() ) { - console.log("- This error can be ignored. The workflow has been canceled by the user or application"); - } - } -} -export default UserPassphrasePrefixDelegate; ----- - -=== Ost Wallet Settings - -OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. -It is a wallet settings page that can be used by end-users to perfrom different wallet operations(Ost Wallet UI Workflows). -For details xref:./OstWalletSettings.adoc[check here] - -____ -*Note* + `OstWalletSettings` is available from `ost-wallet-sdk-react-native` SKD version v2.3.12-beta.1 -____ - -=== Ost Wallet UI Workflows - -==== Activate User - -User activation refers to the deployment of smart-contracts that form the user's token wallet. -An activated user can engage with a token. - -[source,javascript] ----- - -let uiCallback = new UserPassphrasePrefixDelegate() - -/** -* Activate user -* @param {String} userId - Ost User id -* @param {String} expiresAfterInSecs - session key expiry time. -* @param {String} spendingLimit - spending limit once in a transaction of session -* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication -* @public -*/ -let workflowId = OstWalletSdkUI.activateUser( - userId, - expiresAfterInSecs, - spendingLimit, - uiCallback -); - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // User is being activated. At this point, user can neither receive or send tokens. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // User has been activated. User can now start receiving tokens. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. The user has NOT been activated. -}); ----- - -==== Add Session - -A session is a period of time during which a sessionKey is authorized to sign transactions under a pre-set limit per transaction on behalf of the user. -The device manager, which controls the tokens, authorizes sessions. - -[source,js] ----- - -let uiCallback = new UserPassphrasePrefixDelegate() - -/** - * Add user session - * @param {String} userId - Ost User id - * @param {String} expiresAfterInSecs - session key expiry time. - * @param {String} spendingLimit - spending limit once in a transaction of session - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ -let workflowId = OstWalletSdkUI.addSession( - userId, - expiresAfterInSecs, - spendingLimit, - uiCallback -) - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Session is being added. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Session has been added. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. The Session has NOT been added. -}); ----- - -==== Get Mnemonic Phrase - -The mnemonic phrase represents a human-readable way to authorize a new device. -This phrase is 12 words long. - -[source,js] ----- -let uiCallback = new UserPassphrasePrefixDelegate() - -/** - * Get device mnemonics - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ -let workflowId = OstWalletSdkUI.getDeviceMnemonics( - userId, - uiCallback -) - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // User has seen the mnemonics -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. -}); ----- - -==== Reset a User's PIN - -The user's PIN is set when activating the user. -This method supports re-setting a PIN and re-creating the recoveryOwner as part of that. - -[source,js] ----- - -let uiCallback = new UserPassphrasePrefixDelegate() - -/** - * Reset pin - * - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - */ -let workflowId = OstWalletSdkUI.resetPin( - userId, - uiCallback -) - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Pin is being reset. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Workflow completed successfully. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. -}); ----- - -==== Initiate Recovery - -A user can control their tokens using their authorized device(s). -If the user loses their authorized device, she can recover access to their tokens by authorizing a new device via the recovery process. - -If application set `recoverDeviceAddress` then OstWalletUI ask for `pin` to initiate device recovery. -Else it displays authorized device list for given `userId` to select device from. - -[source,javascript] ----- - -let uiCallback = new UserPassphrasePrefixDelegate(); - -/** -* Initiate device recovery -* @param {String} userId - Ost User id -* @param {String} recoverDeviceAddress - Device address which wants to recover -* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication -* @public -*/ -let workflowId = OstWalletSdkUI.initiateDeviceRecovery( - userId, - recoverDeviceAddress, - uiCallback -) - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Device recovery has been initiated. - // The device will be recovered after 12 hours. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device recovery has been initiated. - // The device will be recovered after 12 hours. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. -}); ----- - -____ -`recoverDeviceAddress` can be `null`. -+ If you have your own UI to select the device to revoke, set `recoverDeviceAddress` to the selected device address. -+ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. -+ -____ - -==== Abort Device Recovery - -To abort initiated device recovery. - -[source,javascript] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Abort device recovery - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - OstWalletSdkUI.abortDeviceRecovery( - userId, - uiCallback - ) - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Request has been acknowledged by OST Platform. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device recovery has been aborted. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -==== Revoke Device - -To revoke device access. - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Revoke device - * @param {String} userId - Ost User id - * @param {String} deviceAddressToRevoke - Device address which wants to recover - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.revokeDevice(userId, deviceAddressToRevoke, uiCallback ); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Request has been acknowledged by OST Platform. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device has been revoked. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -____ -`deviceAddressToRevoke` can be `null`. -+ If you have your own UI to select the device to revoke, set `deviceAddressToRevoke` to the selected device address. -+ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. -+ -____ - -==== Update Biometric Preference - -To enable or disable the biometric. - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - let shouldEnable = true; - - /** - * Update biometric preference - * @param {String} userId - Ost User id - * @param {boolean} shouldEnable - pass true to enable biometic preference, false to disable. - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.updateBiometricPreference( userId, shouldEnable, uiCallback ); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Preference has been updated. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -==== Authorize Current Device With Mnemonics - -To add a new device using 12 words recovery phrase. - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - /** - * Authorize user device with mnemonics - * @param {String} userId - Ost User id - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.authorizeCurrentDeviceWithMnemonics(userId, uiCallback); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Request has been acknowledged by OST Platform. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device has been authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -==== Get Add Device QR-Code - -To show QR-Code to scan from another authorized device - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Get add device QR code - * - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.getAddDeviceQRCode(userId, uiCallback); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Current Device is being authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Current Device has been authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -=== Scan QR-Code to Authorize Device - -To authorize device by scanning device QR-Code. - -QR-Code Sample: - -[source,json] ----- -{ - "dd":"AD", - "ddv":"1.1.0", - "d":{ - "da": "0x7701af46018fc57c443b63e839eb24872755a2f8" - } -} ----- - -[source,js] ----- - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Scan QR-Code to authorize device - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.scanQRCodeToAuthorizeDevice(userId, uiCallback); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Device is being authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device has been authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -=== Execute Transaction - -* ++++++By Scanning QR-Code ++++++ + To execute transaction via device by scanning device QR-Code. - -QR-Code Sample: - -[source,json] ----- -{ - "dd":"TX", - "ddv":"1.1.0", - "d":{ - "rn":"direct transfer", - "ads":[ - "0x7701af46018fc57c443b63e839eb24872755a2f8", - "0xed09dc167a72d939ecf3d3854ad0978fb13a8fe9" - ], - "ams":[ - "1000000000000000000", - "1000000000000000000" - ], - "tid": 1140, - "o":{ - "cs":"USD", - "s": "$" - } - }, - "m":{ - "tn":"comment", - "tt":"user_to_user", - "td":"Thanks for comment" - } -} ----- - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Scan QR-Code to execute transaction - * - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.scanQRCodeToExecuteTransaction(userId, uiCallback); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Transaction is being executed. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Transaction has been executed successfully. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -* *By Calling function* + Helper method creates session if active sessoin for transction amount is not available. -To execute transaction via helper method, xref:./OstTransactionHelper.adoc[ref here] - -== Ost Wallet UI Events and Listeners - -=== Subscribe - -Subscribe to specified event of UI Workflow - -Supported `EventName` are: - -* requestAcknowledged -* flowComplete -* flowInterrupt - -You can retrive event names from Sdk: - -[source,javascript] ----- -OstWalletSdkUI.EVENTS.requestAcknowledged -OstWalletSdkUI.EVENTS.flowComplete -OstWalletSdkUI.EVENTS.flowInterrupt ----- - -[source,javascript] ----- -/** -* Subscribes to specified event of UI Workflow. -* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI -* @param {String} eventName - Name of the event to subscribe to. -* @param {Function} listener - The listener function. -* @param {*} context - The context to invoke the listener with. -* @returns {Boolean} - false if failed to subscribe. -* @public -*/ -OstWalletSdkUI.subscribe( - workflowId, - eventName, - listener, - context -) ----- - -[source,javascript] ----- -/** -* Subscribes once to specified event of UI Workflow. -* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI -* @param {String} eventName - Name of the event to subscribe to. -* @param {Function} listener - The listener function. -* @param {*} context - The context to invoke the listener with. -* @returns {Boolean} - false if failed to subscribe. -* @public -*/ -OstWalletSdkUI.subscribeOnce( - workflowId, - eventName, - listener, - context -) ----- - -=== Unsubscribe - -Unsubscribes the listener from the specified event of UI Workflow. - -[source,javascript] ----- -/** -* Unsubscribes the listener from the specified event of UI Workflow. -* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI -* @param {String} eventName - Name of the event to subscribe to. -* @param {Function} listener - The listener function. -* @param {*} context - The context to invoke the listener with. -* @returns {Boolean} - false if failed to subscribe. -* @public -*/ -OstWalletSdkUI.unsubscribe( - workflowId, - eventName, - listener, - context -) ----- - -=== Event Listeners - -==== Request Acknowledged Listener - -Acknowledge application about the request which is going to made by SDK. - -[source,js] ----- -/** - * Request acknowledged - * @param {Object} ostWorkflowContext - info about workflow type - * @param ostContextEntity - info about entity - * @override - */ - requestAcknowledged(ostWorkflowContext, ostContextEntity ) => { - //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. - //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. - } ----- - -==== Flow Complete Listener - -[source,js] ----- -/** - * Flow complete - * @param ostWorkflowContext - workflow type - * @param ostContextEntity - status of the flow - * @override - */ - flowComplete(ostWorkflowContext, ostContextEntity ) => { - //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. - //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. - } ----- - -==== Flow Interrupt Listener - -[source,js] ----- -/** - * Flow interrupt - * @param ostWorkflowContext workflow type - * @param ostError reason of interruption - * @override - */ - flowInterrupt(ostWorkflowContext, ostError) => { - //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. - //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. - } ----- diff --git a/docs/modules/ROOT/pages/android-setup.adoc b/docs/modules/ROOT/pages/android-setup.adoc deleted file mode 100644 index 8625342..0000000 --- a/docs/modules/ROOT/pages/android-setup.adoc +++ /dev/null @@ -1,75 +0,0 @@ -= Android set-up required for Ost React Native SDK -:doctype: book - -== 1. Linking the Ost React Native SDK - -=== Automatic Linking - -[source,bash] ----- -react-native link @ostdotcom/ost-wallet-sdk-react-native ----- - -=== Manual Linking - -. Open `+./android/app/src/main/java/[...]/MainApplication.java+` -. Add `import com.ostwalletrnsdk.OstWalletRnSdkPackage;` to the imports at the top of the file. -. Add `new OstWalletRnSdkPackage()` to the list returned by the `getPackages()` method -. Append the following lines to `./android/settings.gradle`: `include ':ost-wallet-sdk-react-native' project(':ost-wallet-sdk-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/ost-wallet-sdk-react-native/android')` -. Insert the following lines inside the dependencies block in `./android/app/build.gradle`: compile project(':ost-wallet-sdk-react-native') - -== 2. Changing `minSdkVersion` in './android/build.gradle' file - -Change the `minSdkVersion` to 22 in `android/build.gradle` - -[source,json] ----- -android { - defaultConfig { - minSdkVersion 22 - ... - ... - ... - } -} ----- - -== 3. Create SDK configuration file - -Create file `./android/app/src/main/assets/ost-mobilesdk.json` with application specific configurations using the json below as an example - -[source,json] ----- -{ - "BLOCK_GENERATION_TIME": 3, - "PIN_MAX_RETRY_COUNT": 3, - "REQUEST_TIMEOUT_DURATION": 60, - "SESSION_BUFFER_TIME": 3600, - "PRICE_POINT_CURRENCY_SYMBOL": "USD", - "USE_SEED_PASSWORD": false -} ----- - -. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. -. PricePointTokenSymbol: This is the symbol of base currency. So its value will be OST. -. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. -. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. -. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. -. SessionBufferTime: Buffer expiration time for session keys in seconds. -Default value is 3600 seconds. -. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. -When UseSeedPassword set to `true`, different deterministic salts are used for different keys. - -*NOTE: These configurations are MANDATORY for successful operation. -Failing to set them will significantly impact usage.* - -= Debug builds with Android 9 (API level 28) - -Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. - -On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. -As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. - -To work-around this issues, application needs to have TrustKit as a dependency and initialize it. - -Please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/documentation/TrustKitPublickeyPinning.md[Public Key Pinning Using TrustKit] documentation. \ No newline at end of file diff --git a/docs/modules/ROOT/pages/ios-setup.adoc b/docs/modules/ROOT/pages/ios-setup.adoc deleted file mode 100644 index aa426cd..0000000 --- a/docs/modules/ROOT/pages/ios-setup.adoc +++ /dev/null @@ -1,146 +0,0 @@ -= iOS setup required for OST React Native SDK -:doctype: book - -== 1. Installing https://github.com/Carthage/Carthage[Carthage] - -Get https://github.com/Carthage/Carthage[Carthage] by running following command on terminal - -[source,bash] ----- - brew install carthage ----- - -You can also choose https://github.com/Carthage/Carthage/#installing-carthage[other methods] to install https://github.com/Carthage/Carthage[Carthage] - -== 2. Downloading OST React Native SDK using Carthage - -Carthage looks at a file called `Cartfile` to determine which libraries to install. -Create a file in the `./ios` directory of your react-native project called `Cartfile` and enter the following to tell Carthage which dependencies we want: - -Add following entry in your `Cartfile` - -[source,bash] ----- - github "ostdotcom/ost-wallet-sdk-ios" == 2.3.6 ----- - -Now to actually install everything run the following in your terminal: - -[source,bash] ----- - carthage update --platform iOS ----- - -A `Cartfile.resolved` file and a `Carthage` directory will appear in the same directory where your `.xcodeproj` or `.xcworkspace` is. - -== 3. Copying the `OstWalletSdk.framework` file in your Xcode project - -Open your project in Xcode, click on the project file in the left section of the screen and scroll down to the `Linked Frameworks and Libraries` section in Xcode. - -`Carthage` folder will have the `.framework` files that we will add in Xcode project. - -Now open the `./ios/Carthage/Build/iOS` folder in Finder: - -Run this command - -[source,bash] ----- -open ios/Carthage/Build/iOS ----- - -Open application target, under General tab, drag the built `OstWalletSdk.framework` binary from `./ios/Carthage/Build/iOS` folder into Linked Frameworks and Libraries section. - -image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/copy-framework-file.png[copy-framework-file] - -== 4. Adding the `OstWalletSdk` dependencies in your Xcode project - -We need to add the `.framework` files of dependencies present inside `./ios/Carthage/Build/iOS`. - -Open `application targets` in Xcode. -Under `Build Phases` click `+` icon and choose `New Run Script Phase`. -Add the following command. - -[source,bash] ----- -/usr/local/bin/carthage copy-frameworks ----- - -Click the `+` under `Input Files` and add the following entry framework: - ----- -$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework -$(SRCROOT)/Carthage/Build/iOS/BigInt.framework -$(SRCROOT)/Carthage/Build/iOS/CryptoEthereumSwift.framework -$(SRCROOT)/Carthage/Build/iOS/CryptoSwift.framework -$(SRCROOT)/Carthage/Build/iOS/EthereumKit.framework -$(SRCROOT)/Carthage/Build/iOS/FMDB.framework -$(SRCROOT)/Carthage/Build/iOS/SipHash.framework -$(SRCROOT)/Carthage/Build/iOS/TrustKit.framework -$(SRCROOT)/Carthage/Build/iOS/OstWalletSdk.framework ----- - -image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/add-dependency-framework-files.png[copy-framework-file] - -== 5. Add additional SDK files - -Follow these steps to add additional files: - -* Click on your project, select `File > Add Files to ""` -* Browse to `./node_modules/@ostdotcom/ost-wallet-sdk-react-native/ios` -* Add the folder `ostwalletrnsdk` with following settings: - ** Destination: (uncheck) Copy items if needed - ** Added folders: (select) Create groups - -image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/additional-files.png[Add-image] - -== 6. Change Build Settings - -Open application target, under `Build Settings` tab, enable `Always Embed Swift Standard Libraries` under `Build Options` - -image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/build-options.png[Add image] - -== 7. Create SDK configuration file - -Create `OstWalletSdk.plist` file. -This file has configuration attributes used by OstWalletSdk. -You should copy paste the configuration values from below snippet. - ----- - - - - - BlockGenerationTime - 3 - PricePointTokenSymbol - OST - PricePointCurrencySymbol - USD - RequestTimeoutDuration - 30 - PinMaxRetryCount - 3 - SessionBufferTime - 3600 - UseSeedPassword - - EnableIOSDeviceRestore - - - ----- - -. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. -. PricePointTokenSymbol: This is the symbol of base currency. -So its value will be OST. -. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. -. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. -. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. -. SessionBufferTime: Buffer expiration time for session keys in seconds. -Default value is 3600 seconds. -. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. -When UseSeedPassword set to `true`, different deterministic salts are used for different keys. -. EnableIOSDeviceRestore: When EnableIOSDeviceRestore is set to `true`, After app re-installation, SDK checks for available device key in Keychain for given user id. - -*These configurations are MANDATORY for successful operation. -Failing to set them will significantly impact usage.* \ No newline at end of file diff --git a/documentation/OstCoreWorkflows.md.adoc b/documentation/OstCoreWorkflows.md.adoc deleted file mode 100644 index 4a8bcf2..0000000 --- a/documentation/OstCoreWorkflows.md.adoc +++ /dev/null @@ -1,624 +0,0 @@ -= Ost Core Workflow APIs - -Ost core workflows api do not use any UI components, thereby giving complete control to the developers. -The xref:./OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost Core Workflows. - -== Table of Contents - -* <> -* <> - ** <> - ** <> - ** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> -* <> - ** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - *** <> - ** <> - -== Import the OstWalletSdk - -To use the core workflow APIs, import the `OstWalletSdk` from '@ostdotcom/ost-wallet-sdk-react-native'. - -[source,javascript] ----- -import {OstWalletSdk} from '@ostdotcom/ost-wallet-sdk-react-native'; ----- - -== Create Workflow Callback - -The core workflows communicates with the application using callbacks. -A base callback class `OstWalletWorkFlowCallback` is given as a part of the SDK. -The base callback class gives only declaration of callback functions. -A detailed overview of callback functions is available in the later part of this readme. - -=== OstWalletWorkFlowCallback Interface - -[source,javascript] ----- -import { OstWalletWorkFlowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; - -class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { - constructor() { - super(); - } - - registerDevice(apiParams, ostDeviceRegistered) {} - - getPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} - - invalidPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} - - pinValidated(ostWorkflowContext, ostContextEntity) {} - - flowComplete( ostWorkflowContext, ostContextEntity ) {} - - flowInterrupt(ostWorkflowContext, ostError ) {} - - requestAcknowledged(ostWorkflowContext, ostContextEntity) {} - - verifyData(ostWorkflowContext, ostContextEntity, ostVerifyData) {} -} - -export default OstWalletSdkCallbackImplementation; ----- - -*Developers are expected to implement a new class for each workflow.* - -=== An example of callback implementation - -[source,javascript] ----- - -import {OstWalletWorkFlowCallback} from '@ostdotcom/ost-wallet-sdk-react-native'; - -class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { - constructor() { - super(); - } - - flowComplete(ostWorkflowContext , ostContextEntity) { - console.log('flowComplete ostWorkflowContext', ostWorkflowContext, "ostContextEntity- ", ostContextEntity); - if(Actions.currentScene !== "HomePage"){ - Actions.popTo("HomePage"); - } - if(ostWorkflowContext){ - let wfType = ostWorkflowContext.WORKFLOW_TYPE; - if( wfType !== "SETUP_DEVICE") { - Alert.alert(`${wfType} Complete!`); - } - } - store.dispatch(setLoading(false)); - } - - flowInterrupt(ostWorkflowContext , ostError) { - console.log('flowInterrupt ostWorkflowContext', ostWorkflowContext , "ostError" , ostError ); - if (ostError) { - let displayError = ostError.getErrorMessage(), - apiError, errorData; - if(ostError.isApiError()){ - apiError = ostError.getApiErrorMessage(); - if(apiError && apiError.includes('err.error_data')){ - apiError = ''; - } - errorData = ostError.getApiErrorData(); - if(errorData && errorData.length > 0){ - for(let i=0; i} tokenHolderAddresses - Token holder addresses of amount receiver. - * @param {Array} amounts -Amounts corresponding to tokenHolderAddresses to be transfered - * @param {String} ruleName - Rule name to be executed. - * @param {object} meta - additional data. - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - - OstWalletSdk.executeTransaction( userId, - tokenHolderAddresses, - amounts, - ruleName, - meta, - workflow) ----- - -==== getDeviceMnemonics - -The mnemonic phrase represents a human-readable way to authorize a new device. -This phrase is 12 words long. - -[source,javascript] ----- -/** - * Get Device mnemonics - * @param {String} userId - Ost User id - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.getDeviceMnemonics( userId, - workflow) ----- - -==== authorizeCurrentDeviceWithMnemonics - -A user that has stored their mnemonic phrase can enter it on a new mobile device and authorize that device to be able to control their tokens. - -[source,javascript] ----- - /** - * Authorize user device with mnemonics - * @param {String} userId - Ost User id - * @param {String} mnemonics - string of mnemonics - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - - OstWalletSdk.authorizeCurrentDeviceWithMnemonics(userId, - mnemonics, - workflow) ----- - -==== performQRAction - -QR codes can be used to encode transaction data for authorizing devices and making purchases via webstores, etc. -This method can be used to process the information scanned off a QR code and act on it. - -[source,javascript] ----- -/** - * Perform QR action - * @param {String} userId - Ost User id - * @param {String} data - Json string of payload is scanned by QR-Code. - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.performQRAction(userId, - data, - workflow) ----- - -==== resetPin - -The user's PIN is set when activating the user. -This method supports re-setting a PIN and re-creating the recoveryOwner. - -[source,javascript] ----- -/** - * Reset user pin - * @param {String} userId - Ost User id - * @param {String} appSalt - Passphrase prefix provided by application server - * @param {String} currentPin - user current pin - * @param {String} newPin - user new pin - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.resetPin( userId, - appSalt, - currentPin, - newPin, - workflow ) ----- - -==== initiateDeviceRecovery - -A user can control their tokens using their authorized device(s). -If a user loses their authorized device, the user can recover access to her tokens by authorizing a new device by initiating the recovery process. - -[source,javascript] ----- -/** - * Initiate device recovery - * @param {String} userId - Ost User id - * @param {String} pin - user current pin - * @param {String} appSalt - Passphrase prefix provided by application server - * @param {String} deviceAddressToRecover - Device address which wants to recover - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ -OstWalletSdk.initiateDeviceRecovery( userId, - pin, - appSalt, - deviceAddressToRecover, - workflow ) ----- - -==== abortDeviceRecovery - -To abort an initiated device recovery. - -[source,javascript] ----- -/** - * Abort device recovery - * @param {String} userId - Ost User id - * @param {String} pin - user current pin - * @param {String} appSalt - Passphrase prefix provided by application server - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ -OstWalletSdk.abortDeviceRecovery(userId, - pin , - appSalt , - workflow ) ----- - -==== logoutAllSessions - -To revoke all sessions associated with provided userId. - -[source,javascript] ----- -/** - * Logout user all sessions - * @param {String} userId - Ost User id - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ -OstWalletSdk.logoutAllSessions(userId, - workflow ) ----- - -==== revokeDevice - -To unauthorize the current device. - -[source,javascript] ----- -/** - * revokeDevice - * @param {String} userId - Ost User id - * @param {String} deviceAddress - device address - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.revokeDevice( userId , - deviceAddress , - workflow) ----- - -==== updateBiometricPreference - -To enable or disable biometrics. - -[source,javascript] ----- -/** - * Update biometric prederence - * @param {String} userId - Ost User id - * @param {boolean} enable - to enable biometric prefernce - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - OstWalletSdk.updateBiometricPreference( userId , enable ,workflow ) ----- - -=== Execute a workflow - -To execute a workflow, you need to pass an instance of `OstWalletSdkCallbackImplementation` class. -The callback implementation will be different for each workflow available in the SDK. - -[source,javascript] ----- - -import OstWalletWorkflowCallback from './OstWalletSdkCallbackImplementation'; - -onLogoutAllSessions() { - AsyncStorage.getItem('user').then((user) => { - user = JSON.parse(user); - // Note: logoutAllSessions will revoke all sessions keys from all the devices of the user. - OstWalletSdk.logoutAllSessions(user.user_details.user_id, new OstWalletWorkflowCallback(), console.warn); - }); -} ----- diff --git a/documentation/OstJsonApi.md.adoc b/documentation/OstJsonApi.md.adoc deleted file mode 100644 index cb4a2d9..0000000 --- a/documentation/OstJsonApi.md.adoc +++ /dev/null @@ -1,615 +0,0 @@ -= OST JSON APIs - -OST JSON APIs are a set of _asynchronous_ methods that make API calls to OST Platform servers. - -== Table of Contents - -* <> -* <> -* <> -* <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - *** <> -* <> - ** <> - *** <> - *** <> - ** <> - *** <> - *** <> - -++++++++++++ - -== Before We Begin - -* Although it is *NOT RECOMMENDED*, but if your app needs to allow multiple users to login on same device, the app must: - ** ensure to pass the `userId` of the currently *logged-in and authenticated* user. - ** ensure that the user has not logged-out *before* processing/displaying the response. -* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating any JSON API. -* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any JSON API. -* All `OstJsonApi` methods expect `userId` as first parameter because all requests need to be signed by the user's API key. -* It's always good to check if the device can make API calls by calling `OstWalletSdk.getCurrentDeviceForUserId` method. - ** Any device with status `REGISTERED`, `AUTHORIZING`, `AUTHORIZED`, `RECOVERING` or `REVOKING` can make this API call. - -++++++++++++ - -== JSON API Types - -The JSON APIs can be categorized into 2 groups. - -* <> - The APIs that get entities (e.g. -current-device, price-point, balance, etc.) -* <> - The APIs that get list of entities and support pagination (e.g. -device list, transactions) - -++++++++++++ - -== Importing OstJsonApi - -Use the following code to import `OstJsonApi` - ----- -import {OstJsonApi} from '@ostdotcom/ost-wallet-sdk-react-native'; ----- - -++++++++++++ - -== Entity API - -++++++++++++ - -=== Get Current Device - -API to get user's current device. - -____ -While the equivalent getter method `OstWalletSdk.getCurrentDeviceForUserId` gives the data stored in SDK's database, this method makes an API call to OST Platform. -____ - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * API to get user's current device. - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getCurrentDeviceForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => {} -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "device": { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", - "linked_address": "0x0000000000000000000000000000000000000001", - "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - "result_type": "device" -} ----- - -++++++++++++ - -=== Get Balance - -API to get user's balance. - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * Api to get user balance - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getBalanceForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => {} -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "balance": { - "updated_timestamp": 1566832497, - "unsettled_debit": "0", - "available_balance": "10000000", - "total_balance": "10000000", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - "result_type": "balance" -} ----- - -++++++++++++ - -=== Get Price Points - -API to get price-points of token's staking currency (OST or USDC). - -____ -This API call is generally needed to compute the current fiat value to your brand-tokens. -E.g. -displaying user's balance in fiat. -____ - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * Api to get user balance - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getPricePointForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => {} -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "price_point": { - "USDC": { - "updated_timestamp": 1566834913, - "decimals": 18, - "GBP": 0.8201717727, - "EUR": 0.9028162679, - "USD": 1.0025110673 - } - }, - "result_type": "price_point" -} ----- - -++++++++++++ - -=== Get Balance And Price Points - -This is a convenience method that makes `OstJsonApi.getBalanceForUserId` and `OstJsonApi.getPricePointForUserId` API calls and merges the response. - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * Api to get user balance - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getBalanceWithPricePointForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => {} -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "balance": { - "updated_timestamp": 1566832497, - "unsettled_debit": "0", - "available_balance": "10000000", - "total_balance": "10000000", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - "price_point": { - "USDC": { - "updated_timestamp": 1566834913, - "decimals": 18, - "GBP": 0.8201717727, - "EUR": 0.9028162679, - "USD": 1.0025110673 - } - }, - "result_type": "balance" -} ----- - -++++++++++++ - -=== Get Pending Recovery - -API to get user's pending recovery. -A pending recovery is created when the user recovers the device using their PIN. - -____ -This API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. -____ - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - -/** - * Api to get user balance - * @param {String} userId - Ost User id - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ -OstJsonApi.getPendingRecoveryForUserId( - userId, - (data) => { - console.log(data); - }, - (error, response) => { - console.log( error ); - if ( error.is_api_error ) { - if ( "UNPROCESSABLE_ENTITY" === String(error.api_error.code).toUppercase() ) { - console.log("User does not have any recovery in progress."); - // You can safely ignore this error. - return; - } - } - } -) ----- - -++++++++++++ - -.Sample Response -[source,json] ----- - { - "devices": [ - { - "updated_timestamp": 1566902100, - "status": "REVOKING", - "api_signer_address": "0x903ad1a1017c14b8e6b0bb1dd32d3f65a8741732", - "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", - "address": "0x629e13063a2aa24e2fb2a49697ef871806071550", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566902100, - "status": "RECOVERING", - "api_signer_address": "0x6f5b1b8df95cbc3bd8d18d6c378cef7c34644729", - "linked_address": "null", - "address": "0x33e736a4761bc07ed54b1ceb82e44dfb497f478c", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - } - ], - "result_type": "devices" -} ----- - -++++++++++++ - -.Sample Error - -The `getPendingRecoveryForUserId` API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. - -[source,json] ----- -{ - "api_error": { - "internal_id": "***********", - "error_data": [], - "msg": "Initiate Recovery request for user not found.", - "code": "UNPROCESSABLE_ENTITY" - }, - "is_api_error": 1, - "error_message": "OST Platform Api returned error.", - "internal_error_code": "***********", - "error_code": "API_RESPONSE_ERROR" -} ----- - -++++++++++++ - -== List API - -All `List` APIs support pagination. -The response of all `List` APIs has an extra attribute `meta`. -To determine if next page is available, the app should look at `meta.next_page_payload`. -If `meta.next_page_payload` is an empty object (`{}`), next page is not available. - -++++++++++++ - -=== Get Transactions - -API to get user's transactions. - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; -let nextPagePayload = null; - -/** - * Api to get user's transactions - * @param {String} userId - Ost User id - * @param {Object} nextPagePayload (@nullable). Pass null to get first page. - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getTransactionsForUserId(userId, nextPagePayload, - (response) => { - console.log(response); - // Let's check if more pages of data is available. - if ( response.meta ) { - let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; - if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { - // Next page is available. - // Update nextPagePayload - nextPagePayload = nextPagePayloadFromResponse; - // To fetch the next page, pass the updated nextPagePayload. - } - } - }, - (error) => { - console.log("An error has occurred while fetching transactions."); - console.log( error ); - }); ----- - -++++++++++++ - -.Sample Response - -Please refer to the https://dev.ost.com/platform/docs/api/#transactions[Transactions Object] for a detailed description. - -[source,json] ----- -{ - "meta": { - "total_no": 14, - "next_page_payload": { - "pagination_identifier": "*****************************************************" - } - }, - "transactions": [ - { - "meta_property": { - "details": "Awesome Post", - "type": "user_to_user", - "name": "Like" - }, - "rule_name": "Direct Transfer", - "block_timestamp": 1566843589, - "block_confirmation": 969, - "transaction_fee": "94234000000000", - "gas_price": "1000000000", - "nonce": 613, - "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", - "id": "4efa1b45-8890-4978-a5f4-8f9368044852", - "transfers": [ - { - "kind": "transfer", - "amount": "200000", - "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", - "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", - "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", - "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" - } - ], - "block_number": 3581559, - "updated_timestamp": 1566843589, - "status": "SUCCESS", - "gas_used": 94234, - "value": "0", - "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", - "transaction_hash": "0xee8033f9ea7e9bf2d74435f0b6cc172d9378670e513a2b07cd855ef7e41dd2ad" - }, - { - "meta_property": { - "details": "Nice Pic", - "type": "user_to_user", - "name": "Fave" - }, - "rule_name": "Direct Transfer", - "block_timestamp": 1566843547, - "block_confirmation": 983, - "transaction_fee": "109170000000000", - "gas_price": "1000000000", - "nonce": 612, - "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", - "id": "7980ee91-7cf1-449c-bbaf-5074c2ba6b29", - "transfers": [ - { - "kind": "transfer", - "amount": "1600000", - "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", - "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", - "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", - "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" - } - ], - "block_number": 3581545, - "updated_timestamp": 1566843549, - "status": "SUCCESS", - "gas_used": 109170, - "value": "0", - "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", - "transaction_hash": "0x3e3bb3e25ab3a5123d1eaf20e1c31ab88bd56500c5cdfd2e32025c4df32735b3" - }, - ... - ... - ], - "result_type": "transactions" -} ----- - -++++++++++++ - -=== Get Devices - -API to get user's devices. - -++++++++++++ - -.Usage -[source,javascript] ----- -/* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. -*/ -let userId = "71c59448-ff77-484c-99d8-abea8a419836"; -let nextPagePayload = null; - -/** - * Api to get user's device - * @param {String} userId - Ost User id - * @param {Object} nextPagePayload (@nullable). Pass null to get first page. - * @param {function} Success callback with success data - * @param {function} Failure callback with error and failure response - * @public - */ - -OstJsonApi.getDeviceListForUserId(userId, nextPagePayload, - (response) => { - console.log(response); - // Let's check if more pages of data is available. - if ( response.meta ) { - let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; - if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { - // Next page is available. - // Update nextPagePayload - nextPagePayload = nextPagePayloadFromResponse; - // To fetch the next page, pass the updated nextPagePayload. - } - } - }, - (error) => { - console.log("An error has occurred while fetching devices."); - console.log( error ); - }); ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "meta": { - "next_page_payload": {} - }, - "devices": [ - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", - "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", - "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566839512, - "status": "AUTHORIZED", - "api_signer_address": "0x2e12c4f6a27f7bdf8e58e628ec29bb4ce49c315e", - "linked_address": "0x0000000000000000000000000000000000000001", - "address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - } - ], - "result_type": "devices" -} ----- diff --git a/documentation/OstTransactionConfig.md.adoc b/documentation/OstTransactionConfig.md.adoc deleted file mode 100644 index a3687b8..0000000 --- a/documentation/OstTransactionConfig.md.adoc +++ /dev/null @@ -1,46 +0,0 @@ -= OstTransaction Config - -== Introduction - -App developers can configure session `expiration_time` and `spending_limit` while executing transaction. -To configure the session creation parameters (session buckets), provide the sdk with JSON object. -The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. - -== Configuration Data Structure - -Here is the small sample json representation of the configuration. - -[source,js] ----- -{ - "session_buckets": [ - { - expiration_time: 60*60*24*30*2, //2 months - spending_limit: '10' - }, - { - expiration_time: 60*60*24*30, //1 months - spending_limit: '50' - }, - { - expiration_time: 60*60*24, //24 hours - spending_limit: '100' - }, - { - expiration_time: 60*60*1, //1 hour - spending_limit: '1000' - } - ] -} ----- - -In the above example: - -* The first-level key `session_buckets` corresponds to list of buckets for creating session. -The bucket selection is depends on `spending_limit`. -* The second-level keys - ** `expiration_time` : corresponds to expiry time of session. - ** `spending_limit` : corresponds to spending limit of session. - -Above configuration allows user to execute transction of spending limit `1000`. -SDK throws error, if user makes transaction above `1000`. diff --git a/documentation/OstTransactionHelper.md.adoc b/documentation/OstTransactionHelper.md.adoc deleted file mode 100644 index e60c1a2..0000000 --- a/documentation/OstTransactionHelper.md.adoc +++ /dev/null @@ -1,94 +0,0 @@ -= Ost Transaction Helper - -== Introduction - -Developer can call functions of transaction helper to execute transaction and setting up config for transaction. - -== Configuration - -App developers can configure session `expiration_time` and `spending_limit` while executing transaction. -To configure the session creation parameters (session buckets), the sdk needs to be provided with JSON object. -The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. - -=== Configuration Data Structure - -Here is the small sample json representation of the configuration. - -[source,js] ----- -{ - "session_buckets": [ - { - expiration_time: 60*60*24*30*2, //2 months - spending_limit: '10' - }, - { - expiration_time: 60*60*24*30, //1 months - spending_limit: '50' - }, - { - expiration_time: 60*60*24, //24 hours - spending_limit: '100' - }, - { - expiration_time: 60*60*1, //1 hour - spending_limit: '1000' - } - ] -} ----- - -In the above example: - -* The first-level key `session_buckets` corresponds to list of buckets for creating session. -The bucket selection is depends on `spending_limit`. -* The second-level keys - ** `expiration_time` : corresponds to expiry time of session. - ** `spending_limit` : corresponds to spending limit of session. - -Above configuration allows user to execute transction of spending limit `1000`. -SDK throws error, if user makes transaction above `1000`. - -=== Set Transaction Config - -Developer can set list of buckets for creating session. -For details, Please refer xref:./OstTransactionConfig.adoc[this] - -[source,js] ----- -import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" - -OstTransactionHelper.setTxConfig(ost-tx-config); ----- - -== Execute Direct Transfer - -Execute direct transfer can be performed by calling - -____ -*Note* + Developer needs to create a class extends from OstWalletUIWorkflowCallback and write logic to get passphrase prefix from their application server. -Please refer xref:./OstWalletUI.adoc[this] section for documentation. -____ - -[source,js] ----- -import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" - -const ostUserId = -const txMeta = {"type": "user_to_user", "name": "Tokens sent", "details": "Sending tokens vis direct transafer"}; -const workflowCallback = new OstWalletUIWorkflowCallback() - -let uuid = OstTransactionHelper.executeDirectTransfer(ostUserId, [tokenValue], [token_holder_address], txMeta, workflowCallback); - -OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowComplete, (workflowContext, contextEntity) => { - //functionality for transaction success -}); -OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowInterrupt, (workflowContext, ostError) => { - //functionality for transaction failed -}); -OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.requestAcknowledged, (workflowContext, contextEntity) => { - //functionality for transaction ack. -}); ----- - -New session will be created with appropriate bucket, if sdk won't get any active session for given spending limit. diff --git a/documentation/OstWalletSdkGetMethods.md.adoc b/documentation/OstWalletSdkGetMethods.md.adoc deleted file mode 100644 index 2d4c2db..0000000 --- a/documentation/OstWalletSdkGetMethods.md.adoc +++ /dev/null @@ -1,395 +0,0 @@ -= OST Wallet React Native SDK Getter Methods - -== Table of Contents - -* <> -* <> - ** <> - ** <> -* <> - ** <> - ** <> -* <> - ** <> - ** <> -* <> - ** <> -* <> - ** <> - ** <> -* <> - ** <> - ** <> - -++++++++++++ - -== Before We Begin - -* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating getter methods. -* We recommend using these methods _after_ link:../README.md#setupdevice[setupDevice] workflow has been performed. -* The getter methods provide the data as available with the device. - ** The methods may return `null` if the data is not available. -* These methods are _synchronous_ in the native SDK. -Because of react-native's bridge they behave _asynchronous_ in the react-native SDK. - ** These methods do not make any API calls. - -++++++++++++ - -== Get Token - -Method to get token information. - -____ -`getToken` method will return partial data if device has not been registered. -____ - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update tokenId as per your needs. - Since this tokenId does not belong to your economy, you may get an error if you do not change it. - */ - let tokenId = '1129'; - - /** - * Get token object for provided userId - * @param {String} tokenId - Ost Token id - * @param {function} callback - Gets token object if present else nil - * @callback params {Object} token entity. Returns null if information is not available with device. - * @public - */ - OstWalletSdk.getToken(tokenId, (tokenEntity) => { - console.log("tokenEntity", tokenEntity); - }); ----- - -++++++++++++ - -.Sample Response - -Please refer to the https://dev.ost.com/platform/docs/api/#token[Token Object] for a detailed description. - -[source,json] ----- -{ - "updated_timestamp": 1560167796, - "auxiliary_chains": [ - { - "organization": { - "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", - "contract": "0xb8e3fcfb5dac714e40b63489f4f393c7073fdbb3" - }, - "company_uuids": [ - "d6bf0061-a32d-48af-a29b-013260a947f3" - ], - "company_token_holders": [ - "0x93f08d0c5d7bc28cc117681b3b23f8501a09e786" - ], - "utility_branded_token": "0xc50e3fd492a9a99a964f7aff8d755075d0732ff0", - "chain_id": 197 - } - ], - "origin_chain": { - "stakers": [ - "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637" - ], - "organization": { - "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", - "contract": "0x0260a404804b1d7cf6fa678fb5d8441495cfff1b" - }, - "branded_token": "0x18cbeae2f1785abf68c9984f9186a29ed062c3ca", - "chain_id": 3 - }, - "decimals": 6, - "total_supply": "500000000000", - "conversion_factor": 10, - "base_token": "USDC", - "symbol": "SC1", - "name": "STC1", - "id": 1129 -} ----- - -++++++++++++ - -== Get User - -Method to get user information. - -____ -`getUser` method will return partial data if device has not been registered. -____ - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId as per your needs. - Since this userId does not belong to your economy, you will get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - - /** - * Get user object for provided userId - * @param {String} userId - Ost User id - * @param {function} callback - Gets object if present else nil - * @callback params {Object}user - * @public - */ - OstWalletSdk.getUser(userId, (userEntity)=>{ - console.log( userEntity ); - }); ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "updated_timestamp": 1566832473, - "status": "ACTIVATED", - "type": "user", - "recovery_owner_address": "0x0a64dc924d32a569b1d0885acfc34832e1444944", - "recovery_address": "0x99c46a66621d6967cbd692e615ec36747d58fecb", - "device_manager_address": "0x55f379612796b863590d388ed509ae50de12a5d2", - "token_holder_address": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", - "token_id": 1129, - "id": "71c59448-ff77-484c-99d8-abea8a419836" -} ----- - -++++++++++++ - -== Get Current Device - -Method to get device entity. - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId as per your needs. - Since this userId does not belong to your economy, you may get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - - /** - * Get current device object for provided userId - * @param {String} userId - Ost User id - * @param {function} callback - Gets current device object if present else nil - * @callback params {Object} device - * @public - */ - OstWalletSdk.getCurrentDeviceForUserId(userId, (device)=>{ - console.log( device ); - }); ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -{ - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", - "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", - "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" -} ----- - -++++++++++++ - -== Get Biometric Preference - -Method to get biometric preference of the user. - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId as per your needs. - Since this userId does not belong to your economy, you may get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - - /** - * Get biometric preference for user - * - * @param userId - Ost User id - * @param callback - Gets biometric preference boolean value - */ - OstWalletSdk.isBiometricEnabled(userId, (status) => { - console.log("isBiometricEnabled", status ); - // logs true or false. - }); ----- - -++++++++++++ - -== Get Active Sessions - -Method to get active sessions available with device. - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId and minimumSpendingLimitInWei as per your needs. - Since this userId does not belong to your economy, you may get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - let minimumSpendingLimitInWei = "1000000"; - - /** - * Get user object for provided userId - * @param {String} userId - Ost User id - * @param {String} minimumSpendingLimitInWei - optional parameter, defaults to zero. - * @param {function} callback - Gets array of current device sessions. - * @callback params {Array} array of sessions - * @public - */ - OstWalletSdk.getActiveSessionsForUserId(userId, minimumSpendingLimitInWei, (activeSessions)=>{ - console.log(activeSessions); - }); - - - // Optionally, getActiveSessionsForUserId method can also - // be invoked without specifying minimumSpendingLimitInWei. - OstWalletSdk.getActiveSessionsForUserId(userId,(activeSessions)=>{ - console.log(activeSessions); - }); ----- - -++++++++++++ - -.Sample Response -[source,json] ----- -[ - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 2, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0x3171bce99d00812b77aa216ed544ab35fc8b6fb1", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 2, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0x816324ed539b62652a247ce5c1f1962f6de13e14", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 3, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0x95b3fcb5aa3930a9bc42da171b8733a3a869955f", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 3, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0xe57b68fc8aca57d9488d1607df628a4076571eda", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - }, - { - "updated_timestamp": 1566832473, - "status": "AUTHORIZED", - "nonce": 2, - "spending_limit": "1000000000000000000", - "approx_expiration_timestamp": 1566922426, - "expiration_height": 3607838, - "address": "0x459712cb13efd12ade7ff3a5fd4641f5c21904c9", - "user_id": "71c59448-ff77-484c-99d8-abea8a419836" - } -] ----- - -++++++++++++ - -== QR Code for Authorizing Device - -Method to generate QR code that can be scanned by an *authorized* device. -Scanning this QR code with an authorized mobile device will result in this device (from where the QR code has been generated) being authorized. - -____ -App should use this method only when the current device status is `REGISTERED`. -____ - -++++++++++++ - -.Usage -[source,js] ----- - /* - Please update userId and minimumSpendingLimitInWei as per your needs. - Since this userId does not belong to your economy, you may get an error if you do not change it. - */ - let userId = "71c59448-ff77-484c-99d8-abea8a419836"; - - /** - * Get device QR code - * @param {String} userId - Ost User id - * @param {function} successCallback - returns image as base64 string. - * @param {function} errorCallback. - * @public - */ - OstWalletSdk.getAddDeviceQRCode( userId , (base64Image) => { - console.log(base64Image); - // Assuming this method is called from Component, - // let's update the component's state to display the image. - this.setState({ - qrCode: base64Image - }); - }, (error) => { - - }); ----- - -++++++++++++ - -.Sample Render Method -[source,jsx] ----- - render() { - // Assuming that callback will set 'qrCode' attribute in component's state. - if ( this.state.qrCode ) { - return ( - - ); - } - return null; - } ----- diff --git a/documentation/OstWalletSettings.md.adoc b/documentation/OstWalletSettings.md.adoc deleted file mode 100644 index 45115b0..0000000 --- a/documentation/OstWalletSettings.md.adoc +++ /dev/null @@ -1,78 +0,0 @@ -= OstWallet Settings - -== Introduction - -OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. -It is a wallet settings page that can be used by end-users to perfrom different wallet operations. - -____ -*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. -____ - -OstWalletSettings supports 13 workflows: - -* Activate User -* Wallet Details -* Initialize Recovery -* Add Session -* Reset a User's PIN -* Get Mnemonic Phrase -* Authorize device using mnemonics -* Abort Device Recovery -* Revoke Device -* Scan QR Code to add another device -* Get Current Device QR code -* Enable Biometrics -* Disable Biometrics - -== Usage - -=== Create wallet settings stack navigation - -[source,js] ----- -import {OstWalletSettingsComponent} from '@ostdotcom/ost-wallet-sdk-react-native'; - -let settingsStack = createStackNavigator( - { - "WalletSettingScreen": OstWalletSettingsComponent - } -); ----- - -=== Naviagte to settings page - -`ostUserId` and `ostWalletUIWorkflowCallback` are mandetory parameters that need to be passed as params to the `WalletSettingScreen` screen. - -[source,js] ----- -const ostUserId = -const delegate = new OstWalletUIWorkflowCallback(ostUserId, {}) -this.props.navigation.push("WalletSettingScreen", {'ostUserId': ostUserId, 'ostWalletUIWorkflowCallback': delegate}); ----- - -____ -*Note* + Developer needs to create a class extends from `OstWalletUIWorkflowCallback` and write logic to get passphrase prefix from their application server. -Please refer link:OstWalletUI.md#setup-your-passphrase-prefix-delegate[this] section for documentation. -____ - -== UI Customization - -Developer can customize wallet settings by updating respective properties mentioned in image. -OstTheme config shown link:./configs/ost-sdk-theme-config.js[here] - -image:images/wallet_settings.png[copy-framework-file] image:images/wallet_details.png[copy-framework-file] - -== Settings Content - -Developer can modify `header` and `description` of settings options. -To modify contet, xref:./OstWalletSettingsConfig.adoc[refer here]. - -[source,js] ----- -import {OstWalletSettings} from "@ostdotcom/ost-wallet-sdk-react-native/js/index"; - -let settingsContentConfig = {} - -OstWalletSettings.setMasterConfig(settingsContentConfig) ----- diff --git a/documentation/OstWalletSettingsConfig.md.adoc b/documentation/OstWalletSettingsConfig.md.adoc deleted file mode 100644 index f441cb3..0000000 --- a/documentation/OstWalletSettingsConfig.md.adoc +++ /dev/null @@ -1,121 +0,0 @@ -= OstWallet Settings Config - -== Introduction - -App developers can configure the text shown on settings page. - -To configure the content, the sdk needs to be provided with https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON[JSON object]. - -The default configuration can be found link:../js/WalletSettings/ost-wallet-settings-config.json[here]. - -== Dictionary Data Structure - -Here is the small sample json representation of the configuration. - -[source,json] ----- -{ - "item_display_order": [ - "activate_user", - ], - "item_configs": { - "activate_user": { - "content_config": { - "heading": "Activate User", - "description": "User is not activated yet." - }, - "config": { - "spending_limit": "0", - "expiration_time": 0 - } - } - } -} ----- - -In the above example: - -* The first-level key `item_display_order` corresponds to sequence of allowed workflows. -* The first-level key `item_configs` corresponds to config for workflows. -* The second-level key `activate_user` corresponds to activate user workflow. -* The third-level key `content_config` corresponds to `heading` and `description` of workflows. -* The third-level key `config` corresponds to respective config for workflows. - -== Supported Workflows - -OstWalletSettings supports 13 workflows - -|=== -| Configuration Keys | Workflows - -| activate_user -| Activate User - -| wallet_details -| Wallet Details - -| recover_device -| Initialize Recovery - -| add_session -| Add Session - -| reset_pin -| Reset a User's PIN - -| show_mnemonics -| Get Mnemonic Phrase - -| authorize_device_with_mnemonics -| Authorize device using mnemonics - -| abort_recovery -| Abort Device Recovery - -| revoke_device -| Revoke Device - -| add_another_device -| Scan QR Code to add another device - -| show_device_qr_code -| Get current Device QR code - -| enable_biometrics -| Use biometrics to authorize new Sessions and to confirm high value transactions. - -| disable_biometrics -| Turn off biometrics and use PIN to authorize new Sessions and to confirm high value transactions. -|=== - -* All workflows have `content_config`. -* `config` varies workflow to workflow. - -== Workflow Config - -Some workflows requires additional data. -It can be passed to workflow by setting it in `config`. - -|=== -| Workflows | Config Keys | Config Type - -| activate_user -| - spending_limit -| String - -| -| - expiration_time -| Number - -| wallet_details -| - ost_view_endpoint -| String - -| add_session -| - spending_limit -| String - -| -| - expiration_time -| Number -|=== diff --git a/documentation/OstWalletUI.md.adoc b/documentation/OstWalletUI.md.adoc deleted file mode 100644 index 19fd2db..0000000 --- a/documentation/OstWalletUI.md.adoc +++ /dev/null @@ -1,842 +0,0 @@ -= OST Wallet React Native SDK UI - -== Introduction - -For quick and easy integration with SDK, developers can use built-in user interface components which are configurable and support content and theme customization. -All OstWalletSdkUI workflows return `workflow-id`. -The application can subscribe to the events of the workflow using the `workflow-id`. - -== Setup - -`OstWalletSdkUI` is packaged along with OstWalletSdk. -There are no additional steps for using `OstWalletSdkUI`. -To setup OstWalletSdk, please refer to link:../README.md#installing-react-native-sdk[setup]. - -== Before We Begin - -* App must link:../README.md#initializing-the-sdk[initialize] the sdk _*before*_ initiating any UI workflows. -* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any UI workflows. - -== OstWalletSdkUI SDK APIs - -To use OstWalletSdkUI - ----- -import {OstWalletSdkUI} from '@ostdotcom/ost-wallet-sdk-react-native'; ----- - -=== Set Theme Config - -Theme for OstWalletSdkUI can be initialized by calling `setThemeConfig` API which setup OstWalletSdkUI theme config. -To define custom theme config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ThemeConfig.md[Theme Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ThemeConfig.md[Theme Config iOS] documentation. - -[source,js] ----- - // Define the content config - const theme_config = { - "nav_bar_logo_image": { - "asset_name": "YOUR_LOGO_ASSET_NAME" - } - }; - - /** - * Set theme config for UI - * config: Config to use for UI - */ - OstWalletSdkUI.setThemeConfig(theme_config); ----- - -____ -* In the above example, `asset_name` is name of asset which is present in the respective assets folder for iOS/android. -____ - -=== Set Content Config - -Content for OstWalletSdkUI can be initialized by calling `setContentConfig` API which set-up OstWalletSdkUI content config. -To define custom content config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ContentConfig.md[Content Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ContentConfig.md[Content Config iOS] documentation. - -[source,js] ----- - // Please update terms_and_condition.url as per your needs. - const content_config = { - "activate_user": { - "create_pin": { - "placeholders": { - "terms_and_condition": { - "url": "https://YOUR-WEB-SITE.com/terms-page" - } - } - }, - "confirm_pin": { - "placeholders": { - "terms_and_condition": { - "url": "https://YOUR-WEB-SITE.com/terms-page" - } - } - } - } - }; - - /** - * Set content config for UI - * config: Config to use for UI - */ - OstWalletSdkUI.setContentConfig(content_config); ----- - -=== Set Loader Manager - -Application loader for OstWalletUI can be initialized by calling `setLoaderManager` API. -This API is available in native SDK. -+ + Custom loader is supported from OstWalletSdk-native version Android v``2.3.6`` Or iOS v``2.3.5`` + Please, verify OstWalletSdk version in `Cartfile`. -+ + Custom loader needs to be written in native code (java, swift/Objective-C). -+ Sample code for custom loader is available in respective platform directory. -For https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/Samples/CustomLoader/OstMockCustomLoader.md[iOS] and https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/Samples/customloader/OstCustomLoader.md[Android] - -=== Setup your Passphrase Prefix Delegate - -`Passphrase Prefix` is a salt provided by your application that assists in generation of User's recovery key using user's PIN. -This salt should be _unique_ for each user, is immutable and needs to be associated with the user. -The salt should not be stored in memory or on deivce unencrypted. -When the UI workflow need's to ask for user's PIN, delegate's getPassphrase method is invoked. - -The delegate must be derived from `OstWalletUIWorkflowCallback` class. - -Here is an example: - -[source,javascript] ----- -import { OstWalletUIWorkflowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; -class UserPassphrasePrefixDelegate extends OstWalletUIWorkflowCallback { - constructor() { - super(); - } - - getPassphrase(userId, ostWorkflowContext, OstPassphrasePrefixAccept) { - let fetchPromise = new Promise((resolve,reject) => { - //Write code here to validate userId. - //If it is not the same as that of the logged-in user, reject the promise. - - //Write code here to fetch the salt from your server. - //Read the passphrasePrefix from response and resolve the Promise. - }); - fetchPromise - .then((passphrasePrefix) => { - OstPassphrasePrefixAccept.setPassphrase(passphrasePrefix, userId, (error) => { - console.warn(error); - }); - }) - .catch((err) => { - // Cancel the workflow. - OstPassphrasePrefixAccept.cancelFlow(); - }); - } - - /** - * Optional Callback Implementation - * -------------------------------- - * - * Application can also define and use following callback methods: - * - requestAcknowledged(ostWorkflowContext , ostContextEntity ) - * - flowComplete(ostWorkflowContext , ostContextEntity ) - * - flowInterrupt(ostWorkflowContext , ostError) - * - * Note: - * These methods can be helpful for debugging. - * Defining these methods does NOT impact ui workflow event subscription in any way. - * If application subscribes to events and also defines these callbacks, both shall be invoked. - */ - - requestAcknowledged(ostWorkflowContext , ostContextEntity ) { - console.log("Received requestAcknowledged callback"); - - let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; - let workflowType = ostWorkflowContext.WORKFLOW_TYPE; - let entityType = ostContextEntity.entityType; - let entityData = ostContextEntity.entity; - - console.log("- Workflow Id:", contextWorkflowId); - console.log("- Workflow Type:", workflowType); - console.log("- OstContextEntity type:", entityType) - console.log("- OstContextEntity entityData:", entityData); - } - - flowComplete(ostWorkflowContext , ostContextEntity ) { - console.log("Received flowComplete callback"); - - let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; - let workflowType = ostWorkflowContext.WORKFLOW_TYPE; - let entityType = ostContextEntity.entityType; - let entityData = ostContextEntity.entity; - - console.log("- Workflow Id:", contextWorkflowId); - console.log("- Workflow Type:", workflowType); - console.log("- OstContextEntity type:", entityType) - console.log("- OstContextEntity entityData:", entityData); - } - - flowInterrupt(ostWorkflowContext , ostError) { - console.log("Received flowInterrupt callback"); - - let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; - let workflowType = ostWorkflowContext.WORKFLOW_TYPE; - let errorData = ostError.error; - let errorCode = ostError.getErrorCode(); - - // If you would like to reach out to Ost Devs for support, - // we request you to collect internalErrorCode - let internalErrorCode = ostError.getInternalErrorCode(); - let isApiError = ostError.isApiError(); - - console.log("- Workflow Id:", contextWorkflowId); - console.log("- Workflow Type:", workflowType); - console.log("- Error"); - console.log(" - Error Code:", errorCode); - console.log(" - Is Api Error:", isApiError); - console.log(" - Sdk Internal Error Code", internalErrorCode); - console.log(" - error data", errorData); - - if ( isApiError && ostError.isApiSignerUnauthorized() ) { - console.log("- This device has either been revoked or not yet registered."); - } else if ("WORKFLOW_CANCELED" === errorCode.toUpperCase() ) { - console.log("- This error can be ignored. The workflow has been canceled by the user or application"); - } - } -} -export default UserPassphrasePrefixDelegate; ----- - -=== Ost Wallet Settings - -OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. -It is a wallet settings page that can be used by end-users to perfrom different wallet operations(Ost Wallet UI Workflows). -For details xref:./OstWalletSettings.adoc[check here] - -____ -*Note* + `OstWalletSettings` is available from `ost-wallet-sdk-react-native` SKD version v2.3.12-beta.1 -____ - -=== Ost Wallet UI Workflows - -==== Activate User - -User activation refers to the deployment of smart-contracts that form the user's token wallet. -An activated user can engage with a token. - -[source,javascript] ----- - -let uiCallback = new UserPassphrasePrefixDelegate() - -/** -* Activate user -* @param {String} userId - Ost User id -* @param {String} expiresAfterInSecs - session key expiry time. -* @param {String} spendingLimit - spending limit once in a transaction of session -* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication -* @public -*/ -let workflowId = OstWalletSdkUI.activateUser( - userId, - expiresAfterInSecs, - spendingLimit, - uiCallback -); - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // User is being activated. At this point, user can neither receive or send tokens. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // User has been activated. User can now start receiving tokens. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. The user has NOT been activated. -}); ----- - -==== Add Session - -A session is a period of time during which a sessionKey is authorized to sign transactions under a pre-set limit per transaction on behalf of the user. -The device manager, which controls the tokens, authorizes sessions. - -[source,js] ----- - -let uiCallback = new UserPassphrasePrefixDelegate() - -/** - * Add user session - * @param {String} userId - Ost User id - * @param {String} expiresAfterInSecs - session key expiry time. - * @param {String} spendingLimit - spending limit once in a transaction of session - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ -let workflowId = OstWalletSdkUI.addSession( - userId, - expiresAfterInSecs, - spendingLimit, - uiCallback -) - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Session is being added. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Session has been added. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. The Session has NOT been added. -}); ----- - -==== Get Mnemonic Phrase - -The mnemonic phrase represents a human-readable way to authorize a new device. -This phrase is 12 words long. - -[source,js] ----- -let uiCallback = new UserPassphrasePrefixDelegate() - -/** - * Get device mnemonics - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ -let workflowId = OstWalletSdkUI.getDeviceMnemonics( - userId, - uiCallback -) - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // User has seen the mnemonics -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. -}); ----- - -==== Reset a User's PIN - -The user's PIN is set when activating the user. -This method supports re-setting a PIN and re-creating the recoveryOwner as part of that. - -[source,js] ----- - -let uiCallback = new UserPassphrasePrefixDelegate() - -/** - * Reset pin - * - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - */ -let workflowId = OstWalletSdkUI.resetPin( - userId, - uiCallback -) - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Pin is being reset. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Workflow completed successfully. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. -}); ----- - -==== Initiate Recovery - -A user can control their tokens using their authorized device(s). -If the user loses their authorized device, she can recover access to their tokens by authorizing a new device via the recovery process. - -If application set `recoverDeviceAddress` then OstWalletUI ask for `pin` to initiate device recovery. -Else it displays authorized device list for given `userId` to select device from. - -[source,javascript] ----- - -let uiCallback = new UserPassphrasePrefixDelegate(); - -/** -* Initiate device recovery -* @param {String} userId - Ost User id -* @param {String} recoverDeviceAddress - Device address which wants to recover -* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication -* @public -*/ -let workflowId = OstWalletSdkUI.initiateDeviceRecovery( - userId, - recoverDeviceAddress, - uiCallback -) - -// Subscribe to events -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Device recovery has been initiated. - // The device will be recovered after 12 hours. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device recovery has been initiated. - // The device will be recovered after 12 hours. -}); - -OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. -}); ----- - -____ -`recoverDeviceAddress` can be `null`. -+ If you have your own UI to select the device to revoke, set `recoverDeviceAddress` to the selected device address. -+ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. -+ -____ - -==== Abort Device Recovery - -To abort initiated device recovery. - -[source,javascript] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Abort device recovery - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - OstWalletSdkUI.abortDeviceRecovery( - userId, - uiCallback - ) - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Request has been acknowledged by OST Platform. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device recovery has been aborted. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -==== Revoke Device - -To revoke device access. - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Revoke device - * @param {String} userId - Ost User id - * @param {String} deviceAddressToRevoke - Device address which wants to recover - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.revokeDevice(userId, deviceAddressToRevoke, uiCallback ); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Request has been acknowledged by OST Platform. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device has been revoked. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -____ -`deviceAddressToRevoke` can be `null`. -+ If you have your own UI to select the device to revoke, set `deviceAddressToRevoke` to the selected device address. -+ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. -+ -____ - -==== Update Biometric Preference - -To enable or disable the biometric. - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - let shouldEnable = true; - - /** - * Update biometric preference - * @param {String} userId - Ost User id - * @param {boolean} shouldEnable - pass true to enable biometic preference, false to disable. - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.updateBiometricPreference( userId, shouldEnable, uiCallback ); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Preference has been updated. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -==== Authorize Current Device With Mnemonics - -To add a new device using 12 words recovery phrase. - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - /** - * Authorize user device with mnemonics - * @param {String} userId - Ost User id - * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.authorizeCurrentDeviceWithMnemonics(userId, uiCallback); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Request has been acknowledged by OST Platform. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device has been authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -==== Get Add Device QR-Code - -To show QR-Code to scan from another authorized device - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Get add device QR code - * - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.getAddDeviceQRCode(userId, uiCallback); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Current Device is being authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Current Device has been authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -=== Scan QR-Code to Authorize Device - -To authorize device by scanning device QR-Code. - -QR-Code Sample: - -[source,json] ----- -{ - "dd":"AD", - "ddv":"1.1.0", - "d":{ - "da": "0x7701af46018fc57c443b63e839eb24872755a2f8" - } -} ----- - -[source,js] ----- - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Scan QR-Code to authorize device - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.scanQRCodeToAuthorizeDevice(userId, uiCallback); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Device is being authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Device has been authorized. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -=== Execute Transaction - -* ++++++By Scanning QR-Code ++++++ + To execute transaction via device by scanning device QR-Code. - -QR-Code Sample: - -[source,json] ----- -{ - "dd":"TX", - "ddv":"1.1.0", - "d":{ - "rn":"direct transfer", - "ads":[ - "0x7701af46018fc57c443b63e839eb24872755a2f8", - "0xed09dc167a72d939ecf3d3854ad0978fb13a8fe9" - ], - "ams":[ - "1000000000000000000", - "1000000000000000000" - ], - "tid": 1140, - "o":{ - "cs":"USD", - "s": "$" - } - }, - "m":{ - "tn":"comment", - "tt":"user_to_user", - "td":"Thanks for comment" - } -} ----- - -[source,js] ----- - - let uiCallback = new UserPassphrasePrefixDelegate(); - - /** - * Scan QR-Code to execute transaction - * - * @param {String} userId - Ost User id - * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication - * @public - */ - let workflowId = OstWalletSdkUI.scanQRCodeToExecuteTransaction(userId, uiCallback); - - // Subscribe to events - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { - // Transaction is being executed. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { - // Show success message to user. - // Transaction has been executed successfully. - }); - - OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { - // Show error to user. - // An error occoured during the workflow. - }); ----- - -* *By Calling function* + Helper method creates session if active sessoin for transction amount is not available. -To execute transaction via helper method, xref:./OstTransactionHelper.adoc[ref here] - -== Ost Wallet UI Events and Listeners - -=== Subscribe - -Subscribe to specified event of UI Workflow - -Supported `EventName` are: - -* requestAcknowledged -* flowComplete -* flowInterrupt - -You can retrive event names from Sdk: - -[source,javascript] ----- -OstWalletSdkUI.EVENTS.requestAcknowledged -OstWalletSdkUI.EVENTS.flowComplete -OstWalletSdkUI.EVENTS.flowInterrupt ----- - -[source,javascript] ----- -/** -* Subscribes to specified event of UI Workflow. -* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI -* @param {String} eventName - Name of the event to subscribe to. -* @param {Function} listener - The listener function. -* @param {*} context - The context to invoke the listener with. -* @returns {Boolean} - false if failed to subscribe. -* @public -*/ -OstWalletSdkUI.subscribe( - workflowId, - eventName, - listener, - context -) ----- - -[source,javascript] ----- -/** -* Subscribes once to specified event of UI Workflow. -* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI -* @param {String} eventName - Name of the event to subscribe to. -* @param {Function} listener - The listener function. -* @param {*} context - The context to invoke the listener with. -* @returns {Boolean} - false if failed to subscribe. -* @public -*/ -OstWalletSdkUI.subscribeOnce( - workflowId, - eventName, - listener, - context -) ----- - -=== Unsubscribe - -Unsubscribes the listener from the specified event of UI Workflow. - -[source,javascript] ----- -/** -* Unsubscribes the listener from the specified event of UI Workflow. -* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI -* @param {String} eventName - Name of the event to subscribe to. -* @param {Function} listener - The listener function. -* @param {*} context - The context to invoke the listener with. -* @returns {Boolean} - false if failed to subscribe. -* @public -*/ -OstWalletSdkUI.unsubscribe( - workflowId, - eventName, - listener, - context -) ----- - -=== Event Listeners - -==== Request Acknowledged Listener - -Acknowledge application about the request which is going to made by SDK. - -[source,js] ----- -/** - * Request acknowledged - * @param {Object} ostWorkflowContext - info about workflow type - * @param ostContextEntity - info about entity - * @override - */ - requestAcknowledged(ostWorkflowContext, ostContextEntity ) => { - //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. - //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. - } ----- - -==== Flow Complete Listener - -[source,js] ----- -/** - * Flow complete - * @param ostWorkflowContext - workflow type - * @param ostContextEntity - status of the flow - * @override - */ - flowComplete(ostWorkflowContext, ostContextEntity ) => { - //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. - //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. - } ----- - -==== Flow Interrupt Listener - -[source,js] ----- -/** - * Flow interrupt - * @param ostWorkflowContext workflow type - * @param ostError reason of interruption - * @override - */ - flowInterrupt(ostWorkflowContext, ostError) => { - //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. - //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. - } ----- diff --git a/documentation/android_setup.md.adoc b/documentation/android_setup.md.adoc deleted file mode 100644 index 089c726..0000000 --- a/documentation/android_setup.md.adoc +++ /dev/null @@ -1,79 +0,0 @@ -= Android set-up required for Ost React Native SDK -:doctype: book - -== 1. Linking the Ost React Native SDK - -=== Automatic Linking - -[source,bash] ----- -react-native link @ostdotcom/ost-wallet-sdk-react-native ----- - -=== Manual Linking - -. Open up `+./android/app/src/main/java/[...]/MainApplication.java+`. - ** Add `import com.ostwalletrnsdk.OstWalletRnSdkPackage;` to the imports at the top of the file. - ** Add `new OstWalletRnSdkPackage()` to the list returned by the `getPackages()` method -. Append the following lines to `./android/settings.gradle`: ` include ':ost-wallet-sdk-react-native' project(':ost-wallet-sdk-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/ost-wallet-sdk-react-native/android') ` -. Insert the following lines inside the dependencies block in `./android/app/build.gradle`: ``` compile project(':ost-wallet-sdk-react-native') - -== 2. Changing `minSdkVersion` in './android/build.gradle' file - -Change the `minSdkVersion` to 22 in `android/build.gradle` - ----- -android { - defaultConfig { - minSdkVersion 22 - ... - ... - ... - } -} ----- - -== 3. Create SDK configuration file - -Create file `./android/app/src/main/assets/ost-mobilesdk.json` with application specific configurations using the json below as an example - -[source,json] ----- -{ - "BLOCK_GENERATION_TIME": 3, - "PIN_MAX_RETRY_COUNT": 3, - "REQUEST_TIMEOUT_DURATION": 60, - "SESSION_BUFFER_TIME": 3600, - "PRICE_POINT_CURRENCY_SYMBOL": "USD", - "USE_SEED_PASSWORD": false -} ----- - -. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. -. PricePointTokenSymbol: This is the symbol of base currency. -So its value will be OST. -. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. -. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. -. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. -. SessionBufferTime: Buffer expiration time for session keys in seconds. -Default value is 3600 seconds. -. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. -When UseSeedPassword set to `true`, different deterministic salts are used for different keys. - -*NOTE: These configurations are MANDATORY for successful operation. -Failing to set them will significantly impact usage.* - -= Debug builds with Android 9 (API level 28) - -Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. -On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. -As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. -To work-around this issues, application needs to have TrustKit as a dependency and initialize it. - -Please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/documentation/TrustKitPublickeyPinning.md[Public Key Pinning Using TrustKit] documentation. - -= Next Steps - -. link:../README.md#sdk-usage[SDK Usage] -. link:../README.md#sdk-methods[SDK Methods] -. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] diff --git a/documentation/ios_setup.md.adoc b/documentation/ios_setup.md.adoc deleted file mode 100644 index 60ecb74..0000000 --- a/documentation/ios_setup.md.adoc +++ /dev/null @@ -1,152 +0,0 @@ -= iOS setup required for OST React Native SDK -:doctype: book - -== 1. Installing https://github.com/Carthage/Carthage[Carthage] - -Get https://github.com/Carthage/Carthage[Carthage] by running following command on terminal - -[source,bash] ----- - brew install carthage ----- - -You can also choose https://github.com/Carthage/Carthage/#installing-carthage[other methods] to install https://github.com/Carthage/Carthage[Carthage] - -== 2. Downloading OST React Native SDK using Carthage - -Carthage looks at a file called `Cartfile` to determine which libraries to install. -Create a file in the `./ios` directory of your react-native project called `Cartfile` and enter the following to tell Carthage which dependencies we want: - -Add following entry in your `Cartfile` - -[source,bash] ----- - github "ostdotcom/ost-wallet-sdk-ios" == 2.3.6 ----- - -Now to actually install everything run the following in your terminal: - -[source,bash] ----- - carthage update --platform iOS ----- - -A `Cartfile.resolved` file and a `Carthage` directory will appear in the same directory where your `.xcodeproj` or `.xcworkspace` is. - -== 3. Copying the `OstWalletSdk.framework` file in your Xcode project - -Open your project in Xcode, click on the project file in the left section of the screen and scroll down to the `Linked Frameworks and Libraries` section in Xcode. - -`Carthage` folder will have the `.framework` files that we will add in Xcode project. - -Now open the `./ios/Carthage/Build/iOS` folder in Finder: - -Run this command - -[source,bash] ----- -open ios/Carthage/Build/iOS ----- - -Open application target, under General tab, drag the built `OstWalletSdk.framework` binary from `./ios/Carthage/Build/iOS` folder into Linked Frameworks and Libraries section. - -image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/copy-framework-file.png[copy-framework-file] - -== 4. Adding the `OstWalletSdk` dependencies in your Xcode project - -We need to add the `.framework` files of dependencies present inside `./ios/Carthage/Build/iOS`. - -Open `application targets` in Xcode. -Under `Build Phases` click `+` icon and choose `New Run Script Phase`. -Add the following command. - -[source,bash] ----- -/usr/local/bin/carthage copy-frameworks ----- - -Click the `+` under `Input Files` and add the following entry framework: - ----- -$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework -$(SRCROOT)/Carthage/Build/iOS/BigInt.framework -$(SRCROOT)/Carthage/Build/iOS/CryptoEthereumSwift.framework -$(SRCROOT)/Carthage/Build/iOS/CryptoSwift.framework -$(SRCROOT)/Carthage/Build/iOS/EthereumKit.framework -$(SRCROOT)/Carthage/Build/iOS/FMDB.framework -$(SRCROOT)/Carthage/Build/iOS/SipHash.framework -$(SRCROOT)/Carthage/Build/iOS/TrustKit.framework -$(SRCROOT)/Carthage/Build/iOS/OstWalletSdk.framework ----- - -image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/add-dependency-framework-files.png[copy-framework-file] - -== 5. Add additional SDK files - -Follow these steps to add additional files: - -* Click on your project, select `File > Add Files to ""` -* Browse to `./node_modules/@ostdotcom/ost-wallet-sdk-react-native/ios` -* Add the folder `ostwalletrnsdk` with following settings: - ** Destination: (uncheck) Copy items if needed - ** Added folders: (select) Create groups - -image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/additional-files.png[Add-image] - -== 6. Change Build Settings - -Open application target, under `Build Settings` tab, enable `Always Embed Swift Standard Libraries` under `Build Options` - -image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/build-options.png[Add image] - -== 7. Create SDK configuration file - -Create `OstWalletSdk.plist` file. -This file has configuration attributes used by OstWalletSdk. -You should copy paste the configuration values from below snippet. - ----- - - - - - BlockGenerationTime - 3 - PricePointTokenSymbol - OST - PricePointCurrencySymbol - USD - RequestTimeoutDuration - 30 - PinMaxRetryCount - 3 - SessionBufferTime - 3600 - UseSeedPassword - - EnableIOSDeviceRestore - - - ----- - -. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. -. PricePointTokenSymbol: This is the symbol of base currency. -So its value will be OST. -. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. -. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. -. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. -. SessionBufferTime: Buffer expiration time for session keys in seconds. -Default value is 3600 seconds. -. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. -When UseSeedPassword set to `true`, different deterministic salts are used for different keys. -. EnableIOSDeviceRestore: When EnableIOSDeviceRestore is set to `true`, After app re-installation, SDK checks for available device key in Keychain for given user id. - -*These configurations are MANDATORY for successful operation. -Failing to set them will significantly impact usage.* - -= Next Steps - -. link:../README.md#sdk-usage[SDK Usage] -. link:../README.md#sdk-methods[SDK Methods] -. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] From 2685d00b5ad458e4f69daf45a63785e9480bf660 Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Thu, 12 Mar 2020 15:34:22 +0100 Subject: [PATCH 11/13] docs setup step #2 --- .../ROOT/assets/images/redemptionFlow.png | Bin 0 -> 1265513 bytes .../assets/images/setup_device_workflow.svg | 1 + .../ROOT/assets/images/wallet_details.png | Bin 0 -> 151398 bytes .../ROOT/assets/images/wallet_settings.png | Bin 0 -> 184718 bytes .../ROOT/examples/ost-sdk-theme-config.js | 68 ++ docs/modules/ROOT/pages/CHANGELOG.md.adoc | 146 +++ .../ROOT/pages/OstCoreWorkflows.md.adoc | 624 +++++++++++ docs/modules/ROOT/pages/OstJsonApi.md.adoc | 853 +++++++++++++++ .../ROOT/pages/OstRedemptionConfig.md.adoc | 68 ++ .../ROOT/pages/OstRedemptionFlow.md.adoc | 65 ++ .../ROOT/pages/OstTransactionConfig.md.adoc | 46 + .../ROOT/pages/OstTransactionHelper.md.adoc | 94 ++ .../ROOT/pages/OstWalletSdkGetMethods.md.adoc | 395 +++++++ .../ROOT/pages/OstWalletSettings.md.adoc | 78 ++ .../pages/OstWalletSettingsConfig.md.adoc | 121 +++ docs/modules/ROOT/pages/OstWalletUI.md.adoc | 986 ++++++++++++++++++ docs/modules/ROOT/pages/README.md.adoc | 358 +++++++ docs/modules/ROOT/pages/android_setup.md.adoc | 79 ++ docs/modules/ROOT/pages/ios_setup.md.adoc | 152 +++ docs/modules/ROOT/pages/react-native.md.adoc | 53 + 20 files changed, 4187 insertions(+) create mode 100644 docs/modules/ROOT/assets/images/redemptionFlow.png create mode 100644 docs/modules/ROOT/assets/images/setup_device_workflow.svg create mode 100644 docs/modules/ROOT/assets/images/wallet_details.png create mode 100644 docs/modules/ROOT/assets/images/wallet_settings.png create mode 100644 docs/modules/ROOT/examples/ost-sdk-theme-config.js create mode 100644 docs/modules/ROOT/pages/CHANGELOG.md.adoc create mode 100644 docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc create mode 100644 docs/modules/ROOT/pages/OstJsonApi.md.adoc create mode 100644 docs/modules/ROOT/pages/OstRedemptionConfig.md.adoc create mode 100644 docs/modules/ROOT/pages/OstRedemptionFlow.md.adoc create mode 100644 docs/modules/ROOT/pages/OstTransactionConfig.md.adoc create mode 100644 docs/modules/ROOT/pages/OstTransactionHelper.md.adoc create mode 100644 docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc create mode 100644 docs/modules/ROOT/pages/OstWalletSettings.md.adoc create mode 100644 docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc create mode 100644 docs/modules/ROOT/pages/OstWalletUI.md.adoc create mode 100644 docs/modules/ROOT/pages/README.md.adoc create mode 100644 docs/modules/ROOT/pages/android_setup.md.adoc create mode 100644 docs/modules/ROOT/pages/ios_setup.md.adoc create mode 100644 docs/modules/ROOT/pages/react-native.md.adoc diff --git a/docs/modules/ROOT/assets/images/redemptionFlow.png b/docs/modules/ROOT/assets/images/redemptionFlow.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ab106293562ef0a3516afa533eae8c5777c8bd GIT binary patch literal 1265513 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

U-dN7l0zr=KM{jzBS5S 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

Z~iWIu<<)oPa}D`v{iDHgUTVN8o)Mh?k~* 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 z zCbue>jd#v=cF4$ky?nEiuViJ=cp+9GF+VZvO-s2$JMPyEwn>K6lRly>_?jB@#za4d z2A1v)$k&yHPvc?lJ2Fswx{H%Z*Ozdg&b*Z`O2*Tt8L9=5q; zvH756XFY1Oq`p0+8m)Z{6p3)?V#5@d`~VNuzISG@a}+4xN3uc3bB}7wKZI`3v1=kE z9O4$fo{lci?_hU3k&|d7-QZdv|BP!4tZ7fd=qkf20q%`Q$QvF#@;*}MdS1o~RYuI} z;(KT{hyCCqq|JxE%{Uuh>^|DS*w{QYKu~@gjA7sWbuj#HZmTbPzamVt>}fveGi6Y^ zX6wV$mRxLO7t-N4+d#>E=88m$Uwfj)=;aRStUVb{QH6srrDof5;W_$#1|5Z5$0Kxq zL3T#2I(*U~N!r-T&!TnFWAwY>52oA@7T?*L#z8~t6Cjg9Uf_eX1D^&zy$r9i%NvXZb-Dq=XItmBQGDuK{Z~ zp5KUh=fRY@y?#9Mn`T}1LF267txRCXKjpRm^?Y|L_m{9Yo%^evkN*8?|Myq!M7|3R zIgyKn+Wb=iJ#`hZNJDNz{9zvb{3D+EW|@`W7do)2Xz9H}HaR@BqPm&m!2LY%>3X`k zZlZrnaq#nLMou*hLJAErkN!rZ%VZWL1{sTG7G43vvI zm@MK^U4ey+FSZgLbChpVq~J8%_joX?xb zost@&wAK~<7IKE9&4XM8#}p6R4LM|(c}Gj~7PG3 ~Py;jTJILl(;TfM5xJD_SNz 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℞IIadlOV^Ak~AR-p6uE){Z_J?efK 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

D4Os;2BMb0zGsGvI-fX7#i!S+>Q!Q2w~l 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%0DlI91z$4 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

Ho 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
    2&aHhrh{?RVpGCUKya)j&HBk~4-ZtOIB%pnV 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 literal 0 HcmV?d00001 diff --git a/docs/modules/ROOT/examples/ost-sdk-theme-config.js b/docs/modules/ROOT/examples/ost-sdk-theme-config.js new file mode 100644 index 0000000..ce8bc18 --- /dev/null +++ b/docs/modules/ROOT/examples/ost-sdk-theme-config.js @@ -0,0 +1,68 @@ +export default { + + "nav_bar_logo_image": { + "asset_name": "header_icon" + }, + + "c1": { + "size": 14, + "color": "#484848", + "system_font_weight": "bold", + "alignment": "left" + }, + "b1":{ + "color":"#ffffff", + "size":15 + }, + + "c2": { + "size": 12, + "color": "#6F6F6F", + "system_font_weight": "regular", + "alignment": "left" + }, + + "navigation_bar": { + "tint_color": "#61B2C9" + }, + + "navigation_bar_header": { + "tint_color": '#ffffff' + }, + + "icons": { + "close": { + "tint_color": "#ffffff" + }, + "back":{ + "tint_color": "#ffffff", + "source" : null + } + }, + + "cell_separator": { + "color": "#DBDBDB" + }, + + "link": { + "size": 14, + "color": "#007aff", + "system_font_weight": "medium", + "alignment": "left", + }, + + "status": { + "size": 14, + "color": "#0F9D58", + "system_font_weight": "regular", + "alignment": "left", + }, + + "form_field": { + "size":15, + "system_font_weight":"regular", + "color":"#484848", + "border_color": "#484848", + "alignment": "left" + } +} diff --git a/docs/modules/ROOT/pages/CHANGELOG.md.adoc b/docs/modules/ROOT/pages/CHANGELOG.md.adoc new file mode 100644 index 0000000..62a9418 --- /dev/null +++ b/docs/modules/ROOT/pages/CHANGELOG.md.adoc @@ -0,0 +1,146 @@ += OST Wallet SDK Changelog + +== Version 2.4.1 + +* User can authorize external session by scanning QR-Code. +To use `Authorize session by scanning QR code`, please update downstream sdk. ++ iOS: v2.4.1 + Android: v2.4.1 +* User can pass QR-Code payload to perform QR-Code actions without opening Scanner in OstWalletUI. +This functionality is available for `scanQRCodeToAuthorizeSession`, `scanQRCodeToExecuteTransaction`, `scanQRCodeToAuthorizeDevice`, + +== Version 2.4.0 + +* OstRedemption UI component is now available in SDK. +To use `OstRedemption`, please update downstream sdk. ++ iOS:``v2.4.0`` + Android:``v2.4.0`` +* `getRedeemableSkus` and `getRedeemableSkuDetails` apis added in `OstJsonApi`. + +== Version 2.3.14 + +* ReadMe updates + +* Removed unused imports + +* Peer dependency fixes + + +== Version 2.3.12 + +* OstWalletSettings UI component is now available in SDK. +To use `OstWalletSettings`, please update downstream sdk. ++ iOS:``v2.3.6`` + Android:``v2.3.8`` + +== Version 2.3.12-beta.1 + +* OstWalletSettings UI component is now available in SDK. +To use `OstWalletSettings`, please update downstream sdk. ++ iOS:``v2.3.6-beta-1`` + Android:``v2.3.8-beta.1`` + +== Version 2.3.11 + +=== Bug Fix: + +* In Android inaccurate error is thrown when application runs out of memory during recover device workflow. ++ Downstream Android Sdk updated to `v2.3.7` + +== Version 2.3.10 + +* OstWalletSdk supports custom loader for OstWalletUI. +To use custom loader, please update downstream sdk. ++ iOS:``v2.3.5`` + Android:``v2.3.6`` + +== Version 2.3.9 + +* Downstream iOS Sdk updated to `v2.3.4` + +== Version 2.3.8 + +* Removed jitpack.io dependency. + +== Version 2.3.7 + +* Downstream iOS Sdk updated to `v2.3.3` + +== Version 2.3.6 + +* Downstream Android Sdk updated to `v2.3.5` + +== Version 2.3.5 + +* Downstream Android Sdk updated to `v2.3.4` + +== Version 2.3.4 + +* Downstream Android Sdk updated to `v2.3.2` + +== Version 2.3.3 + +=== Bug Fix: + +* OstWalletUIWorkflowCallback signature updated. + +== Version 2.3.2 + +=== Bug Fix: + +* Fixed a bug, where `ostApiError.getApiError` always returned an empty object. + +== Version 2.3.1 + +=== Feature: + +* OstWalletUI now supports + ** get add device QR-Code + ** scan QR-Code to authorize device + ** scan QR-Code to execute transaction + ** authorize current device with mnemonics +* Api provided to fetch current device from OstPlatform. +* Now supports getting active sessions from Sdk. + +== Version 2.3.0 + +=== Feature: + +* OstWalletSdk now contains UI. +* UI components can be modified. +* Languages for UI workflow components can be modified. +* OstWalletUI now supports + ** activate user + ** create session + ** get device mnemonics + ** revoke device + ** reset pin + ** initiate device recovery + ** abort device recovery + ** update biometric preference + +== Version v2.2.4 + +=== Bug Fix: + +* iOS: Inconsistent signature generation fix. + +== Version v2.2.3 + +* Android: Added support for AndroidX + +== Version v2.2.2 + +=== Bug Fix: + +* iOS: Scanning unrecognized QR codes no longer causes the SDK to crash + +== Version v2.2.1 + +=== Bug Fix: + +* Fix `fetchDevice` cache issue for `initiateDeviceRecovery` +* Add `No Network Access` error to OstApiError ++ +=== Security Enhancements +* Implemented public-key pinning for api.ost.com + +== Version v2.2.0 + +=== Changes: + +* Added Multi Currency Feature which allows developers to specify fiat-currency at runtime while executing a transaction. +* Added OstJsonApi that allows developers to fetch data from Ost Platform. +Please see README.MD for supported Api(s). diff --git a/docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc b/docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc new file mode 100644 index 0000000..4a8bcf2 --- /dev/null +++ b/docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc @@ -0,0 +1,624 @@ += Ost Core Workflow APIs + +Ost core workflows api do not use any UI components, thereby giving complete control to the developers. +The xref:./OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost Core Workflows. + +== Table of Contents + +* <> +* <> + ** <> + ** <> + ** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> +* <> + ** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + *** <> + ** <> + +== Import the OstWalletSdk + +To use the core workflow APIs, import the `OstWalletSdk` from '@ostdotcom/ost-wallet-sdk-react-native'. + +[source,javascript] +---- +import {OstWalletSdk} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +== Create Workflow Callback + +The core workflows communicates with the application using callbacks. +A base callback class `OstWalletWorkFlowCallback` is given as a part of the SDK. +The base callback class gives only declaration of callback functions. +A detailed overview of callback functions is available in the later part of this readme. + +=== OstWalletWorkFlowCallback Interface + +[source,javascript] +---- +import { OstWalletWorkFlowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; + +class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { + constructor() { + super(); + } + + registerDevice(apiParams, ostDeviceRegistered) {} + + getPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} + + invalidPin(ostWorkflowContext, ostContextEntity, ostPinAccept) {} + + pinValidated(ostWorkflowContext, ostContextEntity) {} + + flowComplete( ostWorkflowContext, ostContextEntity ) {} + + flowInterrupt(ostWorkflowContext, ostError ) {} + + requestAcknowledged(ostWorkflowContext, ostContextEntity) {} + + verifyData(ostWorkflowContext, ostContextEntity, ostVerifyData) {} +} + +export default OstWalletSdkCallbackImplementation; +---- + +*Developers are expected to implement a new class for each workflow.* + +=== An example of callback implementation + +[source,javascript] +---- + +import {OstWalletWorkFlowCallback} from '@ostdotcom/ost-wallet-sdk-react-native'; + +class OstWalletSdkCallbackImplementation extends OstWalletWorkFlowCallback { + constructor() { + super(); + } + + flowComplete(ostWorkflowContext , ostContextEntity) { + console.log('flowComplete ostWorkflowContext', ostWorkflowContext, "ostContextEntity- ", ostContextEntity); + if(Actions.currentScene !== "HomePage"){ + Actions.popTo("HomePage"); + } + if(ostWorkflowContext){ + let wfType = ostWorkflowContext.WORKFLOW_TYPE; + if( wfType !== "SETUP_DEVICE") { + Alert.alert(`${wfType} Complete!`); + } + } + store.dispatch(setLoading(false)); + } + + flowInterrupt(ostWorkflowContext , ostError) { + console.log('flowInterrupt ostWorkflowContext', ostWorkflowContext , "ostError" , ostError ); + if (ostError) { + let displayError = ostError.getErrorMessage(), + apiError, errorData; + if(ostError.isApiError()){ + apiError = ostError.getApiErrorMessage(); + if(apiError && apiError.includes('err.error_data')){ + apiError = ''; + } + errorData = ostError.getApiErrorData(); + if(errorData && errorData.length > 0){ + for(let i=0; i} tokenHolderAddresses - Token holder addresses of amount receiver. + * @param {Array} amounts -Amounts corresponding to tokenHolderAddresses to be transfered + * @param {String} ruleName - Rule name to be executed. + * @param {object} meta - additional data. + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + + OstWalletSdk.executeTransaction( userId, + tokenHolderAddresses, + amounts, + ruleName, + meta, + workflow) +---- + +==== getDeviceMnemonics + +The mnemonic phrase represents a human-readable way to authorize a new device. +This phrase is 12 words long. + +[source,javascript] +---- +/** + * Get Device mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.getDeviceMnemonics( userId, + workflow) +---- + +==== authorizeCurrentDeviceWithMnemonics + +A user that has stored their mnemonic phrase can enter it on a new mobile device and authorize that device to be able to control their tokens. + +[source,javascript] +---- + /** + * Authorize user device with mnemonics + * @param {String} userId - Ost User id + * @param {String} mnemonics - string of mnemonics + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + + OstWalletSdk.authorizeCurrentDeviceWithMnemonics(userId, + mnemonics, + workflow) +---- + +==== performQRAction + +QR codes can be used to encode transaction data for authorizing devices and making purchases via webstores, etc. +This method can be used to process the information scanned off a QR code and act on it. + +[source,javascript] +---- +/** + * Perform QR action + * @param {String} userId - Ost User id + * @param {String} data - Json string of payload is scanned by QR-Code. + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.performQRAction(userId, + data, + workflow) +---- + +==== resetPin + +The user's PIN is set when activating the user. +This method supports re-setting a PIN and re-creating the recoveryOwner. + +[source,javascript] +---- +/** + * Reset user pin + * @param {String} userId - Ost User id + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {String} currentPin - user current pin + * @param {String} newPin - user new pin + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.resetPin( userId, + appSalt, + currentPin, + newPin, + workflow ) +---- + +==== initiateDeviceRecovery + +A user can control their tokens using their authorized device(s). +If a user loses their authorized device, the user can recover access to her tokens by authorizing a new device by initiating the recovery process. + +[source,javascript] +---- +/** + * Initiate device recovery + * @param {String} userId - Ost User id + * @param {String} pin - user current pin + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {String} deviceAddressToRecover - Device address which wants to recover + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.initiateDeviceRecovery( userId, + pin, + appSalt, + deviceAddressToRecover, + workflow ) +---- + +==== abortDeviceRecovery + +To abort an initiated device recovery. + +[source,javascript] +---- +/** + * Abort device recovery + * @param {String} userId - Ost User id + * @param {String} pin - user current pin + * @param {String} appSalt - Passphrase prefix provided by application server + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.abortDeviceRecovery(userId, + pin , + appSalt , + workflow ) +---- + +==== logoutAllSessions + +To revoke all sessions associated with provided userId. + +[source,javascript] +---- +/** + * Logout user all sessions + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ +OstWalletSdk.logoutAllSessions(userId, + workflow ) +---- + +==== revokeDevice + +To unauthorize the current device. + +[source,javascript] +---- +/** + * revokeDevice + * @param {String} userId - Ost User id + * @param {String} deviceAddress - device address + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.revokeDevice( userId , + deviceAddress , + workflow) +---- + +==== updateBiometricPreference + +To enable or disable biometrics. + +[source,javascript] +---- +/** + * Update biometric prederence + * @param {String} userId - Ost User id + * @param {boolean} enable - to enable biometric prefernce + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + OstWalletSdk.updateBiometricPreference( userId , enable ,workflow ) +---- + +=== Execute a workflow + +To execute a workflow, you need to pass an instance of `OstWalletSdkCallbackImplementation` class. +The callback implementation will be different for each workflow available in the SDK. + +[source,javascript] +---- + +import OstWalletWorkflowCallback from './OstWalletSdkCallbackImplementation'; + +onLogoutAllSessions() { + AsyncStorage.getItem('user').then((user) => { + user = JSON.parse(user); + // Note: logoutAllSessions will revoke all sessions keys from all the devices of the user. + OstWalletSdk.logoutAllSessions(user.user_details.user_id, new OstWalletWorkflowCallback(), console.warn); + }); +} +---- diff --git a/docs/modules/ROOT/pages/OstJsonApi.md.adoc b/docs/modules/ROOT/pages/OstJsonApi.md.adoc new file mode 100644 index 0000000..1857aaa --- /dev/null +++ b/docs/modules/ROOT/pages/OstJsonApi.md.adoc @@ -0,0 +1,853 @@ += OST JSON APIs + +OST JSON APIs are a set of _asynchronous_ methods that make API calls to OST Platform servers. + +== Table of Contents + +* <> +* <> +* <> +* <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + *** <> + ** <> + *** <> + *** <> +* <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + ** <> + *** <> + *** <> + +++++++++++++ + +== Before We Begin + +* Although it is *NOT RECOMMENDED*, but if your app needs to allow multiple users to login on same device, the app must: + ** ensure to pass the `userId` of the currently *logged-in and authenticated* user. + ** ensure that the user has not logged-out *before* processing/displaying the response. +* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating any JSON API. +* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any JSON API. +* All `OstJsonApi` methods expect `userId` as first parameter because all requests need to be signed by the user's API key. +* It's always good to check if the device can make API calls by calling `OstWalletSdk.getCurrentDeviceForUserId` method. + ** Any device with status `REGISTERED`, `AUTHORIZING`, `AUTHORIZED`, `RECOVERING` or `REVOKING` can make this API call. + +++++++++++++ + +== JSON API Types + +The JSON APIs can be categorized into 2 groups. + +* <> - The APIs that get entities (e.g. +current-device, price-point, balance, etc.) +* <> - The APIs that get list of entities and support pagination (e.g. +device list, transactions) + +++++++++++++ + +== Importing OstJsonApi + +Use the following code to import `OstJsonApi` + +---- +import {OstJsonApi} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +++++++++++++ + +== Entity API + +++++++++++++ + +=== Get Current Device + +API to get user's current device. + +____ +While the equivalent getter method `OstWalletSdk.getCurrentDeviceForUserId` gives the data stored in SDK's database, this method makes an API call to OST Platform. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * API to get user's current device. + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getCurrentDeviceForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "device": { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x0000000000000000000000000000000000000001", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "result_type": "device" +} +---- + +++++++++++++ + +=== Get Balance + +API to get user's balance. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getBalanceForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "balance": { + "updated_timestamp": 1566832497, + "unsettled_debit": "0", + "available_balance": "10000000", + "total_balance": "10000000", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "result_type": "balance" +} +---- + +++++++++++++ + +=== Get Price Points + +API to get price-points of token's staking currency (OST or USDC). + +____ +This API call is generally needed to compute the current fiat value to your brand-tokens. +E.g. +displaying user's balance in fiat. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getPricePointForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "price_point": { + "USDC": { + "updated_timestamp": 1566834913, + "decimals": 18, + "GBP": 0.8201717727, + "EUR": 0.9028162679, + "USD": 1.0025110673 + } + }, + "result_type": "price_point" +} +---- + +++++++++++++ + +=== Get Balance And Price Points + +This is a convenience method that makes `OstJsonApi.getBalanceForUserId` and `OstJsonApi.getPricePointForUserId` API calls and merges the response. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getBalanceWithPricePointForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => {} +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "balance": { + "updated_timestamp": 1566832497, + "unsettled_debit": "0", + "available_balance": "10000000", + "total_balance": "10000000", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + "price_point": { + "USDC": { + "updated_timestamp": 1566834913, + "decimals": 18, + "GBP": 0.8201717727, + "EUR": 0.9028162679, + "USD": 1.0025110673 + } + }, + "result_type": "balance" +} +---- + +++++++++++++ + +=== Get Pending Recovery + +API to get user's pending recovery. +A pending recovery is created when the user recovers the device using their PIN. + +____ +This API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. +____ + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + +/** + * Api to get user balance + * @param {String} userId - Ost User id + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ +OstJsonApi.getPendingRecoveryForUserId( + userId, + (data) => { + console.log(data); + }, + (error, response) => { + console.log( error ); + if ( error.is_api_error ) { + if ( "UNPROCESSABLE_ENTITY" === String(error.api_error.code).toUppercase() ) { + console.log("User does not have any recovery in progress."); + // You can safely ignore this error. + return; + } + } + } +) +---- + +++++++++++++ + +.Sample Response +[source,json] +---- + { + "devices": [ + { + "updated_timestamp": 1566902100, + "status": "REVOKING", + "api_signer_address": "0x903ad1a1017c14b8e6b0bb1dd32d3f65a8741732", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x629e13063a2aa24e2fb2a49697ef871806071550", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566902100, + "status": "RECOVERING", + "api_signer_address": "0x6f5b1b8df95cbc3bd8d18d6c378cef7c34644729", + "linked_address": "null", + "address": "0x33e736a4761bc07ed54b1ceb82e44dfb497f478c", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } + ], + "result_type": "devices" +} +---- + +++++++++++++ + +.Sample Error + +The `getPendingRecoveryForUserId` API will respond with `UNPROCESSABLE_ENTITY` API error code when user does not have any recovery in progress. + +[source,json] +---- +{ + "api_error": { + "internal_id": "***********", + "error_data": [], + "msg": "Initiate Recovery request for user not found.", + "code": "UNPROCESSABLE_ENTITY" + }, + "is_api_error": 1, + "error_message": "OST Platform Api returned error.", + "internal_error_code": "***********", + "error_code": "API_RESPONSE_ERROR" +} +---- + +++++++++++++ + +=== Get Redeemable Sku Details + +API to get redeemable sku details. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; +let skuDetailId = "2"; +let extraParams = {}; + +/** + * Api to get redeemable skus + * @param {String} userId - Ost User id + * @param {String} skuDetailId - Sku detail id got from list of Redeemable skus + * @param {Object} extraParams (@nullable). + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + + +OstJsonApi.getRedeemableSkuDetails(userId, skuDetailId ,extraParams, (response) => { + console.log(response); + }, (error)=> { + console.log("An error has occurred while fetching redeemable sku details."); + console.log( error ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "result_type":"redemption_product", + "redemption_product":{ + "status":"active", + "images":{ + "detail":{ + "original":{ + "size":90821, + "url":"https://dxwfxs8b4lg24.cloudfront.net/ost-platform/rskus/stag-starbucks-d-original.png", + "width":150, + "height":150 + } + }, + "cover":{ + "original":{ + "size":193141, + "url":"https://dxwfxs8b4lg24.cloudfront.net/ost-platform/rskus/stag-starbucks-c-original.png", + "width":320, + "height":320 + } + } + }, + "availability":[ + { + "country_iso_code":"USA", + "country":"USA", + "currency_iso_code":"USD", + "denominations":[ + { + "amount_in_wei":"49938358", + "amount_in_fiat":5 + }, + { + "amount_in_wei":"99876717", + "amount_in_fiat":10 + }, + ... + ] + }, + { + "country_iso_code":"CAN", + "country":"Canada", + "currency_iso_code":"CAD", + "denominations":[ + { + "amount_in_wei":"37547638", + "amount_in_fiat":5 + }, + { + "amount_in_wei":"75095276", + "amount_in_fiat":10 + }, + ... + ] + }, + { + "country_iso_code":"GBR", + "country":"United Kingdom", + "currency_iso_code":"GBP", + "denominations":[ + { + "amount_in_wei":"64855011", + "amount_in_fiat":5 + }, + { + "amount_in_wei":"129710022", + "amount_in_fiat":10 + }, + ... + ] + }, + { + "country_iso_code":"IND", + "country":"India", + "currency_iso_code":"INR", + "denominations":[ + { + "amount_in_wei":"1396", + "amount_in_fiat":0.01 + }, + { + "amount_in_wei":"139609", + "amount_in_fiat":1 + }, + ... + ] + } + ], + "id":"2", + "updated_timestamp":1582024811, + "description":{ + "text":null + }, + "name":"Starbucks" + } +} +---- + +++++++++++++ + +== List API + +All `List` APIs support pagination. +The response of all `List` APIs has an extra attribute `meta`. +To determine if next page is available, the app should look at `meta.next_page_payload`. +If `meta.next_page_payload` is an empty object (`{}`), next page is not available. + +++++++++++++ + +=== Get Transactions + +API to get user's transactions. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; +let nextPagePayload = null; + +/** + * Api to get user's transactions + * @param {String} userId - Ost User id + * @param {Object} nextPagePayload (@nullable). Pass null to get first page. + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getTransactionsForUserId(userId, nextPagePayload, + (response) => { + console.log(response); + // Let's check if more pages of data is available. + if ( response.meta ) { + let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; + if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { + // Next page is available. + // Update nextPagePayload + nextPagePayload = nextPagePayloadFromResponse; + // To fetch the next page, pass the updated nextPagePayload. + } + } + }, + (error) => { + console.log("An error has occurred while fetching transactions."); + console.log( error ); + }); +---- + +++++++++++++ + +.Sample Response + +Please refer to the https://dev.ost.com/platform/docs/api/#transactions[Transactions Object] for a detailed description. + +[source,json] +---- +{ + "meta": { + "total_no": 14, + "next_page_payload": { + "pagination_identifier": "*****************************************************" + } + }, + "transactions": [ + { + "meta_property": { + "details": "Awesome Post", + "type": "user_to_user", + "name": "Like" + }, + "rule_name": "Direct Transfer", + "block_timestamp": 1566843589, + "block_confirmation": 969, + "transaction_fee": "94234000000000", + "gas_price": "1000000000", + "nonce": 613, + "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", + "id": "4efa1b45-8890-4978-a5f4-8f9368044852", + "transfers": [ + { + "kind": "transfer", + "amount": "200000", + "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", + "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", + "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", + "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" + } + ], + "block_number": 3581559, + "updated_timestamp": 1566843589, + "status": "SUCCESS", + "gas_used": 94234, + "value": "0", + "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "transaction_hash": "0xee8033f9ea7e9bf2d74435f0b6cc172d9378670e513a2b07cd855ef7e41dd2ad" + }, + { + "meta_property": { + "details": "Nice Pic", + "type": "user_to_user", + "name": "Fave" + }, + "rule_name": "Direct Transfer", + "block_timestamp": 1566843547, + "block_confirmation": 983, + "transaction_fee": "109170000000000", + "gas_price": "1000000000", + "nonce": 612, + "from": "0x6ecbfdb2ebac8669c85d61dd028e698fd6403589", + "id": "7980ee91-7cf1-449c-bbaf-5074c2ba6b29", + "transfers": [ + { + "kind": "transfer", + "amount": "1600000", + "to_user_id": "a87fdd7f-4ce5-40e2-917c-d80a8828ba62", + "to": "0xb29d32936280e8f05a5954bf9a60b941864a3442", + "from_user_id": "71c59448-ff77-484c-99d8-abea8a419836", + "from": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9" + } + ], + "block_number": 3581545, + "updated_timestamp": 1566843549, + "status": "SUCCESS", + "gas_used": 109170, + "value": "0", + "to": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "transaction_hash": "0x3e3bb3e25ab3a5123d1eaf20e1c31ab88bd56500c5cdfd2e32025c4df32735b3" + }, + ... + ... + ], + "result_type": "transactions" +} +---- + +++++++++++++ + +=== Get Devices + +API to get user's devices. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; +let nextPagePayload = null; + +/** + * Api to get user's device + * @param {String} userId - Ost User id + * @param {Object} nextPagePayload (@nullable). Pass null to get first page. + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + +OstJsonApi.getDeviceListForUserId(userId, nextPagePayload, + (response) => { + console.log(response); + // Let's check if more pages of data is available. + if ( response.meta ) { + let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; + if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { + // Next page is available. + // Update nextPagePayload + nextPagePayload = nextPagePayloadFromResponse; + // To fetch the next page, pass the updated nextPagePayload. + } + } + }, + (error) => { + console.log("An error has occurred while fetching devices."); + console.log( error ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "meta": { + "next_page_payload": {} + }, + "devices": [ + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566839512, + "status": "AUTHORIZED", + "api_signer_address": "0x2e12c4f6a27f7bdf8e58e628ec29bb4ce49c315e", + "linked_address": "0x0000000000000000000000000000000000000001", + "address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } + ], + "result_type": "devices" +} +---- + +++++++++++++ + +=== Get Redeemable Skus + +API to get redeemable skus. + +++++++++++++ + +.Usage +[source,javascript] +---- +/* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. +*/ +let userId = "71c59448-ff77-484c-99d8-abea8a419836"; +let nextPagePayload = null; + +/** + * Api to get redeemable skus + * @param {String} userId - Ost User id + * @param {Object} nextPagePayload (@nullable). Pass null to get first page. + * @param {function} Success callback with success data + * @param {function} Failure callback with error and failure response + * @public + */ + + +OstJsonApi.getRedeemableSkus(userId, nextPagePayload , (respones) => { + console.log(response); + // Let's check if more pages of data is available. + if ( response.meta ) { + let nextPagePayloadFromResponse = response.meta.next_page_payload || {}; + if ( Object.keys(nextPagePayloadFromResponse).length > 0 ) { + // Next page is available. + // Update nextPagePayload + nextPagePayload = nextPagePayloadFromResponse; + // To fetch the next page, pass the updated nextPagePayload. + } + } + }, (error)=> { + console.log("An error has occurred while fetching redeemable skus."); + console.log( error ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "meta":{ + "next_page_payload":{ + } + }, + "result_type":"redemption_products", + "redemption_products":[ + { + "status":"active", + "updated_timestamp":1582024811, + "id":"2", + "description":{ + "text":null + }, + "images":{ + "detail":{ + "original":{ + "size":90821, + "url":"https://dxwfxs8b4lg24.cloudfront.net/ost-platform/rskus/stag-starbucks-d-original.png", + "width":150, + "height":150 + } + }, + "cover":{ + "original":{ + "size":193141, + "url":"https://dxwfxs8b4lg24.cloudfront.net/ost-platform/rskus/stag-starbucks-c-original.png", + "width":320, + "height":320 + } + } + }, + "name":"Starbucks" + }, + ... + ... + ] +} +---- diff --git a/docs/modules/ROOT/pages/OstRedemptionConfig.md.adoc b/docs/modules/ROOT/pages/OstRedemptionConfig.md.adoc new file mode 100644 index 0000000..71785fa --- /dev/null +++ b/docs/modules/ROOT/pages/OstRedemptionConfig.md.adoc @@ -0,0 +1,68 @@ += OstWallet Redemption Config + +== Introduction + +App developers can configure the text shown on redemption page. + +To configure the content, the sdk needs to be provided with https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON[JSON object]. + +== Dictionary Data Structure + +Here is the small sample json representation of the configuration. + +[source,json] +---- +{ + "common": { + "walletIcon": null, + "storeIcon": null + }, + "skuListScreen": { + "navHeader": null, + "header": null, + "description": null + }, + "skuDetailsScreen": { + "navHeader": null + } +} +---- + +In the above example: + +* The key `common` includes options to configure the wallet icon in header and the store icon. +* The key `skuListScreen` allows to configure the navigation header and the header and description shown on the redemption store list page. +* The key `skuDetailsScreen` allows to configure the navigation header shown on the redemption store details page. + +== Redemption Config + +The following are the customizable options provided. +These can be set in the above config. + +|=== +| customizable component | Config Keys | Config Type + +| Wallet icon +| - walletIcon +| Custom icon Image to be rendered. + +| Store icon +| - storeIcon +| Custom icon Image to be rendered. + +| Skulist Header +| - skuListScreen.header +| String + +| Skulist Description +| - skuListScreen.description +| String + +| SkuDetails Screen Navigation header +| - skuDetailsScreen.navHeader +| String + +| Skulist Screen Navigation header +| - skuListScreen.navHeader +| String +|=== diff --git a/docs/modules/ROOT/pages/OstRedemptionFlow.md.adoc b/docs/modules/ROOT/pages/OstRedemptionFlow.md.adoc new file mode 100644 index 0000000..a1158d2 --- /dev/null +++ b/docs/modules/ROOT/pages/OstRedemptionFlow.md.adoc @@ -0,0 +1,65 @@ += OstRedemption Flow + +== Introduction + +OstRedemption component is a pre-built UI component available exclusively in `ost-wallet-sdk-react-native` SDK. +It consist two pages - one displaying redeemable product list and another displaying product details and redemption options. +It can be used by end-users to integrate redemption flow into their app. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +== Usage + +=== Create Redemption Flow stack navigation + +[source,js] +---- +import {OstRedeemableSkus, OstRedeemableSkuDetails } from '@ostdotcom/ost-wallet-sdk-react-native'; + +let redemptionStack = createStackNavigator( + { + RedeemableSkusScreen: OstRedeemableSkus, + RedeemableSkuDetails: OstRedeemableSkuDetails + } +); +---- + +=== Navigate to settings page + +`ostUserId` and `ostWalletUIWorkflowCallback` are mandetory parameters that need to be passed as params to the `RedeemableSkusScreen` screen. + +[source,js] +---- +const ostUserId = +const delegate = new OstWalletUIWorkflowCallback(ostUserId, {}) +this.props.navigation.push("RedeemableSkusScreen", {'ostUserId': ostUserId , + 'ostWalletUIWorkflowCallback': delegate, + 'navTitle': 'My Store'}); +---- + +____ +*Note* + Developer needs to create a class extends from `OstWalletUIWorkflowCallback` and write logic to get passphrase prefix from their application server. +Please refer link:OstWalletUI.md#setup-your-passphrase-prefix-delegate[this] section for documentation. +____ + +== UI Customization + +Developer can customize Redemption flow by updating respective properties mentioned in image. +OstTheme config shown link:./configs/ost-sdk-theme-config.js[here] + +image::images/redemptionFlow.png[copy-framework-file] + +== Redemption Content + +Developer can make various modifications in redemption flow component. +To modify contet, xref:./OstRedemptionConfig.adoc[refer here]. + +[source,js] +---- +import ost_sdk_redemption_config from "../../theme/ostsdk/ost-sdk-redemption-config"; +import { OstRedemableCustomConfig } from '@ostdotcom/ost-wallet-sdk-react-native'; + + OstRedemableCustomConfig.setConfig(ost_sdk_redemption_config); +---- diff --git a/docs/modules/ROOT/pages/OstTransactionConfig.md.adoc b/docs/modules/ROOT/pages/OstTransactionConfig.md.adoc new file mode 100644 index 0000000..a3687b8 --- /dev/null +++ b/docs/modules/ROOT/pages/OstTransactionConfig.md.adoc @@ -0,0 +1,46 @@ += OstTransaction Config + +== Introduction + +App developers can configure session `expiration_time` and `spending_limit` while executing transaction. +To configure the session creation parameters (session buckets), provide the sdk with JSON object. +The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. + +== Configuration Data Structure + +Here is the small sample json representation of the configuration. + +[source,js] +---- +{ + "session_buckets": [ + { + expiration_time: 60*60*24*30*2, //2 months + spending_limit: '10' + }, + { + expiration_time: 60*60*24*30, //1 months + spending_limit: '50' + }, + { + expiration_time: 60*60*24, //24 hours + spending_limit: '100' + }, + { + expiration_time: 60*60*1, //1 hour + spending_limit: '1000' + } + ] +} +---- + +In the above example: + +* The first-level key `session_buckets` corresponds to list of buckets for creating session. +The bucket selection is depends on `spending_limit`. +* The second-level keys + ** `expiration_time` : corresponds to expiry time of session. + ** `spending_limit` : corresponds to spending limit of session. + +Above configuration allows user to execute transction of spending limit `1000`. +SDK throws error, if user makes transaction above `1000`. diff --git a/docs/modules/ROOT/pages/OstTransactionHelper.md.adoc b/docs/modules/ROOT/pages/OstTransactionHelper.md.adoc new file mode 100644 index 0000000..e60c1a2 --- /dev/null +++ b/docs/modules/ROOT/pages/OstTransactionHelper.md.adoc @@ -0,0 +1,94 @@ += Ost Transaction Helper + +== Introduction + +Developer can call functions of transaction helper to execute transaction and setting up config for transaction. + +== Configuration + +App developers can configure session `expiration_time` and `spending_limit` while executing transaction. +To configure the session creation parameters (session buckets), the sdk needs to be provided with JSON object. +The default configuration can be found link:../js/TransactionHelper/ost-transaction-config.json[here]. + +=== Configuration Data Structure + +Here is the small sample json representation of the configuration. + +[source,js] +---- +{ + "session_buckets": [ + { + expiration_time: 60*60*24*30*2, //2 months + spending_limit: '10' + }, + { + expiration_time: 60*60*24*30, //1 months + spending_limit: '50' + }, + { + expiration_time: 60*60*24, //24 hours + spending_limit: '100' + }, + { + expiration_time: 60*60*1, //1 hour + spending_limit: '1000' + } + ] +} +---- + +In the above example: + +* The first-level key `session_buckets` corresponds to list of buckets for creating session. +The bucket selection is depends on `spending_limit`. +* The second-level keys + ** `expiration_time` : corresponds to expiry time of session. + ** `spending_limit` : corresponds to spending limit of session. + +Above configuration allows user to execute transction of spending limit `1000`. +SDK throws error, if user makes transaction above `1000`. + +=== Set Transaction Config + +Developer can set list of buckets for creating session. +For details, Please refer xref:./OstTransactionConfig.adoc[this] + +[source,js] +---- +import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" + +OstTransactionHelper.setTxConfig(ost-tx-config); +---- + +== Execute Direct Transfer + +Execute direct transfer can be performed by calling + +____ +*Note* + Developer needs to create a class extends from OstWalletUIWorkflowCallback and write logic to get passphrase prefix from their application server. +Please refer xref:./OstWalletUI.adoc[this] section for documentation. +____ + +[source,js] +---- +import {OstTransactionHelper} from "@ostdotcom/ost-wallet-sdk-react-native/js/index" + +const ostUserId = +const txMeta = {"type": "user_to_user", "name": "Tokens sent", "details": "Sending tokens vis direct transafer"}; +const workflowCallback = new OstWalletUIWorkflowCallback() + +let uuid = OstTransactionHelper.executeDirectTransfer(ostUserId, [tokenValue], [token_holder_address], txMeta, workflowCallback); + +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowComplete, (workflowContext, contextEntity) => { + //functionality for transaction success +}); +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.flowInterrupt, (workflowContext, ostError) => { + //functionality for transaction failed +}); +OstWalletSdkUI.subscribe(uuid, OstWalletSdkUI.EVENTS.requestAcknowledged, (workflowContext, contextEntity) => { + //functionality for transaction ack. +}); +---- + +New session will be created with appropriate bucket, if sdk won't get any active session for given spending limit. diff --git a/docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc b/docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc new file mode 100644 index 0000000..2d4c2db --- /dev/null +++ b/docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc @@ -0,0 +1,395 @@ += OST Wallet React Native SDK Getter Methods + +== Table of Contents + +* <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> +* <> + ** <> + ** <> +* <> + ** <> + ** <> + +++++++++++++ + +== Before We Begin + +* App must link:../README.md#initializing-the-sdk[initialize] the SDK _*before*_ initiating getter methods. +* We recommend using these methods _after_ link:../README.md#setupdevice[setupDevice] workflow has been performed. +* The getter methods provide the data as available with the device. + ** The methods may return `null` if the data is not available. +* These methods are _synchronous_ in the native SDK. +Because of react-native's bridge they behave _asynchronous_ in the react-native SDK. + ** These methods do not make any API calls. + +++++++++++++ + +== Get Token + +Method to get token information. + +____ +`getToken` method will return partial data if device has not been registered. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update tokenId as per your needs. + Since this tokenId does not belong to your economy, you may get an error if you do not change it. + */ + let tokenId = '1129'; + + /** + * Get token object for provided userId + * @param {String} tokenId - Ost Token id + * @param {function} callback - Gets token object if present else nil + * @callback params {Object} token entity. Returns null if information is not available with device. + * @public + */ + OstWalletSdk.getToken(tokenId, (tokenEntity) => { + console.log("tokenEntity", tokenEntity); + }); +---- + +++++++++++++ + +.Sample Response + +Please refer to the https://dev.ost.com/platform/docs/api/#token[Token Object] for a detailed description. + +[source,json] +---- +{ + "updated_timestamp": 1560167796, + "auxiliary_chains": [ + { + "organization": { + "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", + "contract": "0xb8e3fcfb5dac714e40b63489f4f393c7073fdbb3" + }, + "company_uuids": [ + "d6bf0061-a32d-48af-a29b-013260a947f3" + ], + "company_token_holders": [ + "0x93f08d0c5d7bc28cc117681b3b23f8501a09e786" + ], + "utility_branded_token": "0xc50e3fd492a9a99a964f7aff8d755075d0732ff0", + "chain_id": 197 + } + ], + "origin_chain": { + "stakers": [ + "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637" + ], + "organization": { + "owner": "0x8986922410e5d8cf43cfc94c1b51dcf8dfdf7637", + "contract": "0x0260a404804b1d7cf6fa678fb5d8441495cfff1b" + }, + "branded_token": "0x18cbeae2f1785abf68c9984f9186a29ed062c3ca", + "chain_id": 3 + }, + "decimals": 6, + "total_supply": "500000000000", + "conversion_factor": 10, + "base_token": "USDC", + "symbol": "SC1", + "name": "STC1", + "id": 1129 +} +---- + +++++++++++++ + +== Get User + +Method to get user information. + +____ +`getUser` method will return partial data if device has not been registered. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you will get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get user object for provided userId + * @param {String} userId - Ost User id + * @param {function} callback - Gets object if present else nil + * @callback params {Object}user + * @public + */ + OstWalletSdk.getUser(userId, (userEntity)=>{ + console.log( userEntity ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "updated_timestamp": 1566832473, + "status": "ACTIVATED", + "type": "user", + "recovery_owner_address": "0x0a64dc924d32a569b1d0885acfc34832e1444944", + "recovery_address": "0x99c46a66621d6967cbd692e615ec36747d58fecb", + "device_manager_address": "0x55f379612796b863590d388ed509ae50de12a5d2", + "token_holder_address": "0xbf3df93b15c6933177237d9ed8400a2f41c8b8a9", + "token_id": 1129, + "id": "71c59448-ff77-484c-99d8-abea8a419836" +} +---- + +++++++++++++ + +== Get Current Device + +Method to get device entity. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get current device object for provided userId + * @param {String} userId - Ost User id + * @param {function} callback - Gets current device object if present else nil + * @callback params {Object} device + * @public + */ + OstWalletSdk.getCurrentDeviceForUserId(userId, (device)=>{ + console.log( device ); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +{ + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "api_signer_address": "0x674d0fc0d044f085a87ed742ea778b55e298b429", + "linked_address": "0x73722b0c0a6b6418893737e0ca33dd567e33f6aa", + "address": "0x8d92cf567191f07e5c1b487ef422ff684ddf5dd3", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" +} +---- + +++++++++++++ + +== Get Biometric Preference + +Method to get biometric preference of the user. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get biometric preference for user + * + * @param userId - Ost User id + * @param callback - Gets biometric preference boolean value + */ + OstWalletSdk.isBiometricEnabled(userId, (status) => { + console.log("isBiometricEnabled", status ); + // logs true or false. + }); +---- + +++++++++++++ + +== Get Active Sessions + +Method to get active sessions available with device. + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId and minimumSpendingLimitInWei as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + let minimumSpendingLimitInWei = "1000000"; + + /** + * Get user object for provided userId + * @param {String} userId - Ost User id + * @param {String} minimumSpendingLimitInWei - optional parameter, defaults to zero. + * @param {function} callback - Gets array of current device sessions. + * @callback params {Array} array of sessions + * @public + */ + OstWalletSdk.getActiveSessionsForUserId(userId, minimumSpendingLimitInWei, (activeSessions)=>{ + console.log(activeSessions); + }); + + + // Optionally, getActiveSessionsForUserId method can also + // be invoked without specifying minimumSpendingLimitInWei. + OstWalletSdk.getActiveSessionsForUserId(userId,(activeSessions)=>{ + console.log(activeSessions); + }); +---- + +++++++++++++ + +.Sample Response +[source,json] +---- +[ + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x3171bce99d00812b77aa216ed544ab35fc8b6fb1", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x816324ed539b62652a247ce5c1f1962f6de13e14", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 3, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x95b3fcb5aa3930a9bc42da171b8733a3a869955f", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 3, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0xe57b68fc8aca57d9488d1607df628a4076571eda", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + }, + { + "updated_timestamp": 1566832473, + "status": "AUTHORIZED", + "nonce": 2, + "spending_limit": "1000000000000000000", + "approx_expiration_timestamp": 1566922426, + "expiration_height": 3607838, + "address": "0x459712cb13efd12ade7ff3a5fd4641f5c21904c9", + "user_id": "71c59448-ff77-484c-99d8-abea8a419836" + } +] +---- + +++++++++++++ + +== QR Code for Authorizing Device + +Method to generate QR code that can be scanned by an *authorized* device. +Scanning this QR code with an authorized mobile device will result in this device (from where the QR code has been generated) being authorized. + +____ +App should use this method only when the current device status is `REGISTERED`. +____ + +++++++++++++ + +.Usage +[source,js] +---- + /* + Please update userId and minimumSpendingLimitInWei as per your needs. + Since this userId does not belong to your economy, you may get an error if you do not change it. + */ + let userId = "71c59448-ff77-484c-99d8-abea8a419836"; + + /** + * Get device QR code + * @param {String} userId - Ost User id + * @param {function} successCallback - returns image as base64 string. + * @param {function} errorCallback. + * @public + */ + OstWalletSdk.getAddDeviceQRCode( userId , (base64Image) => { + console.log(base64Image); + // Assuming this method is called from Component, + // let's update the component's state to display the image. + this.setState({ + qrCode: base64Image + }); + }, (error) => { + + }); +---- + +++++++++++++ + +.Sample Render Method +[source,jsx] +---- + render() { + // Assuming that callback will set 'qrCode' attribute in component's state. + if ( this.state.qrCode ) { + return ( + + ); + } + return null; + } +---- diff --git a/docs/modules/ROOT/pages/OstWalletSettings.md.adoc b/docs/modules/ROOT/pages/OstWalletSettings.md.adoc new file mode 100644 index 0000000..45115b0 --- /dev/null +++ b/docs/modules/ROOT/pages/OstWalletSettings.md.adoc @@ -0,0 +1,78 @@ += OstWallet Settings + +== Introduction + +OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. +It is a wallet settings page that can be used by end-users to perfrom different wallet operations. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +OstWalletSettings supports 13 workflows: + +* Activate User +* Wallet Details +* Initialize Recovery +* Add Session +* Reset a User's PIN +* Get Mnemonic Phrase +* Authorize device using mnemonics +* Abort Device Recovery +* Revoke Device +* Scan QR Code to add another device +* Get Current Device QR code +* Enable Biometrics +* Disable Biometrics + +== Usage + +=== Create wallet settings stack navigation + +[source,js] +---- +import {OstWalletSettingsComponent} from '@ostdotcom/ost-wallet-sdk-react-native'; + +let settingsStack = createStackNavigator( + { + "WalletSettingScreen": OstWalletSettingsComponent + } +); +---- + +=== Naviagte to settings page + +`ostUserId` and `ostWalletUIWorkflowCallback` are mandetory parameters that need to be passed as params to the `WalletSettingScreen` screen. + +[source,js] +---- +const ostUserId = +const delegate = new OstWalletUIWorkflowCallback(ostUserId, {}) +this.props.navigation.push("WalletSettingScreen", {'ostUserId': ostUserId, 'ostWalletUIWorkflowCallback': delegate}); +---- + +____ +*Note* + Developer needs to create a class extends from `OstWalletUIWorkflowCallback` and write logic to get passphrase prefix from their application server. +Please refer link:OstWalletUI.md#setup-your-passphrase-prefix-delegate[this] section for documentation. +____ + +== UI Customization + +Developer can customize wallet settings by updating respective properties mentioned in image. +OstTheme config shown link:./configs/ost-sdk-theme-config.js[here] + +image:images/wallet_settings.png[copy-framework-file] image:images/wallet_details.png[copy-framework-file] + +== Settings Content + +Developer can modify `header` and `description` of settings options. +To modify contet, xref:./OstWalletSettingsConfig.adoc[refer here]. + +[source,js] +---- +import {OstWalletSettings} from "@ostdotcom/ost-wallet-sdk-react-native/js/index"; + +let settingsContentConfig = {} + +OstWalletSettings.setMasterConfig(settingsContentConfig) +---- diff --git a/docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc b/docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc new file mode 100644 index 0000000..f441cb3 --- /dev/null +++ b/docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc @@ -0,0 +1,121 @@ += OstWallet Settings Config + +== Introduction + +App developers can configure the text shown on settings page. + +To configure the content, the sdk needs to be provided with https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON[JSON object]. + +The default configuration can be found link:../js/WalletSettings/ost-wallet-settings-config.json[here]. + +== Dictionary Data Structure + +Here is the small sample json representation of the configuration. + +[source,json] +---- +{ + "item_display_order": [ + "activate_user", + ], + "item_configs": { + "activate_user": { + "content_config": { + "heading": "Activate User", + "description": "User is not activated yet." + }, + "config": { + "spending_limit": "0", + "expiration_time": 0 + } + } + } +} +---- + +In the above example: + +* The first-level key `item_display_order` corresponds to sequence of allowed workflows. +* The first-level key `item_configs` corresponds to config for workflows. +* The second-level key `activate_user` corresponds to activate user workflow. +* The third-level key `content_config` corresponds to `heading` and `description` of workflows. +* The third-level key `config` corresponds to respective config for workflows. + +== Supported Workflows + +OstWalletSettings supports 13 workflows + +|=== +| Configuration Keys | Workflows + +| activate_user +| Activate User + +| wallet_details +| Wallet Details + +| recover_device +| Initialize Recovery + +| add_session +| Add Session + +| reset_pin +| Reset a User's PIN + +| show_mnemonics +| Get Mnemonic Phrase + +| authorize_device_with_mnemonics +| Authorize device using mnemonics + +| abort_recovery +| Abort Device Recovery + +| revoke_device +| Revoke Device + +| add_another_device +| Scan QR Code to add another device + +| show_device_qr_code +| Get current Device QR code + +| enable_biometrics +| Use biometrics to authorize new Sessions and to confirm high value transactions. + +| disable_biometrics +| Turn off biometrics and use PIN to authorize new Sessions and to confirm high value transactions. +|=== + +* All workflows have `content_config`. +* `config` varies workflow to workflow. + +== Workflow Config + +Some workflows requires additional data. +It can be passed to workflow by setting it in `config`. + +|=== +| Workflows | Config Keys | Config Type + +| activate_user +| - spending_limit +| String + +| +| - expiration_time +| Number + +| wallet_details +| - ost_view_endpoint +| String + +| add_session +| - spending_limit +| String + +| +| - expiration_time +| Number +|=== diff --git a/docs/modules/ROOT/pages/OstWalletUI.md.adoc b/docs/modules/ROOT/pages/OstWalletUI.md.adoc new file mode 100644 index 0000000..3cf08bd --- /dev/null +++ b/docs/modules/ROOT/pages/OstWalletUI.md.adoc @@ -0,0 +1,986 @@ += OST Wallet React Native SDK UI + +== Introduction + +For quick and easy integration with SDK, developers can use built-in user interface components which are configurable and support content and theme customization. +All OstWalletSdkUI workflows return `workflow-id`. +The application can subscribe to the events of the workflow using the `workflow-id`. + +== Setup + +`OstWalletSdkUI` is packaged along with OstWalletSdk. +There are no additional steps for using `OstWalletSdkUI`. +To setup OstWalletSdk, please refer to link:../README.md#installing-react-native-sdk[setup]. + +== Before We Begin + +* App must link:../README.md#initializing-the-sdk[initialize] the sdk _*before*_ initiating any UI workflows. +* App must perform link:../README.md#setupdevice[setupDevice] workflow _*before*_ initiating any UI workflows. + +== OstWalletSdkUI SDK APIs + +To use OstWalletSdkUI + +---- +import {OstWalletSdkUI} from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +=== Set Theme Config + +Theme for OstWalletSdkUI can be initialized by calling `setThemeConfig` API which setup OstWalletSdkUI theme config. +To define custom theme config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ThemeConfig.md[Theme Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ThemeConfig.md[Theme Config iOS] documentation. + +[source,js] +---- + // Define the content config + const theme_config = { + "nav_bar_logo_image": { + "asset_name": "YOUR_LOGO_ASSET_NAME" + } + }; + + /** + * Set theme config for UI + * config: Config to use for UI + */ + OstWalletSdkUI.setThemeConfig(theme_config); +---- + +____ +* In the above example, `asset_name` is name of asset which is present in the respective assets folder for iOS/android. +____ + +=== Set Content Config + +Content for OstWalletSdkUI can be initialized by calling `setContentConfig` API which set-up OstWalletSdkUI content config. +To define custom content config, please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/release-2.3/documentation/ContentConfig.md[Content Config Android]/https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/documentation/ContentConfig.md[Content Config iOS] documentation. + +[source,js] +---- + // Please update terms_and_condition.url as per your needs. + const content_config = { + "activate_user": { + "create_pin": { + "placeholders": { + "terms_and_condition": { + "url": "https://YOUR-WEB-SITE.com/terms-page" + } + } + }, + "confirm_pin": { + "placeholders": { + "terms_and_condition": { + "url": "https://YOUR-WEB-SITE.com/terms-page" + } + } + } + } + }; + + /** + * Set content config for UI + * config: Config to use for UI + */ + OstWalletSdkUI.setContentConfig(content_config); +---- + +=== Set Loader Manager + +Application loader for OstWalletUI can be initialized by calling `setLoaderManager` API. +This API is available in native SDK. ++ + Custom loader is supported from OstWalletSdk-native version Android v``2.3.6`` Or iOS v``2.3.5`` + Please, verify OstWalletSdk version in `Cartfile`. ++ + Custom loader needs to be written in native code (java, swift/Objective-C). ++ Sample code for custom loader is available in respective platform directory. +For https://github.com/ostdotcom/ost-wallet-sdk-ios/blob/release-2.3/Samples/CustomLoader/OstMockCustomLoader.md[iOS] and https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/Samples/customloader/OstCustomLoader.md[Android] + +=== Setup your Passphrase Prefix Delegate + +`Passphrase Prefix` is a salt provided by your application that assists in generation of User's recovery key using user's PIN. +This salt should be _unique_ for each user, is immutable and needs to be associated with the user. +The salt should not be stored in memory or on deivce unencrypted. +When the UI workflow need's to ask for user's PIN, delegate's getPassphrase method is invoked. + +The delegate must be derived from `OstWalletUIWorkflowCallback` class. + +Here is an example: + +[source,javascript] +---- +import { OstWalletUIWorkflowCallback } from '@ostdotcom/ost-wallet-sdk-react-native'; +class UserPassphrasePrefixDelegate extends OstWalletUIWorkflowCallback { + constructor() { + super(); + } + + getPassphrase(userId, ostWorkflowContext, OstPassphrasePrefixAccept) { + let fetchPromise = new Promise((resolve,reject) => { + //Write code here to validate userId. + //If it is not the same as that of the logged-in user, reject the promise. + + //Write code here to fetch the salt from your server. + //Read the passphrasePrefix from response and resolve the Promise. + }); + fetchPromise + .then((passphrasePrefix) => { + OstPassphrasePrefixAccept.setPassphrase(passphrasePrefix, userId, (error) => { + console.warn(error); + }); + }) + .catch((err) => { + // Cancel the workflow. + OstPassphrasePrefixAccept.cancelFlow(); + }); + } + + /** + * Optional Callback Implementation + * -------------------------------- + * + * Application can also define and use following callback methods: + * - requestAcknowledged(ostWorkflowContext , ostContextEntity ) + * - flowComplete(ostWorkflowContext , ostContextEntity ) + * - flowInterrupt(ostWorkflowContext , ostError) + * + * Note: + * These methods can be helpful for debugging. + * Defining these methods does NOT impact ui workflow event subscription in any way. + * If application subscribes to events and also defines these callbacks, both shall be invoked. + */ + + requestAcknowledged(ostWorkflowContext , ostContextEntity ) { + console.log("Received requestAcknowledged callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let entityType = ostContextEntity.entityType; + let entityData = ostContextEntity.entity; + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- OstContextEntity type:", entityType) + console.log("- OstContextEntity entityData:", entityData); + } + + flowComplete(ostWorkflowContext , ostContextEntity ) { + console.log("Received flowComplete callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let entityType = ostContextEntity.entityType; + let entityData = ostContextEntity.entity; + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- OstContextEntity type:", entityType) + console.log("- OstContextEntity entityData:", entityData); + } + + flowInterrupt(ostWorkflowContext , ostError) { + console.log("Received flowInterrupt callback"); + + let contextWorkflowId = ostWorkflowContext.WORKFLOW_ID; + let workflowType = ostWorkflowContext.WORKFLOW_TYPE; + let errorData = ostError.error; + let errorCode = ostError.getErrorCode(); + + // If you would like to reach out to Ost Devs for support, + // we request you to collect internalErrorCode + let internalErrorCode = ostError.getInternalErrorCode(); + let isApiError = ostError.isApiError(); + + console.log("- Workflow Id:", contextWorkflowId); + console.log("- Workflow Type:", workflowType); + console.log("- Error"); + console.log(" - Error Code:", errorCode); + console.log(" - Is Api Error:", isApiError); + console.log(" - Sdk Internal Error Code", internalErrorCode); + console.log(" - error data", errorData); + + if ( isApiError && ostError.isApiSignerUnauthorized() ) { + console.log("- This device has either been revoked or not yet registered."); + } else if ("WORKFLOW_CANCELED" === errorCode.toUpperCase() ) { + console.log("- This error can be ignored. The workflow has been canceled by the user or application"); + } + } +} +export default UserPassphrasePrefixDelegate; +---- + +=== Ost Wallet Settings + +OstWallet Settings is a pre-built UI Component available exclusively available in `ost-wallet-sdk-react-native` Sdk. +It is a wallet settings page that can be used by end-users to perfrom different wallet operations(Ost Wallet UI Workflows). +For details xref:./OstWalletSettings.adoc[check here] + +____ +*Note* + `OstWalletSettings` is available from `ost-wallet-sdk-react-native` SKD version v2.3.12-beta.1 +____ + +=== Ost Wallet UI Workflows + +==== Activate User + +User activation refers to the deployment of smart-contracts that form the user's token wallet. +An activated user can engage with a token. + +[source,javascript] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** +* Activate user +* @param {String} userId - Ost User id +* @param {String} expiresAfterInSecs - session key expiry time. +* @param {String} spendingLimit - spending limit once in a transaction of session +* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication +* @public +*/ +let workflowId = OstWalletSdkUI.activateUser( + userId, + expiresAfterInSecs, + spendingLimit, + uiCallback +); + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // User is being activated. At this point, user can neither receive or send tokens. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // User has been activated. User can now start receiving tokens. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. The user has NOT been activated. +}); +---- + +==== Add Session + +A session is a period of time during which a sessionKey is authorized to sign transactions under a pre-set limit per transaction on behalf of the user. +The device manager, which controls the tokens, authorizes sessions. + +* *By Calling function* + + +[source,js] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Add user session + * @param {String} userId - Ost User id + * @param {String} expiresAfterInSecs - session key expiry time. + * @param {String} spendingLimit - spending limit once in a transaction of session + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ +let workflowId = OstWalletSdkUI.addSession( + userId, + expiresAfterInSecs, + spendingLimit, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Session is being added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Session has been added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. The Session has NOT been added. +}); +---- + +* ++++++By scanning QR-Code ++++++ + + +QR Code Sample + +---- +as|2.0.0|2a421359d02132e8161cda9518aeaa62647b648e|5369b4d7e0e53e1159d6379b989a8429a7b2dd59|1|1583308559|4d40c46a7302974134a67ce77bdfae0e1f78ee518e87b6cda861ffc5847dfaca11a653651c6cdfadf0224574f6f07e1a78aabacdfed66d8c78e1fb2c9bc750161c +---- + +[source,js] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Add user session + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ +let workflowId = OstWalletSdkUI.scanQRCodeToAuthorizeSession( + userId, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Session is being added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Session has been added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. The Session has NOT been added. +}); +---- + +* ++++++With QR Code Payload ++++++ + + +[source,js] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() +let payload = "as|2.0.0|2a421359d02132e8161cda9518aeaa62647b648e|5369b4d7e0e53e1159d6379b989a8429a7b2dd59|1|1583308559|4d40c46a7302974134a67ce77bdfae0e1f78ee518e87b6cda861ffc5847dfaca11a653651c6cdfadf0224574f6f07e1a78aabacdfed66d8c78e1fb2c9bc750161c" +/** + * Authorize browser session with QR code payload + * @param {String} userId - Ost User id + * @param {String} qrPayload - QR-Code payload + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @return {*|number} + */ +let workflowId = OstWalletSdkUI.authorizeSessionWithQRPayload( + userId, + payload, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Session is being added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Session has been added. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. The Session has NOT been added. +}); +---- + +==== Get Mnemonic Phrase + +The mnemonic phrase represents a human-readable way to authorize a new device. +This phrase is 12 words long. + +[source,js] +---- +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Get device mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ +let workflowId = OstWalletSdkUI.getDeviceMnemonics( + userId, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // User has seen the mnemonics +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +==== Reset a User's PIN + +The user's PIN is set when activating the user. +This method supports re-setting a PIN and re-creating the recoveryOwner as part of that. + +[source,js] +---- + +let uiCallback = new UserPassphrasePrefixDelegate() + +/** + * Reset pin + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + */ +let workflowId = OstWalletSdkUI.resetPin( + userId, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Pin is being reset. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Workflow completed successfully. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +==== Initiate Recovery + +A user can control their tokens using their authorized device(s). +If the user loses their authorized device, she can recover access to their tokens by authorizing a new device via the recovery process. + +If application set `recoverDeviceAddress` then OstWalletUI ask for `pin` to initiate device recovery. +Else it displays authorized device list for given `userId` to select device from. + +[source,javascript] +---- + +let uiCallback = new UserPassphrasePrefixDelegate(); + +/** +* Initiate device recovery +* @param {String} userId - Ost User id +* @param {String} recoverDeviceAddress - Device address which wants to recover +* @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication +* @public +*/ +let workflowId = OstWalletSdkUI.initiateDeviceRecovery( + userId, + recoverDeviceAddress, + uiCallback +) + +// Subscribe to events +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Device recovery has been initiated. + // The device will be recovered after 12 hours. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device recovery has been initiated. + // The device will be recovered after 12 hours. +}); + +OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. +}); +---- + +____ +`recoverDeviceAddress` can be `null`. ++ If you have your own UI to select the device to revoke, set `recoverDeviceAddress` to the selected device address. ++ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. ++ +____ + +==== Abort Device Recovery + +To abort initiated device recovery. + +[source,javascript] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Abort device recovery + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + OstWalletSdkUI.abortDeviceRecovery( + userId, + uiCallback + ) + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device recovery has been aborted. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Revoke Device + +To revoke device access. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Revoke device + * @param {String} userId - Ost User id + * @param {String} deviceAddressToRevoke - Device address which wants to recover + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.revokeDevice(userId, deviceAddressToRevoke, uiCallback ); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been revoked. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +____ +`deviceAddressToRevoke` can be `null`. ++ If you have your own UI to select the device to revoke, set `deviceAddressToRevoke` to the selected device address. ++ When `null` is passed, the Sdk will ask user to choose the device using built-in device list UI. ++ +____ + +==== Update Biometric Preference + +To enable or disable the biometric. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + let shouldEnable = true; + + /** + * Update biometric preference + * @param {String} userId - Ost User id + * @param {boolean} shouldEnable - pass true to enable biometic preference, false to disable. + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.updateBiometricPreference( userId, shouldEnable, uiCallback ); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Preference has been updated. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Authorize Current Device With Mnemonics + +To add a new device using 12 words recovery phrase. + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + /** + * Authorize user device with mnemonics + * @param {String} userId - Ost User id + * @param {OstWalletWorkFlowCallback} workflow - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.authorizeCurrentDeviceWithMnemonics(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Request has been acknowledged by OST Platform. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +==== Get Add Device QR-Code + +To show QR-Code to scan from another authorized device + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Get add device QR code + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.getAddDeviceQRCode(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Current Device is being authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Current Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +=== Scan QR-Code to Authorize Device + +To authorize device by scanning device QR-Code. + +QR-Code Sample: + +[source,json] +---- +{ + "dd":"AD", + "ddv":"1.1.0", + "d":{ + "da": "0x7701af46018fc57c443b63e839eb24872755a2f8" + } +} +---- + +* ++++++By scanning QR-Code ++++++ + + +[source,js] +---- + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Scan QR-Code to authorize device + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.scanQRCodeToAuthorizeDevice(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Device is being authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +* ++++++with QR Code payload ++++++ + Developer can pass QR code payload to authorize device. +QR code scanner view won't open if developer pass payload. + +[source,js] +---- + let uiCallback = new UserPassphrasePrefixDelegate(); + let payload = "{\"dd\":\"AD\",\"ddv\":\"1.1.0\",\"d\":{\"da\":\"0x7701af46018fc57c443b63e839eb24872755a2f8\"}}" + /** + * Authorize device with QR code payload + * @param {String} userId - Ost User id + * @param {String} qrPayload - QR-Code payload + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @return {*|number} + */ + let workflowId = OstWalletSdkUI.authorizeDeviceWithQRPayload(userId, payload, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Device is being authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +=== Execute Transaction + +* ++++++By Scanning QR-Code ++++++ + To execute transaction via device by scanning device QR-Code. + +QR-Code Sample: + +[source,json] +---- +{ + "dd":"TX", + "ddv":"1.1.0", + "d":{ + "rn":"direct transfer", + "ads":[ + "0x7701af46018fc57c443b63e839eb24872755a2f8", + "0xed09dc167a72d939ecf3d3854ad0978fb13a8fe9" + ], + "ams":[ + "1000000000000000000", + "1000000000000000000" + ], + "tid": 1140, + "o":{ + "cs":"USD", + "s": "$" + } + }, + "m":{ + "tn":"comment", + "tt":"user_to_user", + "td":"Thanks for comment" + } +} +---- + +[source,js] +---- + + let uiCallback = new UserPassphrasePrefixDelegate(); + + /** + * Scan QR-Code to execute transaction + * + * @param {String} userId - Ost User id + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @public + */ + let workflowId = OstWalletSdkUI.scanQRCodeToExecuteTransaction(userId, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Transaction is being executed. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Transaction has been executed successfully. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +* ++++++with QR Code payload ++++++ + Developer can pass QR code payload to execute transaction. +QR code scanner view won't appear if developer pass payload. + +[source,js] +---- + let uiCallback = new UserPassphrasePrefixDelegate(); + let payload = + /** + * Execute transaction with QR code payload + * @param {String} userId - Ost User id + * @param {String} qrPayload - QR-Code payload + * @param {OstWalletUIWorkflowCallback} uiCallback - callback implementation instances for application communication + * @return {*|number} + */ + let workflowId = OstWalletSdkUI.executeTransactionWithQRPayload(userId, payload, uiCallback); + + // Subscribe to events + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.requestAcknowledged, () => { + // Device is being authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowComplete, (ostWorkflowContext , ostContextEntity) => { + // Show success message to user. + // Device has been authorized. + }); + + OstWalletSdkUI.subscribe(workflowId, OstWalletSdkUI.EVENTS.flowInterrupt, (ostWorkflowContext , ostError) => { + // Show error to user. + // An error occoured during the workflow. + }); +---- + +* *By Calling function* + Helper method creates session if active sessoin for transction amount is not available. +To execute transaction via helper method, xref:./OstTransactionHelper.adoc[ref here] + +== Ost Wallet UI Events and Listeners + +=== Subscribe + +Subscribe to specified event of UI Workflow + +Supported `EventName` are: + +* requestAcknowledged +* flowComplete +* flowInterrupt + +You can retrive event names from Sdk: + +[source,javascript] +---- +OstWalletSdkUI.EVENTS.requestAcknowledged +OstWalletSdkUI.EVENTS.flowComplete +OstWalletSdkUI.EVENTS.flowInterrupt +---- + +[source,javascript] +---- +/** +* Subscribes to specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.subscribe( + workflowId, + eventName, + listener, + context +) +---- + +[source,javascript] +---- +/** +* Subscribes once to specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.subscribeOnce( + workflowId, + eventName, + listener, + context +) +---- + +=== Unsubscribe + +Unsubscribes the listener from the specified event of UI Workflow. + +[source,javascript] +---- +/** +* Unsubscribes the listener from the specified event of UI Workflow. +* @param {String} workflowId - Id of the workflow as returned by methods of OstWalletSdkUI +* @param {String} eventName - Name of the event to subscribe to. +* @param {Function} listener - The listener function. +* @param {*} context - The context to invoke the listener with. +* @returns {Boolean} - false if failed to subscribe. +* @public +*/ +OstWalletSdkUI.unsubscribe( + workflowId, + eventName, + listener, + context +) +---- + +=== Event Listeners + +==== Request Acknowledged Listener + +Acknowledge application about the request which is going to made by SDK. + +[source,js] +---- +/** + * Request acknowledged + * @param {Object} ostWorkflowContext - info about workflow type + * @param ostContextEntity - info about entity + * @override + */ + requestAcknowledged(ostWorkflowContext, ostContextEntity ) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- + +==== Flow Complete Listener + +[source,js] +---- +/** + * Flow complete + * @param ostWorkflowContext - workflow type + * @param ostContextEntity - status of the flow + * @override + */ + flowComplete(ostWorkflowContext, ostContextEntity ) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- + +==== Flow Interrupt Listener + +[source,js] +---- +/** + * Flow interrupt + * @param ostWorkflowContext workflow type + * @param ostError reason of interruption + * @override + */ + flowInterrupt(ostWorkflowContext, ostError) => { + //ostWorkflowContext.WORKFLOW_ID gives the id of the workflow. + //ostWorkflowContext.WORKFLOW_TYPE gives the type of the workflow. + } +---- diff --git a/docs/modules/ROOT/pages/README.md.adoc b/docs/modules/ROOT/pages/README.md.adoc new file mode 100644 index 0000000..5d1a06b --- /dev/null +++ b/docs/modules/ROOT/pages/README.md.adoc @@ -0,0 +1,358 @@ += Ost Wallet SDK React Native + +== Introduction + +Ost React Native Wallet SDK is the official Ost Wallet SDK for react-native platform. +The SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. + +Ost React Native Wallet SDK... + +* Safely generates and stores keys on the user's mobile device +* Signs ethereum transactions and data as defined by contracts using EIP-1077 +* Enables users to recover access to their Brand Tokens in case the user loses their authorized device + +== Table of Contents + +* <> +* <> +* <> + ** <> + ** <> + ** <> +* <> +* <> +* <> + ** <> + *** <> + *** <> + *** <> + ** <> + *** <> + *** <> + *** <> + ** <> + *** <> + ** <> + *** <> + ** <> + *** <> +* <> +* <> +* <> + ** <> + ** <> + +== Installing React-native SDK + +. Install React Native and create a react-native project + +Follow this https://facebook.github.io/react-native/docs/0.59/getting-started[official react-native getting started guide] to install react native and create a react-native project + +. Install Ost React Native SDK in your project The sdk needs following peer dependencies: + ** https://www.npmjs.com/package/eventemitter3[eventemitter3] + ** https://www.npmjs.com/package/lodash.merge[lodash.merge] + ** https://www.npmjs.com/package/bignumber.js[bignumber.js] + +[source,bash] +---- + npm install --save lodash.merge + npm install --save eventemitter3 + npm install --save bignumber.js +---- + +Run following command in your react-native project root + +[source,bash] +---- + npm install --save @ostdotcom/ost-wallet-sdk-react-native +---- + +. Linking the Ost React Native SDK with your project + +[source,bash] +---- + react-native link @ostdotcom/ost-wallet-sdk-react-native +---- + +. xref:./documentation/android_setup.adoc[Android set-up for Ost React Native SDK] +. xref:./documentation/ios_setup.adoc[iOS Set-up for Ost React Native SDK] + +== Migrating to another version + +If you decide to change the SDK version, please make sure to update the downsteam native SDKs. + +For Android, please run: + +[source,shell] +---- +react-native link +react-native run-android +---- + +For iOS, please update the `ios/Cartfile` with desired version and run: + +[source,shell] +---- +carthage update --cache-builds --platform ios +---- + +After updating the SDK, please delete `ostwalletrnsdk` using the *Remove References* option and add it back by following link:./documentation/ios_setup.md#5-add-additional-sdk-files[this step]. + +== SDK Usage + +* Initialize the SDK +* Subscribe to events +* Implement `OstWalletWorkFlowCallback` for a workflow +* Execute workflow + +=== Initializing the SDK + +You must initialize the SDK before using it. + +____ +Initialize the SDK in using BASE_URL (Ost Platform endpoint) inside App.js `constructor()` method. +____ + +[source,javascript] +---- +/** + * Initialize wallet sdk + * @param {String} endpoint - Ost Platform endpoint + * @param {function} Callback function with error and success status. + * @public + */ + OstWalletSdk.initialize( endpoint, + (error, success) => {}) +---- + +=== Initializing SDK With Config + +Starting version `2.3.1` application can also pass SDK config in the initialize method + +____ +If config is passed in `initialize` method, the configs specified in `OstWalletSdk.plist` and `ost-mobilesdk.json` are ignored. +It is no longer mandatory to define `ost-mobilesdk.json` and `OstWalletSdk.plist` files. +____ + +[source,javascript] +---- + let sdkConfig = { + "BLOCK_GENERATION_TIME": 3, + "PIN_MAX_RETRY_COUNT": 3, + "REQUEST_TIMEOUT_DURATION": 60, + "SESSION_BUFFER_TIME": 3600, + "PRICE_POINT_CURRENCY_SYMBOL": "USD", + "USE_SEED_PASSWORD": false, + "NO_OF_SESSIONS_ON_ACTIVATE_USER": 1, + "ENABLE_IOS_DEVICE_RESTORE": false + }; + + /** + * Initialize wallet sdk + * @param {String} endpoint - Ost Platform endpoint + * @param {Object} config (optional) - SDK Config. Supported from version 2.3.1 + * @param {function} callback - A typical node-style, error-first callback. + * @callback params {Object}error , {Boolean} success + * @public + */ + OstWalletSdk.initialize( endpoint, sdkConfig, (error, success) => { + + }); +---- + +=== Subscribe to `OstWalletSdkEvents` in your top most level component + +In the most top level component (mostly `App.js`) import like this: + +[source,javascript] +---- +import { OstWalletSdkEvents, OstWalletSdk, OstWalletSdkUI, OstJsonApi } from '@ostdotcom/ost-wallet-sdk-react-native'; +---- + +In `componentDidMount()` subscribe to OstWalletSdkEvents and in `componentWillUnmount()` unsubscribe to OstWalletSdkEvents. +Also initialize the SDK in using BASE_URL (Ost Platform endpoint) `constructor()` method: + +[source,javascript] +---- +class App extends Component { + + constructor() { + super(); + OstWalletSdk.initialize(BASE_URL, (error, success) => { + if(error) { + console.warn(error); + } + else { + console.warn(success); + } + + }); + } + + componentDidMount() { + OstWalletSdkEvents.subscribeEvent(); + } + + componentWillUnmount() { + OstWalletSdkEvents.unsubscribeEvent(); + } + +} +---- + +== Getter Methods + +The SDK provides getter methods that applications can use for various purposes. +These methods provide the application with data as available in the device's database. +Please refer to xref:./documentation/OstWalletSdkGetMethods.adoc[Ost Wallet SDK Getter Methods] for documentation. + +== Ost JSON APIs + +While the getter methods provide application with data stored in device's database, the JSON API methods make API calls to Ost Platform servers. +Please refer to xref:./documentation/OstJsonApi.adoc[Ost JSON API] for documentation. + +== Quick Start Guide - Ost Macro Workflows + +Starting version 2.3.12-beta.1, developers can enable all the Ost wallet features implementing the Ost Macro Workflows. + +=== 1. Setup Device Core Workflow + +''' + +The setup device workflow establishes trust between the device and Ost Platform. +As application is responsible for user authentication, application servers must facilitate this workflow using the server side sdk. + +==== Workflow Details + +* When this workflow is initiated by the application, the Sdk creates the following keys: + ** API key - the key used to sign API requests sent to Ost Platform from the sdk. + ** Device key - the user's wallet device key. +All device manager operations shall be performed using this key. +* The Sdk asks the application to register the device entity with Ost Platform. +* The application must send the device entity to the application server. +* The application server must then use the server side sdk to register the device with Ost Plaform by using device service's create device Api. +* Once the device is registered by the Ost Platform, the application server must send the response to the mobile application. +* The mobile application must then use the `deviceRegistered` callbacks to provide the response to the Sdk. +* The sdk validates the registration by making Api calls to the Ost Plaform. + +image::./documentation/images/setup_device_workflow.svg[] + +==== Notes + +* Setup device workflow must be initiated *on every app launch*. +* Setup device workflow must be initiated only *after the user has been autheniticated* by the application, including cookie based authentication for already logged-in users. +* Each of user's device creates its own API key and device key. +* User's Device and API keys are not shared across devices. +* User's API key & device key are stored in persistent storage on the device and created only if needed. +* The Sdk shall request for device registration only when needed. +`registerDevice` shall not be invoked if device is already authorized and sdk is able to make Api calls to Ost Platform. + +==== Implementation + +Please refer to link:./documentation/OstCoreWorkflows.md#setupdevice[`setupDevice` core workflow documentation] for implementation details. + +=== 2. Activate User UI Workflow + +''' + +Activate User workflow deploys user's wallet on the blockchain and whitelists the user's wallet and enables it to take part in application's brand token economy. + +==== Blockchain Transactions Performed During Activate User Workflow + +* Deploys user's contracts + ** Device-manager and token-holder contracts + ** Set user's recovery key address, device key address in device-manager contract + ** Authorizes session key(s) in token-holder contract +* Whitelists user's contract in UBT (Utility Brand Token Contract). + +==== Recovery Key Generation Using 6 Digit Pin + +* User's recovery key is generated using https://en.bitcoinwiki.org/wiki/Scrypt[SCrypt], a password-based key derivation function. +* The '`password`' provided to this function is a string created by concatenating: +* A prefix provided by application server. ++ +____ +Application server must generate and store prefix for each user, treat it as sensitive and immutable information. +____ + +* User's PIN +* User's Ost-id +* The salt required for SCrypt is provided by Ost Platform + +==== Implementation + +Please refer to link:./documentation/OstWalletUI.md#activate-user[Activate User UI Workflow Documentation] for implementation details. + +++++++++++++ + +=== 3. Wallet Settings UI Component + +''' + +OstWallet Settings is a pre-built UI component available exclusively available in `ost-wallet-sdk-react-native` SDK. +It is a wallet settings page that can be used by end-users to perfrom 12 different wallet operations and view their wallet details. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +==== Implementation + +Please refer to xref:./documentation/OstWalletSettings.adoc[OstWallet Settings Documentation] for implementation details. + +++++++++++++ + +=== 4. Redemption Flow UI Component + +''' + +OstRedemption component is a pre-built UI component available exclusively in `ost-wallet-sdk-react-native` SDK. +It consist two pages - one displaying redeemable product list and another displaying product details and redemption options. +It can be used by end-users to integrate redemption flow into their app. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +==== Implementation + +Please reder to xref:./documentation/OstRedemptionFlow.adoc[OstRedemption flow Documentation] for implementation details. + +=== 5. OstTransaction Helper - Transaction and Add Session Integrated Workflow + +''' + +`OstTransactionHelper` is a transaction helper provided by the SDK that creates session keys before performing a transaction if needed. +App developers can configure the session creation parameters (session buckets) as per application's need. + +==== Implementation + +Please refer to xref:./documentation/OstTransactionHelper.adoc[Ost Transaction Helper Documentation] for implementation details. + +== Intermediate Usage - Ost Wallet SDK UI + +For quick and easy integration with SDK, developers can use built-in user-interface components which are configurable and support content and theme customization. + +Please refer to xref:./documentation/OstWalletUI.adoc[Ost Wallet SDK UI] for documentation. + +== Advance Usage - Ost Wallet Core Workflow APIs + +Ost core workflows API do not use any UI components, thereby giving complete ux control to the developers. +The xref:./documentation/OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost core workflows. + +Please refer to xref:./documentation/OstCoreWorkflows.adoc[Ost Core Workflow APIs] for documentation. + +== Known Issues + +=== Sdk Initialization Fails on Android 9 (API level 28) + +Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. +On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. +As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. +To work-around this issues, application needs to have TrustKit as a dependency and initialize it. + +=== Setup Device Workflow Fails on iOS-13 Simulator + +Ost Wallet Sdk uses iOS's https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain[Keychain] to store user's cryptographic keys. +Unfortunately, Keychain doesn't work as expected on iOS-13 Simulators. +We request you to kindly test your application on actual iOS-13 device while we continue to look for a workaround. diff --git a/docs/modules/ROOT/pages/android_setup.md.adoc b/docs/modules/ROOT/pages/android_setup.md.adoc new file mode 100644 index 0000000..089c726 --- /dev/null +++ b/docs/modules/ROOT/pages/android_setup.md.adoc @@ -0,0 +1,79 @@ += Android set-up required for Ost React Native SDK +:doctype: book + +== 1. Linking the Ost React Native SDK + +=== Automatic Linking + +[source,bash] +---- +react-native link @ostdotcom/ost-wallet-sdk-react-native +---- + +=== Manual Linking + +. Open up `+./android/app/src/main/java/[...]/MainApplication.java+`. + ** Add `import com.ostwalletrnsdk.OstWalletRnSdkPackage;` to the imports at the top of the file. + ** Add `new OstWalletRnSdkPackage()` to the list returned by the `getPackages()` method +. Append the following lines to `./android/settings.gradle`: ` include ':ost-wallet-sdk-react-native' project(':ost-wallet-sdk-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/ost-wallet-sdk-react-native/android') ` +. Insert the following lines inside the dependencies block in `./android/app/build.gradle`: ``` compile project(':ost-wallet-sdk-react-native') + +== 2. Changing `minSdkVersion` in './android/build.gradle' file + +Change the `minSdkVersion` to 22 in `android/build.gradle` + +---- +android { + defaultConfig { + minSdkVersion 22 + ... + ... + ... + } +} +---- + +== 3. Create SDK configuration file + +Create file `./android/app/src/main/assets/ost-mobilesdk.json` with application specific configurations using the json below as an example + +[source,json] +---- +{ + "BLOCK_GENERATION_TIME": 3, + "PIN_MAX_RETRY_COUNT": 3, + "REQUEST_TIMEOUT_DURATION": 60, + "SESSION_BUFFER_TIME": 3600, + "PRICE_POINT_CURRENCY_SYMBOL": "USD", + "USE_SEED_PASSWORD": false +} +---- + +. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. +. PricePointTokenSymbol: This is the symbol of base currency. +So its value will be OST. +. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. +. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. +. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. +. SessionBufferTime: Buffer expiration time for session keys in seconds. +Default value is 3600 seconds. +. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. +When UseSeedPassword set to `true`, different deterministic salts are used for different keys. + +*NOTE: These configurations are MANDATORY for successful operation. +Failing to set them will significantly impact usage.* + += Debug builds with Android 9 (API level 28) + +Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. +On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. +As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. +To work-around this issues, application needs to have TrustKit as a dependency and initialize it. + +Please refer to https://github.com/ostdotcom/ost-wallet-sdk-android/blob/develop/documentation/TrustKitPublickeyPinning.md[Public Key Pinning Using TrustKit] documentation. + += Next Steps + +. link:../README.md#sdk-usage[SDK Usage] +. link:../README.md#sdk-methods[SDK Methods] +. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] diff --git a/docs/modules/ROOT/pages/ios_setup.md.adoc b/docs/modules/ROOT/pages/ios_setup.md.adoc new file mode 100644 index 0000000..e131a7b --- /dev/null +++ b/docs/modules/ROOT/pages/ios_setup.md.adoc @@ -0,0 +1,152 @@ += iOS setup required for OST React Native SDK +:doctype: book + +== 1. Installing https://github.com/Carthage/Carthage[Carthage] + +Get https://github.com/Carthage/Carthage[Carthage] by running following command on terminal + +[source,bash] +---- + brew install carthage +---- + +You can also choose https://github.com/Carthage/Carthage/#installing-carthage[other methods] to install https://github.com/Carthage/Carthage[Carthage] + +== 2. Downloading OST React Native SDK using Carthage + +Carthage looks at a file called `Cartfile` to determine which libraries to install. +Create a file in the `./ios` directory of your react-native project called `Cartfile` and enter the following to tell Carthage which dependencies we want: + +Add following entry in your `Cartfile` + +[source,bash] +---- + github "ostdotcom/ost-wallet-sdk-ios" == 2.4.1 +---- + +Now to actually install everything run the following in your terminal: + +[source,bash] +---- + carthage update --platform iOS +---- + +A `Cartfile.resolved` file and a `Carthage` directory will appear in the same directory where your `.xcodeproj` or `.xcworkspace` is. + +== 3. Copying the `OstWalletSdk.framework` file in your Xcode project + +Open your project in Xcode, click on the project file in the left section of the screen and scroll down to the `Linked Frameworks and Libraries` section in Xcode. + +`Carthage` folder will have the `.framework` files that we will add in Xcode project. + +Now open the `./ios/Carthage/Build/iOS` folder in Finder: + +Run this command + +[source,bash] +---- +open ios/Carthage/Build/iOS +---- + +Open application target, under General tab, drag the built `OstWalletSdk.framework` binary from `./ios/Carthage/Build/iOS` folder into Linked Frameworks and Libraries section. + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/copy-framework-file.png[copy-framework-file] + +== 4. Adding the `OstWalletSdk` dependencies in your Xcode project + +We need to add the `.framework` files of dependencies present inside `./ios/Carthage/Build/iOS`. + +Open `application targets` in Xcode. +Under `Build Phases` click `+` icon and choose `New Run Script Phase`. +Add the following command. + +[source,bash] +---- +/usr/local/bin/carthage copy-frameworks +---- + +Click the `+` under `Input Files` and add the following entry framework: + +---- +$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework +$(SRCROOT)/Carthage/Build/iOS/BigInt.framework +$(SRCROOT)/Carthage/Build/iOS/CryptoEthereumSwift.framework +$(SRCROOT)/Carthage/Build/iOS/CryptoSwift.framework +$(SRCROOT)/Carthage/Build/iOS/EthereumKit.framework +$(SRCROOT)/Carthage/Build/iOS/FMDB.framework +$(SRCROOT)/Carthage/Build/iOS/SipHash.framework +$(SRCROOT)/Carthage/Build/iOS/TrustKit.framework +$(SRCROOT)/Carthage/Build/iOS/OstWalletSdk.framework +---- + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/add-dependency-framework-files.png[copy-framework-file] + +== 5. Add additional SDK files + +Follow these steps to add additional files: + +* Click on your project, select `File > Add Files to ""` +* Browse to `./node_modules/@ostdotcom/ost-wallet-sdk-react-native/ios` +* Add the folder `ostwalletrnsdk` with following settings: + ** Destination: (uncheck) Copy items if needed + ** Added folders: (select) Create groups + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/additional-files.png[Add-image] + +== 6. Change Build Settings + +Open application target, under `Build Settings` tab, enable `Always Embed Swift Standard Libraries` under `Build Options` + +image::https://dxwfxs8b4lg24.cloudfront.net/docs/native/images/build-options.png[Add image] + +== 7. Create SDK configuration file + +Create `OstWalletSdk.plist` file. +This file has configuration attributes used by OstWalletSdk. +You should copy paste the configuration values from below snippet. + +---- + + + + + BlockGenerationTime + 3 + PricePointTokenSymbol + OST + PricePointCurrencySymbol + USD + RequestTimeoutDuration + 30 + PinMaxRetryCount + 3 + SessionBufferTime + 3600 + UseSeedPassword + + EnableIOSDeviceRestore + + + +---- + +. BlockGenerationTime: The time in seconds it takes to mine a block on auxiliary chain. +. PricePointTokenSymbol: This is the symbol of base currency. +So its value will be OST. +. PricePointCurrencySymbol: It is the symbol of quote currency used in price conversion. +. RequestTimeoutDuration: Request timeout in seconds for https calls made by ostWalletSdk. +. PinMaxRetryCount: Maximum retry count to get the wallet Pin from user. +. SessionBufferTime: Buffer expiration time for session keys in seconds. +Default value is 3600 seconds. +. UseSeedPassword: The seed password is salt to PBKDF2 used to generate seed from the mnemonic. +When UseSeedPassword set to `true`, different deterministic salts are used for different keys. +. EnableIOSDeviceRestore: When EnableIOSDeviceRestore is set to `true`, After app re-installation, SDK checks for available device key in Keychain for given user id. + +*These configurations are MANDATORY for successful operation. +Failing to set them will significantly impact usage.* + += Next Steps + +. link:../README.md#sdk-usage[SDK Usage] +. link:../README.md#sdk-methods[SDK Methods] +. link:../README.md#sdk-workflow-callbacks[SDK Callbacks] diff --git a/docs/modules/ROOT/pages/react-native.md.adoc b/docs/modules/ROOT/pages/react-native.md.adoc new file mode 100644 index 0000000..a835265 --- /dev/null +++ b/docs/modules/ROOT/pages/react-native.md.adoc @@ -0,0 +1,53 @@ += React Native Wallet SDK Setup +:id: react-native +:sidebar_label: React Native + +Please refer to our GitHub documentation for detailed information. +The following page gives an overview of how to get started with the React Native Wallet SDK. + +== GitHub Links + +* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md[GitHub Readme] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md#sdk-methods[SDK Methods] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md#sdk-workflow-callbacks[SDK Workflow Callbacks] +* https://github.com/ostdotcom/ost-wallet-sdk-react-native/tree/develop/documentation[Additional GitHub documentation] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstWalletSdkGetMethods.md[OST Wallet SDK Getter Methods] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstJsonApi.md[OST JSON API] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstWalletUI.md[OST Wallet UI (User Interface Components)] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/android_setup.md[Android] and https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/ios_setup.md[iOS] set-up steps + +== Introduction + +OST React Native Wallet SDK is the official Wallet SDK for the React Native platform. +OST React Native Wallet SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. + +*OST React Native Wallet SDK...* + +* Safely generates and stores keys on the user's mobile device +* Signs ethereum transactions and data as defined by contracts using EIP-1077 +* Enables users to recover access to their tokens in case the user loses their authorized device + +== Installing React Native SDK + +. Install React Native and create a react-native project + +Follow the https://facebook.github.io/react-native/docs/0.59/getting-started[official React Native getting started guide] to install React Native and create a react-native project + +. Install the OST React Native SDK in your project Run following command in your react-native project root + +[source,bash] +---- + npm install @ostdotcom/ost-wallet-sdk-react-native +---- + +. Linking the OST React native SDk with your project + +[source,bash] +---- + react-native link @ostdotcom/ost-wallet-sdk-react-native +---- + +== Set-up Steps for Android and iOS + +* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/android_setup.md[Android Set-up] +* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/ios_setup.md[iOS Set-up] From 1af30934a631af080f857eb0a2660a89a9e2455a Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Thu, 12 Mar 2020 17:39:47 +0100 Subject: [PATCH 12/13] docs setup step #3 --- docs/modules/ROOT/nav.adoc | 7 +- ...orkflows.md.adoc => OstCoreWorkflows.adoc} | 0 .../{OstJsonApi.md.adoc => OstJsonApi.adoc} | 0 ...onfig.md.adoc => OstRedemptionConfig.adoc} | 0 ...ionFlow.md.adoc => OstRedemptionFlow.adoc} | 0 ...nfig.md.adoc => OstTransactionConfig.adoc} | 0 ...lper.md.adoc => OstTransactionHelper.adoc} | 0 ...ds.md.adoc => OstWalletSdkGetMethods.adoc} | 0 ...ettings.md.adoc => OstWalletSettings.adoc} | 0 ...g.md.adoc => OstWalletSettingsConfig.adoc} | 0 docs/modules/ROOT/pages/README.md.adoc | 358 ------------------ docs/modules/ROOT/pages/index.adoc | 83 +++- .../{ios_setup.md.adoc => ios_setup.adoc} | 0 docs/modules/ROOT/pages/react-native.md.adoc | 53 --- 14 files changed, 86 insertions(+), 415 deletions(-) rename docs/modules/ROOT/pages/{OstCoreWorkflows.md.adoc => OstCoreWorkflows.adoc} (100%) rename docs/modules/ROOT/pages/{OstJsonApi.md.adoc => OstJsonApi.adoc} (100%) rename docs/modules/ROOT/pages/{OstRedemptionConfig.md.adoc => OstRedemptionConfig.adoc} (100%) rename docs/modules/ROOT/pages/{OstRedemptionFlow.md.adoc => OstRedemptionFlow.adoc} (100%) rename docs/modules/ROOT/pages/{OstTransactionConfig.md.adoc => OstTransactionConfig.adoc} (100%) rename docs/modules/ROOT/pages/{OstTransactionHelper.md.adoc => OstTransactionHelper.adoc} (100%) rename docs/modules/ROOT/pages/{OstWalletSdkGetMethods.md.adoc => OstWalletSdkGetMethods.adoc} (100%) rename docs/modules/ROOT/pages/{OstWalletSettings.md.adoc => OstWalletSettings.adoc} (100%) rename docs/modules/ROOT/pages/{OstWalletSettingsConfig.md.adoc => OstWalletSettingsConfig.adoc} (100%) delete mode 100644 docs/modules/ROOT/pages/README.md.adoc rename docs/modules/ROOT/pages/{ios_setup.md.adoc => ios_setup.adoc} (100%) delete mode 100644 docs/modules/ROOT/pages/react-native.md.adoc diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 4aa94aa..15d54b1 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -2,11 +2,12 @@ * xref:android-setup.adoc[Android Setup] * xref:ios-setup.adoc[iOS Setup] * xref:OstCoreWorkflows.adoc[Ost Core Workflows] +* xref:OstWalletUI.adoc[Ost Wallet UI] * xref:OstWalletSettings.adoc[Ost Wallet Settings] * xref:OstWalletSettingsConfig.adoc[Ost Wallet Settings Config] -* xref:OstWalletUI.adoc[Ost Wallet UI] +* xref:OstRedemptionFlow.adoc[Ost Redemption Flow] +* xref:OstRedemptionConfig.adoc[Ost Redemption Config] * xref:OstTransactionHelper.adoc[Ost Transaction Helper] * xref:OstTransactionConfig.adoc[Ost Transaction Config] * xref:OstWalletSdkGetMethods.adoc[Ost Wallet SDK Get Methods] -* xref:OstJsonAPI.adoc[Ost JSON API] - +* xref:OstJsonAPI.adoc[Ost JSON API] \ No newline at end of file diff --git a/docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc b/docs/modules/ROOT/pages/OstCoreWorkflows.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstCoreWorkflows.md.adoc rename to docs/modules/ROOT/pages/OstCoreWorkflows.adoc diff --git a/docs/modules/ROOT/pages/OstJsonApi.md.adoc b/docs/modules/ROOT/pages/OstJsonApi.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstJsonApi.md.adoc rename to docs/modules/ROOT/pages/OstJsonApi.adoc diff --git a/docs/modules/ROOT/pages/OstRedemptionConfig.md.adoc b/docs/modules/ROOT/pages/OstRedemptionConfig.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstRedemptionConfig.md.adoc rename to docs/modules/ROOT/pages/OstRedemptionConfig.adoc diff --git a/docs/modules/ROOT/pages/OstRedemptionFlow.md.adoc b/docs/modules/ROOT/pages/OstRedemptionFlow.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstRedemptionFlow.md.adoc rename to docs/modules/ROOT/pages/OstRedemptionFlow.adoc diff --git a/docs/modules/ROOT/pages/OstTransactionConfig.md.adoc b/docs/modules/ROOT/pages/OstTransactionConfig.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstTransactionConfig.md.adoc rename to docs/modules/ROOT/pages/OstTransactionConfig.adoc diff --git a/docs/modules/ROOT/pages/OstTransactionHelper.md.adoc b/docs/modules/ROOT/pages/OstTransactionHelper.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstTransactionHelper.md.adoc rename to docs/modules/ROOT/pages/OstTransactionHelper.adoc diff --git a/docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc b/docs/modules/ROOT/pages/OstWalletSdkGetMethods.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstWalletSdkGetMethods.md.adoc rename to docs/modules/ROOT/pages/OstWalletSdkGetMethods.adoc diff --git a/docs/modules/ROOT/pages/OstWalletSettings.md.adoc b/docs/modules/ROOT/pages/OstWalletSettings.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstWalletSettings.md.adoc rename to docs/modules/ROOT/pages/OstWalletSettings.adoc diff --git a/docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc b/docs/modules/ROOT/pages/OstWalletSettingsConfig.adoc similarity index 100% rename from docs/modules/ROOT/pages/OstWalletSettingsConfig.md.adoc rename to docs/modules/ROOT/pages/OstWalletSettingsConfig.adoc diff --git a/docs/modules/ROOT/pages/README.md.adoc b/docs/modules/ROOT/pages/README.md.adoc deleted file mode 100644 index 5d1a06b..0000000 --- a/docs/modules/ROOT/pages/README.md.adoc +++ /dev/null @@ -1,358 +0,0 @@ -= Ost Wallet SDK React Native - -== Introduction - -Ost React Native Wallet SDK is the official Ost Wallet SDK for react-native platform. -The SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. - -Ost React Native Wallet SDK... - -* Safely generates and stores keys on the user's mobile device -* Signs ethereum transactions and data as defined by contracts using EIP-1077 -* Enables users to recover access to their Brand Tokens in case the user loses their authorized device - -== Table of Contents - -* <> -* <> -* <> - ** <> - ** <> - ** <> -* <> -* <> -* <> - ** <> - *** <> - *** <> - *** <> - ** <> - *** <> - *** <> - *** <> - ** <> - *** <> - ** <> - *** <> - ** <> - *** <> -* <> -* <> -* <> - ** <> - ** <> - -== Installing React-native SDK - -. Install React Native and create a react-native project - -Follow this https://facebook.github.io/react-native/docs/0.59/getting-started[official react-native getting started guide] to install react native and create a react-native project - -. Install Ost React Native SDK in your project The sdk needs following peer dependencies: - ** https://www.npmjs.com/package/eventemitter3[eventemitter3] - ** https://www.npmjs.com/package/lodash.merge[lodash.merge] - ** https://www.npmjs.com/package/bignumber.js[bignumber.js] - -[source,bash] ----- - npm install --save lodash.merge - npm install --save eventemitter3 - npm install --save bignumber.js ----- - -Run following command in your react-native project root - -[source,bash] ----- - npm install --save @ostdotcom/ost-wallet-sdk-react-native ----- - -. Linking the Ost React Native SDK with your project - -[source,bash] ----- - react-native link @ostdotcom/ost-wallet-sdk-react-native ----- - -. xref:./documentation/android_setup.adoc[Android set-up for Ost React Native SDK] -. xref:./documentation/ios_setup.adoc[iOS Set-up for Ost React Native SDK] - -== Migrating to another version - -If you decide to change the SDK version, please make sure to update the downsteam native SDKs. - -For Android, please run: - -[source,shell] ----- -react-native link -react-native run-android ----- - -For iOS, please update the `ios/Cartfile` with desired version and run: - -[source,shell] ----- -carthage update --cache-builds --platform ios ----- - -After updating the SDK, please delete `ostwalletrnsdk` using the *Remove References* option and add it back by following link:./documentation/ios_setup.md#5-add-additional-sdk-files[this step]. - -== SDK Usage - -* Initialize the SDK -* Subscribe to events -* Implement `OstWalletWorkFlowCallback` for a workflow -* Execute workflow - -=== Initializing the SDK - -You must initialize the SDK before using it. - -____ -Initialize the SDK in using BASE_URL (Ost Platform endpoint) inside App.js `constructor()` method. -____ - -[source,javascript] ----- -/** - * Initialize wallet sdk - * @param {String} endpoint - Ost Platform endpoint - * @param {function} Callback function with error and success status. - * @public - */ - OstWalletSdk.initialize( endpoint, - (error, success) => {}) ----- - -=== Initializing SDK With Config - -Starting version `2.3.1` application can also pass SDK config in the initialize method - -____ -If config is passed in `initialize` method, the configs specified in `OstWalletSdk.plist` and `ost-mobilesdk.json` are ignored. -It is no longer mandatory to define `ost-mobilesdk.json` and `OstWalletSdk.plist` files. -____ - -[source,javascript] ----- - let sdkConfig = { - "BLOCK_GENERATION_TIME": 3, - "PIN_MAX_RETRY_COUNT": 3, - "REQUEST_TIMEOUT_DURATION": 60, - "SESSION_BUFFER_TIME": 3600, - "PRICE_POINT_CURRENCY_SYMBOL": "USD", - "USE_SEED_PASSWORD": false, - "NO_OF_SESSIONS_ON_ACTIVATE_USER": 1, - "ENABLE_IOS_DEVICE_RESTORE": false - }; - - /** - * Initialize wallet sdk - * @param {String} endpoint - Ost Platform endpoint - * @param {Object} config (optional) - SDK Config. Supported from version 2.3.1 - * @param {function} callback - A typical node-style, error-first callback. - * @callback params {Object}error , {Boolean} success - * @public - */ - OstWalletSdk.initialize( endpoint, sdkConfig, (error, success) => { - - }); ----- - -=== Subscribe to `OstWalletSdkEvents` in your top most level component - -In the most top level component (mostly `App.js`) import like this: - -[source,javascript] ----- -import { OstWalletSdkEvents, OstWalletSdk, OstWalletSdkUI, OstJsonApi } from '@ostdotcom/ost-wallet-sdk-react-native'; ----- - -In `componentDidMount()` subscribe to OstWalletSdkEvents and in `componentWillUnmount()` unsubscribe to OstWalletSdkEvents. -Also initialize the SDK in using BASE_URL (Ost Platform endpoint) `constructor()` method: - -[source,javascript] ----- -class App extends Component { - - constructor() { - super(); - OstWalletSdk.initialize(BASE_URL, (error, success) => { - if(error) { - console.warn(error); - } - else { - console.warn(success); - } - - }); - } - - componentDidMount() { - OstWalletSdkEvents.subscribeEvent(); - } - - componentWillUnmount() { - OstWalletSdkEvents.unsubscribeEvent(); - } - -} ----- - -== Getter Methods - -The SDK provides getter methods that applications can use for various purposes. -These methods provide the application with data as available in the device's database. -Please refer to xref:./documentation/OstWalletSdkGetMethods.adoc[Ost Wallet SDK Getter Methods] for documentation. - -== Ost JSON APIs - -While the getter methods provide application with data stored in device's database, the JSON API methods make API calls to Ost Platform servers. -Please refer to xref:./documentation/OstJsonApi.adoc[Ost JSON API] for documentation. - -== Quick Start Guide - Ost Macro Workflows - -Starting version 2.3.12-beta.1, developers can enable all the Ost wallet features implementing the Ost Macro Workflows. - -=== 1. Setup Device Core Workflow - -''' - -The setup device workflow establishes trust between the device and Ost Platform. -As application is responsible for user authentication, application servers must facilitate this workflow using the server side sdk. - -==== Workflow Details - -* When this workflow is initiated by the application, the Sdk creates the following keys: - ** API key - the key used to sign API requests sent to Ost Platform from the sdk. - ** Device key - the user's wallet device key. -All device manager operations shall be performed using this key. -* The Sdk asks the application to register the device entity with Ost Platform. -* The application must send the device entity to the application server. -* The application server must then use the server side sdk to register the device with Ost Plaform by using device service's create device Api. -* Once the device is registered by the Ost Platform, the application server must send the response to the mobile application. -* The mobile application must then use the `deviceRegistered` callbacks to provide the response to the Sdk. -* The sdk validates the registration by making Api calls to the Ost Plaform. - -image::./documentation/images/setup_device_workflow.svg[] - -==== Notes - -* Setup device workflow must be initiated *on every app launch*. -* Setup device workflow must be initiated only *after the user has been autheniticated* by the application, including cookie based authentication for already logged-in users. -* Each of user's device creates its own API key and device key. -* User's Device and API keys are not shared across devices. -* User's API key & device key are stored in persistent storage on the device and created only if needed. -* The Sdk shall request for device registration only when needed. -`registerDevice` shall not be invoked if device is already authorized and sdk is able to make Api calls to Ost Platform. - -==== Implementation - -Please refer to link:./documentation/OstCoreWorkflows.md#setupdevice[`setupDevice` core workflow documentation] for implementation details. - -=== 2. Activate User UI Workflow - -''' - -Activate User workflow deploys user's wallet on the blockchain and whitelists the user's wallet and enables it to take part in application's brand token economy. - -==== Blockchain Transactions Performed During Activate User Workflow - -* Deploys user's contracts - ** Device-manager and token-holder contracts - ** Set user's recovery key address, device key address in device-manager contract - ** Authorizes session key(s) in token-holder contract -* Whitelists user's contract in UBT (Utility Brand Token Contract). - -==== Recovery Key Generation Using 6 Digit Pin - -* User's recovery key is generated using https://en.bitcoinwiki.org/wiki/Scrypt[SCrypt], a password-based key derivation function. -* The '`password`' provided to this function is a string created by concatenating: -* A prefix provided by application server. -+ -____ -Application server must generate and store prefix for each user, treat it as sensitive and immutable information. -____ - -* User's PIN -* User's Ost-id -* The salt required for SCrypt is provided by Ost Platform - -==== Implementation - -Please refer to link:./documentation/OstWalletUI.md#activate-user[Activate User UI Workflow Documentation] for implementation details. - -++++++++++++ - -=== 3. Wallet Settings UI Component - -''' - -OstWallet Settings is a pre-built UI component available exclusively available in `ost-wallet-sdk-react-native` SDK. -It is a wallet settings page that can be used by end-users to perfrom 12 different wallet operations and view their wallet details. - -____ -*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. -____ - -==== Implementation - -Please refer to xref:./documentation/OstWalletSettings.adoc[OstWallet Settings Documentation] for implementation details. - -++++++++++++ - -=== 4. Redemption Flow UI Component - -''' - -OstRedemption component is a pre-built UI component available exclusively in `ost-wallet-sdk-react-native` SDK. -It consist two pages - one displaying redeemable product list and another displaying product details and redemption options. -It can be used by end-users to integrate redemption flow into their app. - -____ -*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. -____ - -==== Implementation - -Please reder to xref:./documentation/OstRedemptionFlow.adoc[OstRedemption flow Documentation] for implementation details. - -=== 5. OstTransaction Helper - Transaction and Add Session Integrated Workflow - -''' - -`OstTransactionHelper` is a transaction helper provided by the SDK that creates session keys before performing a transaction if needed. -App developers can configure the session creation parameters (session buckets) as per application's need. - -==== Implementation - -Please refer to xref:./documentation/OstTransactionHelper.adoc[Ost Transaction Helper Documentation] for implementation details. - -== Intermediate Usage - Ost Wallet SDK UI - -For quick and easy integration with SDK, developers can use built-in user-interface components which are configurable and support content and theme customization. - -Please refer to xref:./documentation/OstWalletUI.adoc[Ost Wallet SDK UI] for documentation. - -== Advance Usage - Ost Wallet Core Workflow APIs - -Ost core workflows API do not use any UI components, thereby giving complete ux control to the developers. -The xref:./documentation/OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost core workflows. - -Please refer to xref:./documentation/OstCoreWorkflows.adoc[Ost Core Workflow APIs] for documentation. - -== Known Issues - -=== Sdk Initialization Fails on Android 9 (API level 28) - -Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. -On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. -As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. -To work-around this issues, application needs to have TrustKit as a dependency and initialize it. - -=== Setup Device Workflow Fails on iOS-13 Simulator - -Ost Wallet Sdk uses iOS's https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain[Keychain] to store user's cryptographic keys. -Unfortunately, Keychain doesn't work as expected on iOS-13 Simulators. -We request you to kindly test your application on actual iOS-13 device while we continue to look for a workaround. diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 1e70145..6689695 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -1,3 +1,62 @@ +===dev.ost.com Overview=== + += React Native Wallet SDK Setup +:id: react-native +:sidebar_label: React Native + +Please refer to our GitHub documentation for detailed information. +The following page gives an overview of how to get started with the React Native Wallet SDK. + +== GitHub Links + +* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md[GitHub Readme] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md#sdk-methods[SDK Methods] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md#sdk-workflow-callbacks[SDK Workflow Callbacks] +* https://github.com/ostdotcom/ost-wallet-sdk-react-native/tree/develop/documentation[Additional GitHub documentation] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstWalletSdkGetMethods.md[OST Wallet SDK Getter Methods] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstJsonApi.md[OST JSON API] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstWalletUI.md[OST Wallet UI (User Interface Components)] + ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/android_setup.md[Android] and https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/ios_setup.md[iOS] set-up steps + +== Introduction + +OST React Native Wallet SDK is the official Wallet SDK for the React Native platform. +OST React Native Wallet SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. + +*OST React Native Wallet SDK...* + +* Safely generates and stores keys on the user's mobile device +* Signs ethereum transactions and data as defined by contracts using EIP-1077 +* Enables users to recover access to their tokens in case the user loses their authorized device + +== Installing React Native SDK + +. Install React Native and create a react-native project + +Follow the https://facebook.github.io/react-native/docs/0.59/getting-started[official React Native getting started guide] to install React Native and create a react-native project + +. Install the OST React Native SDK in your project Run following command in your react-native project root + +[source,bash] +---- + npm install @ostdotcom/ost-wallet-sdk-react-native +---- + +. Linking the OST React native SDk with your project + +[source,bash] +---- + react-native link @ostdotcom/ost-wallet-sdk-react-native +---- + +== Set-up Steps for Android and iOS + +* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/android_setup.md[Android Set-up] +* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/ios_setup.md[iOS Set-up] + + +===GitHub README=== + = Ost Wallet SDK React Native == Introduction @@ -32,6 +91,8 @@ Ost React Native Wallet SDK... *** <> ** <> *** <> + ** <> + *** <> ** <> *** <> * <> @@ -281,6 +342,8 @@ ____ Please refer to link:./documentation/OstWalletUI.md#activate-user[Activate User UI Workflow Documentation] for implementation details. +++++++++++++ + === 3. Wallet Settings UI Component ''' @@ -296,7 +359,25 @@ ____ Please refer to xref:./documentation/OstWalletSettings.adoc[OstWallet Settings Documentation] for implementation details. -=== 4. OstvTransaction Helper - Transaction and Add Session Integrated Workflow +++++++++++++ + +=== 4. Redemption Flow UI Component + +''' + +OstRedemption component is a pre-built UI component available exclusively in `ost-wallet-sdk-react-native` SDK. +It consist two pages - one displaying redeemable product list and another displaying product details and redemption options. +It can be used by end-users to integrate redemption flow into their app. + +____ +*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. +____ + +==== Implementation + +Please reder to xref:./documentation/OstRedemptionFlow.adoc[OstRedemption flow Documentation] for implementation details. + +=== 5. OstTransaction Helper - Transaction and Add Session Integrated Workflow ''' diff --git a/docs/modules/ROOT/pages/ios_setup.md.adoc b/docs/modules/ROOT/pages/ios_setup.adoc similarity index 100% rename from docs/modules/ROOT/pages/ios_setup.md.adoc rename to docs/modules/ROOT/pages/ios_setup.adoc diff --git a/docs/modules/ROOT/pages/react-native.md.adoc b/docs/modules/ROOT/pages/react-native.md.adoc deleted file mode 100644 index a835265..0000000 --- a/docs/modules/ROOT/pages/react-native.md.adoc +++ /dev/null @@ -1,53 +0,0 @@ -= React Native Wallet SDK Setup -:id: react-native -:sidebar_label: React Native - -Please refer to our GitHub documentation for detailed information. -The following page gives an overview of how to get started with the React Native Wallet SDK. - -== GitHub Links - -* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md[GitHub Readme] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md#sdk-methods[SDK Methods] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md#sdk-workflow-callbacks[SDK Workflow Callbacks] -* https://github.com/ostdotcom/ost-wallet-sdk-react-native/tree/develop/documentation[Additional GitHub documentation] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstWalletSdkGetMethods.md[OST Wallet SDK Getter Methods] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstJsonApi.md[OST JSON API] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstWalletUI.md[OST Wallet UI (User Interface Components)] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/android_setup.md[Android] and https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/ios_setup.md[iOS] set-up steps - -== Introduction - -OST React Native Wallet SDK is the official Wallet SDK for the React Native platform. -OST React Native Wallet SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. - -*OST React Native Wallet SDK...* - -* Safely generates and stores keys on the user's mobile device -* Signs ethereum transactions and data as defined by contracts using EIP-1077 -* Enables users to recover access to their tokens in case the user loses their authorized device - -== Installing React Native SDK - -. Install React Native and create a react-native project - -Follow the https://facebook.github.io/react-native/docs/0.59/getting-started[official React Native getting started guide] to install React Native and create a react-native project - -. Install the OST React Native SDK in your project Run following command in your react-native project root - -[source,bash] ----- - npm install @ostdotcom/ost-wallet-sdk-react-native ----- - -. Linking the OST React native SDk with your project - -[source,bash] ----- - react-native link @ostdotcom/ost-wallet-sdk-react-native ----- - -== Set-up Steps for Android and iOS - -* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/android_setup.md[Android Set-up] -* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/ios_setup.md[iOS Set-up] From d3e0405c1223e7951aa0e83fd7000a39e9cb7ef5 Mon Sep 17 00:00:00 2001 From: kevinfs510 Date: Sat, 14 Mar 2020 15:08:28 +0100 Subject: [PATCH 13/13] content updates --- docs/modules/ROOT/examples/initialize.js | 8 + ...ndroid_setup.md.adoc => AndroidSetup.adoc} | 0 .../pages/{ios_setup.adoc => iOSSetup.adoc} | 0 docs/modules/ROOT/pages/index.adoc | 286 ++++++------------ 4 files changed, 93 insertions(+), 201 deletions(-) create mode 100644 docs/modules/ROOT/examples/initialize.js rename docs/modules/ROOT/pages/{android_setup.md.adoc => AndroidSetup.adoc} (100%) rename docs/modules/ROOT/pages/{ios_setup.adoc => iOSSetup.adoc} (100%) diff --git a/docs/modules/ROOT/examples/initialize.js b/docs/modules/ROOT/examples/initialize.js new file mode 100644 index 0000000..7d856e7 --- /dev/null +++ b/docs/modules/ROOT/examples/initialize.js @@ -0,0 +1,8 @@ +/** + * Initialize wallet sdk + * @param {String} endpoint - Ost Platform endpoint + * @param {function} Callback function with error and success status. + * @public + */ + OstWalletSdk.initialize( endpoint, + (error, success) => {}) \ No newline at end of file diff --git a/docs/modules/ROOT/pages/android_setup.md.adoc b/docs/modules/ROOT/pages/AndroidSetup.adoc similarity index 100% rename from docs/modules/ROOT/pages/android_setup.md.adoc rename to docs/modules/ROOT/pages/AndroidSetup.adoc diff --git a/docs/modules/ROOT/pages/ios_setup.adoc b/docs/modules/ROOT/pages/iOSSetup.adoc similarity index 100% rename from docs/modules/ROOT/pages/ios_setup.adoc rename to docs/modules/ROOT/pages/iOSSetup.adoc diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 6689695..a3365f6 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -1,113 +1,17 @@ -===dev.ost.com Overview=== += Ost Client SDK React Native -= React Native Wallet SDK Setup -:id: react-native -:sidebar_label: React Native +== Installation -Please refer to our GitHub documentation for detailed information. -The following page gives an overview of how to get started with the React Native Wallet SDK. +* Install React Native and create a react-native project. Follow the https://facebook.github.io/react-native/docs/0.59/getting-started[official React Native getting started guide] to install React Native and create a react-native project -== GitHub Links - -* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md[GitHub Readme] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md#sdk-methods[SDK Methods] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/README.md#sdk-workflow-callbacks[SDK Workflow Callbacks] -* https://github.com/ostdotcom/ost-wallet-sdk-react-native/tree/develop/documentation[Additional GitHub documentation] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstWalletSdkGetMethods.md[OST Wallet SDK Getter Methods] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstJsonApi.md[OST JSON API] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/OstWalletUI.md[OST Wallet UI (User Interface Components)] - ** https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/android_setup.md[Android] and https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/ios_setup.md[iOS] set-up steps - -== Introduction - -OST React Native Wallet SDK is the official Wallet SDK for the React Native platform. -OST React Native Wallet SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. - -*OST React Native Wallet SDK...* - -* Safely generates and stores keys on the user's mobile device -* Signs ethereum transactions and data as defined by contracts using EIP-1077 -* Enables users to recover access to their tokens in case the user loses their authorized device - -== Installing React Native SDK - -. Install React Native and create a react-native project - -Follow the https://facebook.github.io/react-native/docs/0.59/getting-started[official React Native getting started guide] to install React Native and create a react-native project - -. Install the OST React Native SDK in your project Run following command in your react-native project root - -[source,bash] ----- - npm install @ostdotcom/ost-wallet-sdk-react-native ----- - -. Linking the OST React native SDk with your project +* Install the Ost React Native Client SDK in your project. Run the following command in your react-native project root [source,bash] ---- - react-native link @ostdotcom/ost-wallet-sdk-react-native + npm install @ostdotcom/ost-wallet-SDK-react-native ---- -== Set-up Steps for Android and iOS - -* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/android_setup.md[Android Set-up] -* https://github.com/ostdotcom/ost-wallet-sdk-react-native/blob/develop/documentation/ios_setup.md[iOS Set-up] - - -===GitHub README=== - -= Ost Wallet SDK React Native - -== Introduction - -Ost React Native Wallet SDK is the official Ost Wallet SDK for react-native platform. -The SDK is a mobile application development SDK that enables developers to integrate the functionality of a non-custodial crypto-wallet into consumer applications. - -Ost React Native Wallet SDK... - -* Safely generates and stores keys on the user's mobile device -* Signs ethereum transactions and data as defined by contracts using EIP-1077 -* Enables users to recover access to their Brand Tokens in case the user loses their authorized device - -== Table of Contents - -* <> -* <> -* <> - ** <> - ** <> - ** <> -* <> -* <> -* <> - ** <> - *** <> - *** <> - *** <> - ** <> - *** <> - *** <> - *** <> - ** <> - *** <> - ** <> - *** <> - ** <> - *** <> -* <> -* <> -* <> - ** <> - ** <> - -== Installing React-native SDK - -. Install React Native and create a react-native project - -Follow this https://facebook.github.io/react-native/docs/0.59/getting-started[official react-native getting started guide] to install react native and create a react-native project - -. Install Ost React Native SDK in your project The sdk needs following peer dependencies: +* The SDK needs the following peer dependencies: ** https://www.npmjs.com/package/eventemitter3[eventemitter3] ** https://www.npmjs.com/package/lodash.merge[lodash.merge] ** https://www.npmjs.com/package/bignumber.js[bignumber.js] @@ -119,30 +23,27 @@ Follow this https://facebook.github.io/react-native/docs/0.59/getting-started[of npm install --save bignumber.js ---- -Run following command in your react-native project root +* Link the Ost Client SDK with your project [source,bash] ---- - npm install --save @ostdotcom/ost-wallet-sdk-react-native + react-native link @ostdotcom/ost-wallet-SDK-react-native ---- -. Linking the Ost React Native SDK with your project +=== Setup Steps For Android And iOS -[source,bash] ----- - react-native link @ostdotcom/ost-wallet-sdk-react-native ----- +xref:AndroidSetup.adoc[Android Set-up] + +xref:iOSSetup.adoc[iOS Set-up] -. xref:./documentation/android_setup.adoc[Android set-up for Ost React Native SDK] -. xref:./documentation/ios_setup.adoc[iOS Set-up for Ost React Native SDK] -== Migrating to another version +=== Migrating To Another Version If you decide to change the SDK version, please make sure to update the downsteam native SDKs. For Android, please run: -[source,shell] +[source, shell] ---- react-native link react-native run-android @@ -155,47 +56,51 @@ For iOS, please update the `ios/Cartfile` with desired version and run: carthage update --cache-builds --platform ios ---- -After updating the SDK, please delete `ostwalletrnsdk` using the *Remove References* option and add it back by following link:./documentation/ios_setup.md#5-add-additional-sdk-files[this step]. +After updating the SDK, please delete `ostwalletrnSDK` using the *Remove References* option and add it back by following link:../iOSSetup.adoc#5-add-additional-SDK-files[this step]. -== SDK Usage +== Usage * Initialize the SDK * Subscribe to events * Implement `OstWalletWorkFlowCallback` for a workflow * Execute workflow -=== Initializing the SDK +=== Initialize the SDK You must initialize the SDK before using it. -____ +[NOTE] Initialize the SDK in using BASE_URL (Ost Platform endpoint) inside App.js `constructor()` method. -____ [source,javascript] ---- /** - * Initialize wallet sdk + * Initialize wallet SDK * @param {String} endpoint - Ost Platform endpoint * @param {function} Callback function with error and success status. * @public */ - OstWalletSdk.initialize( endpoint, + OstWalletSDK.initialize( endpoint, (error, success) => {}) ---- +[source,javascript] +---- +include::initialize.js +---- + + === Initializing SDK With Config Starting version `2.3.1` application can also pass SDK config in the initialize method -____ -If config is passed in `initialize` method, the configs specified in `OstWalletSdk.plist` and `ost-mobilesdk.json` are ignored. -It is no longer mandatory to define `ost-mobilesdk.json` and `OstWalletSdk.plist` files. -____ +[NOTE] +If config is passed in `initialize` method, the configs specified in `OstWalletSDK.plist` and `ost-mobileSDK.json` are ignored. +It is no longer mandatory to define `ost-mobileSDK.json` and `OstWalletSDK.plist` files. [source,javascript] ---- - let sdkConfig = { + let SDKConfig = { "BLOCK_GENERATION_TIME": 3, "PIN_MAX_RETRY_COUNT": 3, "REQUEST_TIMEOUT_DURATION": 60, @@ -207,29 +112,28 @@ ____ }; /** - * Initialize wallet sdk + * Initialize wallet SDK * @param {String} endpoint - Ost Platform endpoint * @param {Object} config (optional) - SDK Config. Supported from version 2.3.1 * @param {function} callback - A typical node-style, error-first callback. * @callback params {Object}error , {Boolean} success * @public */ - OstWalletSdk.initialize( endpoint, sdkConfig, (error, success) => { + OstWalletSDK.initialize( endpoint, SDKConfig, (error, success) => { }); ---- -=== Subscribe to `OstWalletSdkEvents` in your top most level component +=== Subscribe to `OstWalletSDKEvents` in your top most level component -In the most top level component (mostly `App.js`) import like this: +In the most top level component [mostly `App.js`] import like this: [source,javascript] ---- -import { OstWalletSdkEvents, OstWalletSdk, OstWalletSdkUI, OstJsonApi } from '@ostdotcom/ost-wallet-sdk-react-native'; +import { OstWalletSDKEvents, OstWalletSDK, OstWalletSDKUI, OstJsonAPI } from '@ostdotcom/ost-wallet-SDK-react-native'; ---- -In `componentDidMount()` subscribe to OstWalletSdkEvents and in `componentWillUnmount()` unsubscribe to OstWalletSdkEvents. -Also initialize the SDK in using BASE_URL (Ost Platform endpoint) `constructor()` method: +In `componentDidMount()` subscribe to OstWalletSDKEvents and in `componentWillUnmount()` unsubscribe to OstWalletSDKEvents. Also initialize the SDK in using BASE_URL (Ost Platform endpoint) `constructor()` method: [source,javascript] ---- @@ -237,7 +141,7 @@ class App extends Component { constructor() { super(); - OstWalletSdk.initialize(BASE_URL, (error, success) => { + OstWalletSDK.initialize(BASE_URL, (error, success) => { if(error) { console.warn(error); } @@ -249,11 +153,11 @@ class App extends Component { } componentDidMount() { - OstWalletSdkEvents.subscribeEvent(); + OstWalletSDKEvents.subscribeEvent(); } componentWillUnmount() { - OstWalletSdkEvents.unsubscribeEvent(); + OstWalletSDKEvents.unsubscribeEvent(); } } @@ -261,59 +165,55 @@ class App extends Component { == Getter Methods -The SDK provides getter methods that applications can use for various purposes. -These methods provide the application with data as available in the device's database. -Please refer to xref:./documentation/OstWalletSdkGetMethods.adoc[Ost Wallet SDK Getter Methods] for documentation. +The SDK provides getter methods that applications can use for various purposes. These methods provide the application with data as available in the device's database. + +Please refer to xref:OstWalletSDKGetMethods.adoc[Ost Wallet SDK Getter Methods] for documentation. == Ost JSON APIs While the getter methods provide application with data stored in device's database, the JSON API methods make API calls to Ost Platform servers. -Please refer to xref:./documentation/OstJsonApi.adoc[Ost JSON API] for documentation. -== Quick Start Guide - Ost Macro Workflows +Please refer to xref:OstJsonAPI.adoc[Ost JSON API] for documentation. -Starting version 2.3.12-beta.1, developers can enable all the Ost wallet features implementing the Ost Macro Workflows. +== Quick Start Guide -=== 1. Setup Device Core Workflow +Starting version 2.3.12-beta.1, developers can enable all the Ost wallet features implementing the *Ost Macro Workflows.* -''' +=== 1. Setup Device Core Workflow -The setup device workflow establishes trust between the device and Ost Platform. -As application is responsible for user authentication, application servers must facilitate this workflow using the server side sdk. +The setup device workflow establishes trust between the device and Ost Platform. As application is responsible for user authentication, application servers must facilitate this workflow using the server side SDK. ==== Workflow Details -* When this workflow is initiated by the application, the Sdk creates the following keys: - ** API key - the key used to sign API requests sent to Ost Platform from the sdk. - ** Device key - the user's wallet device key. -All device manager operations shall be performed using this key. -* The Sdk asks the application to register the device entity with Ost Platform. -* The application must send the device entity to the application server. -* The application server must then use the server side sdk to register the device with Ost Plaform by using device service's create device Api. +* When this workflow is initiated by the application, the SDK creates the following keys: + ** API key - the key used to sign API requests sent to Ost Platform from the SDK + ** Device key - the user's wallet device key. All device manager operations shall be performed using this key. +* The SDK asks the application to register the device entity with Ost Platform +* The application must send the device entity to the application server +* The application server must then use the server side SDK to register the device with Ost Plaform by using device service's create device API. * Once the device is registered by the Ost Platform, the application server must send the response to the mobile application. -* The mobile application must then use the `deviceRegistered` callbacks to provide the response to the Sdk. -* The sdk validates the registration by making Api calls to the Ost Plaform. +* The mobile application must then use the `deviceRegistered` callbacks to provide the response to the SDK. +* The SDK validates the registration by making API calls to the Ost Plaform. -image::./documentation/images/setup_device_workflow.svg[] - -==== Notes +image::setup_device_workflow.svg[setup device workflow] +[NOTE] +==== * Setup device workflow must be initiated *on every app launch*. * Setup device workflow must be initiated only *after the user has been autheniticated* by the application, including cookie based authentication for already logged-in users. * Each of user's device creates its own API key and device key. * User's Device and API keys are not shared across devices. * User's API key & device key are stored in persistent storage on the device and created only if needed. -* The Sdk shall request for device registration only when needed. -`registerDevice` shall not be invoked if device is already authorized and sdk is able to make Api calls to Ost Platform. +* The SDK shall request for device registration only when needed. +`registerDevice` shall not be invoked if device is already authorized and SDK is able to make API calls to Ost Platform. +==== ==== Implementation -Please refer to link:./documentation/OstCoreWorkflows.md#setupdevice[`setupDevice` core workflow documentation] for implementation details. +Please refer to xref:OstCoreWorkflows.adoc#setupdevice[`setupDevice` core workflow documentation] for implementation details. === 2. Activate User UI Workflow -''' - Activate User workflow deploys user's wallet on the blockchain and whitelists the user's wallet and enables it to take part in application's brand token economy. ==== Blockchain Transactions Performed During Activate User Workflow @@ -329,10 +229,8 @@ Activate User workflow deploys user's wallet on the blockchain and whitelists th * User's recovery key is generated using https://en.bitcoinwiki.org/wiki/Scrypt[SCrypt], a password-based key derivation function. * The '`password`' provided to this function is a string created by concatenating: * A prefix provided by application server. -+ -____ + Application server must generate and store prefix for each user, treat it as sensitive and immutable information. -____ * User's PIN * User's Ost-id @@ -340,78 +238,64 @@ ____ ==== Implementation -Please refer to link:./documentation/OstWalletUI.md#activate-user[Activate User UI Workflow Documentation] for implementation details. - -++++++++++++ +Please refer to xref:OstWalletUI.adoc#activate-user[Activate User UI Workflow Documentation] for implementation details. === 3. Wallet Settings UI Component -''' - -OstWallet Settings is a pre-built UI component available exclusively available in `ost-wallet-sdk-react-native` SDK. -It is a wallet settings page that can be used by end-users to perfrom 12 different wallet operations and view their wallet details. +OstWallet Settings is a pre-built UI component available exclusively available in `ost-wallet-SDK-react-native` SDK. It is a wallet settings page that can be used by end-users to perfrom 12 different wallet operations and view their wallet details. -____ -*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. -____ +[WARNING] +This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. ==== Implementation -Please refer to xref:./documentation/OstWalletSettings.adoc[OstWallet Settings Documentation] for implementation details. - -++++++++++++ +Please refer to xref:OstWalletSettings.adoc[OstWallet Settings Documentation] for implementation details. === 4. Redemption Flow UI Component -''' - -OstRedemption component is a pre-built UI component available exclusively in `ost-wallet-sdk-react-native` SDK. -It consist two pages - one displaying redeemable product list and another displaying product details and redemption options. -It can be used by end-users to integrate redemption flow into their app. +OstRedemption component is a pre-built UI component available exclusively in `ost-wallet-SDK-react-native` SDK. It consist two pages - one displaying redeemable product list and another displaying product details and redemption options. It can be used by end-users to integrate redemption flow into their app. -____ -*IMPORTANT:* This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. -____ +[WARNING] +This feature requires application to use https://reactnavigation.org/docs/en/getting-started.html[React Navigation] package. ==== Implementation -Please reder to xref:./documentation/OstRedemptionFlow.adoc[OstRedemption flow Documentation] for implementation details. +Please reder to xref:OstRedemptionFlow.adoc[OstRedemption flow Documentation] for implementation details. === 5. OstTransaction Helper - Transaction and Add Session Integrated Workflow -''' - -`OstTransactionHelper` is a transaction helper provided by the SDK that creates session keys before performing a transaction if needed. -App developers can configure the session creation parameters (session buckets) as per application's need. +`OstTransactionHelper` is a transaction helper provided by the SDK that creates session keys before performing a transaction if needed. App developers can configure the session creation parameters (session buckets) as per application's need. ==== Implementation -Please refer to xref:./documentation/OstTransactionHelper.adoc[Ost Transaction Helper Documentation] for implementation details. +Please refer to xref:OstTransactionHelper.adoc[Ost Transaction Helper Documentation] for implementation details. == Intermediate Usage - Ost Wallet SDK UI For quick and easy integration with SDK, developers can use built-in user-interface components which are configurable and support content and theme customization. -Please refer to xref:./documentation/OstWalletUI.adoc[Ost Wallet SDK UI] for documentation. +Please refer to xref:OstWalletUI.adoc[Ost Wallet SDK UI] for documentation. == Advance Usage - Ost Wallet Core Workflow APIs -Ost core workflows API do not use any UI components, thereby giving complete ux control to the developers. -The xref:./documentation/OstWalletUI.adoc[`OstWalletSdkUI`] also uses Ost core workflows. +Ost core workflows API do not use any UI components, thereby giving complete ux control to the developers. The xref:OstWalletUI.adoc[`OstWalletSDKUI`] also uses Ost core workflows. Please refer to xref:./documentation/OstCoreWorkflows.adoc[Ost Core Workflow APIs] for documentation. -== Known Issues +== Known Issues -=== Sdk Initialization Fails on Android 9 (API level 28) +=== SDK Initialization Fails on Android 9 (API level 28) Starting with Android 9 (API level 28), https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted[cleartext support] is disabled by default. -On the other hand, Ost Wallet Android Sdk leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. -As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], sdk initialization fails. + +On the other hand, Ost Wallet Android SDK leverages on *Public Key Pinning* to ensure the authenticity of a Ost Platform server's public key used in TLS sessions using https://github.com/datatheorem/TrustKit-Android[TrustKit]. + +As TrustKit can only be inititialized with application's https://developer.android.com/training/articles/security-config[network security configuration], SDK initialization fails. + To work-around this issues, application needs to have TrustKit as a dependency and initialize it. === Setup Device Workflow Fails on iOS-13 Simulator -Ost Wallet Sdk uses iOS's https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain[Keychain] to store user's cryptographic keys. +Ost Wallet SDK uses iOS's https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain[Keychain] to store user's cryptographic keys. Unfortunately, Keychain doesn't work as expected on iOS-13 Simulators. -We request you to kindly test your application on actual iOS-13 device while we continue to look for a workaround. +We request you to kindly test your application on actual iOS-13 device while we continue to look for a workaround. \ No newline at end of file

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 K$HgB7UHo5b$1BwU literal 0 HcmV?d00001 diff --git a/docs/modules/ROOT/assets/images/setup_device_workflow.svg b/docs/modules/ROOT/assets/images/setup_device_workflow.svg new file mode 100644 index 0000000..2e3b9b2 --- /dev/null +++ b/docs/modules/ROOT/assets/images/setup_device_workflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/modules/ROOT/assets/images/wallet_details.png b/docs/modules/ROOT/assets/images/wallet_details.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6a0a095115a3fab1d8b9a97ce03548770b181d GIT binary patch literal 151398 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 =400fUfkJc`dza8=rU?igi>&>i@#Y1S*Gk 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 Jh~Imi|2H1aToeER literal 0 HcmV?d00001 diff --git a/docs/modules/ROOT/assets/images/wallet_settings.png b/docs/modules/ROOT/assets/images/wallet_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae6f9da277738a555e39c73c9bc4109e8547d67 GIT binary patch literal 184718 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

4fgKf6fcPF1Z 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̚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 z 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