Collect and dispatch elements in your progressive web app.
ember install ember-collector-dispatcher
You need to extend the collector service:
// app/services/my-collector.js
export default Collector.extend({
adapters: [
['indexed-db', { database: 'logs' }],
['local-storage', { key: 'logs' }],
'memory'
]
});
You also need to define adapters
with the possible storages. Now, you can choose: indexeddb, local-storage and memory.
You can add as many adapters as you want. Only must implements the following methods:
Method | Description |
---|---|
isSupported |
Returns true if the storage is supported; otherwise, false . |
count |
Returns the number of elements in the storage. |
push |
Adds one or more elements to the end of the storage. |
unshift |
Adds one or more elements to the beginning of the storage. |
pop |
Removes one or more elements from the end of the storage and returns that elements. |
shift |
Removes one or more elements from the beginning of the storage and returns that elements. |
You need to extend the dispatcher service:
// app/services/my-dispatcher.js
export default Dispatcher.extend({
collector: service('my-collector'),
maxTimeout: 30000,
maxConcurrent: 5,
async dispatch(items) {
// my dispatch logic...
return [undispatchedItems];
}
})
You also need to define the following properties:
Property | Description |
---|---|
collector |
Collector service injection. |
maxTimeout |
Max time, in milliseconds (thousandths of a second), the dispatcher should wait before the dispatch method is executed. |
maxConcurrent |
Max number of items that the dispatcher can be process during the loop. |
dispatch |
Dispatch items as you want |
If you want to contribute to this addon, please read the CONTRIBUTING.md.
We use SemVer for versioning. For the versions available, see the tags on this repository.
See the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.md file for details