ember-cli-cookie

Wrap $.cookie in Ember goodness

Usage no npm install needed!

<script type="module">
  import emberCliCookie from 'https://cdn.skypack.dev/ember-cli-cookie';
</script>

README

ember-cli-cookie

Wrap $.cookie in Ember goodness

Motivation

To try and remove external dependencies from my Ember CLI apps with a Promise aware object wrapper.

Synopsis

This addon is designed to help pushing the external dependencies of cookies as far from my Ember CLI app as possible. By injecting this object where cookie access is needed, my Ember code can just deal with an Ember object. This also means that I can inject mock objects in during tests to simulate setting and getting cookies.

Installation

From within your Ember CLI application, run:

npm install --save-dev ember-cli-cookie

Usage

In an initializer, inject the cookie object where needed:

// /initializers/test.js
export function initialize(container, application) {
    application.inject('controller', 'cookie', 'cookie:main');
}

export default {
    name: 'test-initializer',
    after: ['cookie'],
    initialize: initialize
}

#setCookie(key, value, options)

Use this function to set a cookie, eg:

// /controllers/test.js

export default Ember.Controller.extend({
  actions: {
    testAction: function() {
      var self = this;

      this.cookie.setCookie('my-key', 'my-value', { expires: 7, path: '/' })
        .then(function() {
          self.transitionToRoute('success');
        });
    }
  }
});

#getCookie(key)

Use this function to get a cookie, eg:

// /controllers/test.js

export default Ember.Controller.extend({
  actions: {
    testAction: function() {
      this.cookie.getCookie('my-key');

      if (!token) {
        this.transitionTo('login');
      }
    }
  }
});

#removeCookie(key)

Use this function to remove/delete a cookie, eg:

// /controllers/test.js

export default Ember.Controller.extend({
  actions: {
    testAction: function() {
      this.cookie.removeCookie('my-key');
    }
  }
});

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality.

Maintainers

  • Aaron Chambers (achambers@gmail.com)