"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPushStatus = getPushStatus; exports.send = send; var _CoreManager = _interopRequireDefault(require("./CoreManager")); var _ParseQuery = _interopRequireDefault(require("./ParseQuery")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @flow */ /*:: import type { WhereClause } from './ParseQuery';*/ /*:: import type { FullOptions } from './RESTController';*/ /*:: export type PushData = { where?: WhereClause | ParseQuery, push_time?: Date | string, expiration_time?: Date | string, expiration_interval?: number, };*/ /** * Contains functions to deal with Push in Parse. * * @class Parse.Push * @static * @hideconstructor */ /** * Sends a push notification. * **Available in Cloud Code only.** * * See {@link https://docs.parseplatform.org/js/guide/#push-notifications Push Notification Guide} * * @function send * @name Parse.Push.send * @param {object} data - The data of the push notification. Valid fields * are: *
    *
  1. channels - An Array of channels to push to.
  2. *
  3. push_time - A Date object for when to send the push.
  4. *
  5. expiration_time - A Date object for when to expire * the push.
  6. *
  7. expiration_interval - The seconds from now to expire the push.
  8. *
  9. where - A Parse.Query over Parse.Installation that is used to match * a set of installations to push to.
  10. *
  11. data - The data to send as part of the push.
  12. *
      * @param {object} options Valid options * are: * @returns {Promise} A promise that is fulfilled when the push request * completes. */ function send(data /*: PushData*/, options /*:: ?: FullOptions*/ = {}) /*: Promise*/{ if (data.where && data.where instanceof _ParseQuery.default) { data.where = data.where.toJSON().where; } if (data.push_time && typeof data.push_time === 'object') { data.push_time = data.push_time.toJSON(); } if (data.expiration_time && typeof data.expiration_time === 'object') { data.expiration_time = data.expiration_time.toJSON(); } if (data.expiration_time && data.expiration_interval) { throw new Error('expiration_time and expiration_interval cannot both be set.'); } const pushOptions = { useMasterKey: true }; if (options.hasOwnProperty('useMasterKey')) { pushOptions.useMasterKey = options.useMasterKey; } return _CoreManager.default.getPushController().send(data, pushOptions); } /** * Gets push status by Id * * @function getPushStatus * @name Parse.Push.getPushStatus * @param {string} pushStatusId The Id of Push Status. * @param {object} options Valid options * are: * @returns {Parse.Object} Status of Push. */ function getPushStatus(pushStatusId /*: string*/, options /*:: ?: FullOptions*/ = {}) /*: Promise*/{ const pushOptions = { useMasterKey: true }; if (options.hasOwnProperty('useMasterKey')) { pushOptions.useMasterKey = options.useMasterKey; } const query = new _ParseQuery.default('_PushStatus'); return query.get(pushStatusId, pushOptions); } const DefaultController = { send(data /*: PushData*/, options /*:: ?: FullOptions*/) { return _CoreManager.default.getRESTController().request('POST', 'push', data, options); } }; _CoreManager.default.setPushController(DefaultController);