123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { parseJSON, parseStatus, userFeedbackError } from './response';
- import { config } from 'grav-config';
- import { EventEmitter } from 'events';
- export default class GPM extends EventEmitter {
- constructor(action = 'getUpdates') {
- super();
- this.payload = {};
- this.raw = {};
- this.action = action;
- }
- setPayload(payload = {}) {
- this.payload = payload;
- this.emit('payload', payload);
- return this;
- }
- setAction(action = 'getUpdates') {
- this.action = action;
- this.emit('action', action);
- return this;
- }
- fetch(callback = () => true, flush = false) {
- let data = new FormData();
- data.append('admin-nonce', config.admin_nonce);
- if (flush) {
- data.append('flush', true);
- }
- this.emit('fetching', this);
- fetch(`${config.base_url_relative}/update.json/task${config.param_sep}getUpdates`, {
- credentials: 'same-origin',
- method: 'post',
- body: data
- }).then((response) => { this.raw = response; return response; })
- .then(parseStatus)
- .then(parseJSON)
- .then((response) => this.response(response))
- .then((response) => callback(response, this.raw))
- .then((response) => this.emit('fetched', this.payload, this.raw, this))
- .catch(userFeedbackError);
- }
- response(response) {
- this.payload = response;
- return response;
- }
- }
- export let Instance = new GPM();
|