Skip to content

yudao/choo-offline

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

choo-offline Build Status js-standard-style

offline first support for choo apps

Installation

npm install --save choo-offline

Usage

const choo = require('choo')
const offline = require('choo-offline')

const app = choo()

offline(offline => {
  app.use(offline)

  const tree = app.start()
  document.body.appendChild(tree)
})

API

offline([opts], fn())

Function that wraps the choo start and use methods, only needed for this plugin, other plugins can be registered before. It can take two parameters.

opts

Type: Object

Optional configuration object for the plugin, can take the following options:

  • serviceWorker (String): A string with the relative path to a service worker file, if not provided, it will not install a service worker. Defaults: ''.
  • dbConfig (Object): An object with localforage config.

fn

Type: Function

Required function that get as the only argument, the offline plugin object. The object use the following hooks:

  • onStateChange: To update the app state locally with localforage.

  • onAction: To check if the app is offline and, if it is, use a backup action. Use the backup function when you have actions that depend on network availability, just define a _backup option in your send() data, the _backup option must be a string calling an effect or reducer from your model. For example

       send('xhrEffect', { foo: bar, _backup: 'nonXhrBackup' })

    The above statement will call xhrEffect normally, but when offline, it will call the nonXhrBackup effect|reducer, passing the same data, excluding the _backup strings.

  • wrapInitialState: To get the initial local state.

License

MIT

Crafted with <3 by YerkoPalma .


This package was initially generated with yeoman and the p generator.

About

🔧 offline first support for choo apps

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%