0.1.0 • Published 9 years ago

angular-offline v0.1.0

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

angular-offline

Build Status Dependency Status devDependency Status

Offline support for AngularJS applications.

Install

Using npm

npm install angular-offline

Using bower

bower install angular-offline

Usage

module.run(function (offline, $http) {
  offline.start($http);

  $http.get('/test.json', {offline: true})
  .then(...);
});

$http

Puting the offline flag to true in $http config will have for effect to activate the angular cache for this request and to add offline behaviour to the request.

offlineProvider.debug(value)

Start or stop debug mode. It adds a lot of additional logs to understand how offline works.

module.config(function (offlineProvider) {
  offlineProvider.debug(true);
});

offline.start(requester)

Start offline with the requester ($http). Usually you will call this method in .run of your application.

module.run(function (offline, $http) {
  offline.start($http);
});

offline.stackCache

Specify a cache to use to stack requests (POST, PUT, DELETE...).

module.run(function (offline, $cacheFactory) {
  offline.stackCache = $cacheFactory('custom-cache');
});

Use with angular-cache

If you want to build an application completely offline, you will need a cache that can be stored in the localStorage. To do that, the recommended method is to use angular-cache.

Specify a TTL for a GET request

You must use maxAge to specify your TTL. If you specify deleteOnExpire to "none", the cache will be served even if your TTL is exceeded.

module.run(function ($http, CacheFactory) {
  $http.get('/test.json', {
    offline: true,
    cache: CacheFactory.createCache('bookCache', {
      deleteOnExpire: 'none',
      maxAge: 60000,
      storageMode: 'localStorage'
    })
  });
});

Specify a default cache for all GET requests

To get more details about this, you can read the official documentation.

module.run(function ($http, CacheFactory) {
  $http.defaults.cache = CacheFactory.createCache('bookCache', {
      deleteOnExpire: 'none',
      maxAge: 60000,
      storageMode: 'localStorage'
    })
  });
});

Use a persistent storage for POST request

You can specify the storageMode to "localStorage" to have a persistent storage for the stack.

module.run(function ($http, CacheFactory) {
  offline.stackCache = CacheFactory.createCache('offlineStack', {
    storageMode: 'localStorage'
  });
});

Play with example

To play with the example, you can start it using the command npm run example, then opening the console and try.

Workflow

- Request GET
  -> interceptor.request
    -> has offline flag and is online
      -> clean cache
- Other requests
  -> interceptor.request
    -> has offline flag and is offline
      -> push request in stack
      -> reject

- "online" event
  -> process stack

Browser support

This library require the online status feature activated, you can refer to caniuse to see exactly what browsers are supported.

License

MIT