7.0.1 • Published 5 years ago
ipfs-redux-bundle v7.0.1
⛔️ DEPRECATED
This library is being deprecated and replaced with more flexible ipfs-provider.
This library will not be maintained.
ipfs-redux-bundle
A redux bundle to create an IPFS instance and pass it as an
extraArgto other store methods.
See https://reduxbundler.com for more info on the wonders of redux bundles.
This module tries to connect to IPFS via multiple providers, in order:
ipfs-companionthe IPFS instance from IPFS Companion directly.window.ipfsin the current page via IPFS Companion.js-ipfs-http-clientwith either a user providedapiAddress, the current origin, or the default/ip4/127.0.0.1/tcp/5001address.js-ipfsdisabled by default. PasstryJsIpfs: true, getJsIpfs: () => Promiseto enable it. See Enable js-ipfs
Usage
Add ipfs-redux-bundle to your store
bundles/index.js
import { composeBundles } from 'redux-bundler'
import ipfsBundle from 'ipfs-redux-bundle'
// ... import other bundles
export default composeBundles(
ipfsBundle({
// These are the defaults:
tryCompanion: true, // set false to bypass ipfs-companion verification
tryWindow: true, // set false to bypass window.ipfs verification
tryApi: true, // set false to bypass js-ipfs-http-client verification. Uses data from ipfsApi variable in localStorage
tryJsIpfs: false, // set true to attempt js-ipfs initialisation.
getJsIpfs: null // must be set to a js-ipfs instance if tryJsIpfs is true.
})
// ... add bundles here
)In your app, you can now connect up the doInitIpfs function. Here we init IPFS when our root component mounts:
App.js
import React, { Component } from 'react'
import { connect } from 'redux-bundler-react'
export class App extends Component {
componentDidMount () {
this.props.doInitIpfs()
}
render () {
// ipfs-css powered gorgeous ui here.
}
}
export default connect(
'doInitIpfs',
App
)Enable js-ipfs
To enable js-ipfs, intialise the bundle with the following opts
ipfsBundle({
tryJsIpfs: true,
getJsIpfs: () => import('ipfs')
})tryJsIpfsshould be set totruegetJsIpfsshould be a function that returns a promise that resolves with aJsIpfsconstructor. This works well with dynamicimport(), so you can lazily load js-ipfs when it is needed.
API
Adds the following methods to the redux store.
store.selectIpfsReady()
boolean- Is the IPFS instance ready to use yet?
store.selectIpfsInitFailed()
boolean- Did the IPFS instance fail to start?
store.selectIpfsInvalidAddress()
boolean- Is the last API Address you tried to use invalid?
store.selectIpfsProvider()
string- Can bewindow.ipfs,js-ipfs-apiorjs-ipfs.
store.selectIpfsApiAddress()
string- The API address of the IPFS instance.
store.doInitIpfs()
- Create a new IPFS instance. This will
window.ipfsif you have IPFS Companion installed, or ajs-ipfs-http-clientinstance otherwise.
store.doStopIpfs()
- Stops the IPFS instance. It is only intended to use with
js-ipfs.
store.doUpdateIpfsApiAddress(address)
- Updates the API Address to
address.
store.doDismissIpfsInvalidAddress()
- Dismisses the invalid address error.
Contribute
Feel free to dive in! Open an issue or submit PRs.
License
MIT © Protocol Labs