Socket
Book a DemoInstallSign in
Socket

ipfs-redux-bundle

Package Overview
Dependencies
Maintainers
4
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ipfs-redux-bundle

A redux bundle to create an IPFS instance

latest
Source
npmnpm
Version
7.0.1
Version published
Weekly downloads
21
425%
Maintainers
4
Weekly downloads
 
Created
Source

⛔️ 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 extraArg to other store methods.

Build Status

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-companion the IPFS instance from IPFS Companion directly.
  • window.ipfs in the current page via IPFS Companion.
  • js-ipfs-http-client with either a user provided apiAddress, the current origin, or the default /ip4/127.0.0.1/tcp/5001 address.
  • js-ipfs disabled by default. Pass tryJsIpfs: true, getJsIpfs: () => Promise to 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')
  })
  • tryJsIpfs should be set to true
  • getJsIpfs should be a function that returns a promise that resolves with a JsIpfs constructor. This works well with dynamic import(), 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 be window.ipfs, js-ipfs-api or js-ipfs.

store.selectIpfsApiAddress()

  • string - The API address of the IPFS instance.

store.doInitIpfs()

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

Keywords

ipfs

FAQs

Package last updated on 16 Oct 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts