This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/models/invite.js.es6
2016-07-11 12:57:05 -04:00

65 lines
1.5 KiB
JavaScript

import { ajax } from 'discourse/lib/ajax';
import { popupAjaxError } from 'discourse/lib/ajax-error';
const Invite = Discourse.Model.extend({
rescind() {
ajax('/invites', {
type: 'DELETE',
data: { email: this.get('email') }
});
this.set('rescinded', true);
},
reinvite() {
const self = this;
return ajax('/invites/reinvite', {
type: 'POST',
data: { email: this.get('email') }
}).then(function() {
self.set('reinvited', true);
}).catch(popupAjaxError);
}
});
Invite.reopenClass({
create() {
var result = this._super.apply(this, arguments);
if (result.user) {
result.user = Discourse.User.create(result.user);
}
return result;
},
findInvitedBy(user, filter, search, offset) {
if (!user) { return Em.RSVP.resolve(); }
var data = {};
if (!Em.isNone(filter)) { data.filter = filter; }
if (!Em.isNone(search)) { data.search = search; }
data.offset = offset || 0;
return ajax("/users/" + user.get('username_lower') + "/invited.json", {data}).then(function (result) {
result.invites = result.invites.map(function (i) {
return Invite.create(i);
});
return Em.Object.create(result);
});
},
findInvitedCount(user) {
if (!user) { return Em.RSVP.resolve(); }
return ajax("/users/" + user.get('username_lower') + "/invited_count.json").then(result => Em.Object.create(result.counts));
},
reinviteAll() {
return ajax('/invites/reinvite-all', { type: 'POST' });
}
});
export default Invite;