Getting Started
Note: This documentation is in an alpha state - please help us improve it by clicking "Suggest Edits" in the upper right corner!
This is the Bounties SDK documentation. To go to the Bounties API documentation, click here.
The Bounties SDK provides redux-saga
wrappers for StandardBounties smart contract calls and for requests to our platform's API endpoints. Additionally, it provides several general purpose modules such as authentication
and client
which can be dropped into any dapp to manage wallet access and session authentication.
Installation
The library is available as an NPM package, just run the command below to add it to an existing project. If you're starting a new project, consider our starter kit which already has the boilerplate set up.
yarn add @bounties-network/modules
After the module has been added, you'll just need to import and configure it. For more configuration options, see configuration in the reference section.
import Client from '@bounties-network/modules'
Client.init({
"platforms": "bounties-network",
"postingPlatform": "bounties-network",
"postingSchema": "standardSchema",
"postingSchemaVersion": "0.1",
"categoryPlatform": "main",
"networkName": "staging.bounties.network",
"url": {
"mainNet": "https://staging.api.bounties.network",
"rinkeby": "https://rinkebystaging.api.bounties.network"
},
"requiredNetwork": "rinkeby",
"deployments": {
"standardBountiesAddress": {
"rinkeby": "0xdd1636b88e9071507e859e61991ed4be6647f420"
}
}
})
Since the library also relies heavily on redux
and redux-saga
, it is necessary to import the reducer and sagas and integrate them with the main project's reducer / saga watcher.
import createSagaMiddleware from 'redux-saga'
import { createStore, applyMiddleware } from 'redux'
import { reducers, sagaWatchers} from '@bounties-network/modules'
const store = createStore(
reducers,
composeEnhancers(applyMiddleware(createSagaMiddleware()))
)
[...sagaWatchers].map(saga => sagaMiddleware.run(saga, store.dispatch))
Preface
This library is an alpha release of the Bounties Network library. We are still rapidly developing on all fronts. If you encounter an issue, please let us know on GitHub. If you are interested in contributing, checkout out our contribution guide to see how to get involved (and potentially paid).
Additionally, this library offers raw access to a set of reducers and saga wrapper to Bounties Network related objects. If you're unfamiliar with Redux or Redux-Saga, it is highly recommended to first understand the basics of those tools. The rest of the documentation will assume basic understanding of those concepts.
Using the Library
The module is roughly broken down into a few different importable objects:
actions
: all dispatchable actionsselectors
: all selectorssagas
: all exported saga functions
Each object will have a key-value pair for every submodule. For example, if you wanted to dispatch an a LOAD_BOUNTIES
action you would need to do the following:
import { actions } from '@bounties-network/modules'
const loadBounties = dispatch => dispatch(actions.bounties.loadBounties())
Once an action has been dispatched and the sagas complete executing, the data will be available in the store. The best way to access it is via the selectors
. To access the bounties that were loaded as a result of the last code snippet, just add the following code:
import { selectors } from '@bounties-network/modules'
const getBounties = state => selectors.bounties.bountiesSelector
In practice, the above code snippets would most likely be integrated into the mapDispatchToProps
and mapStateToProps
portion of your React application.
Updated about 6 years ago