Files
discourse-subscriptions/assets/javascripts/discourse/models/admin-subscription.js.es6
T
Justin DiRose a282475da3 FEATURE: Admin > Subscriptions Pagination (#50)
Meta topic: https://meta.discourse.org/t/subscriptions-add-pagination-to-admin-subscriptions-view/172500

This adds support for pagination using our `{{load-more}}` component in core. Implementation on the backend was a bit tricky because we don't return all results from Stripe, only those that match local subscriptions stored in the `DiscourseSubscriptions::Subscription` model.
2021-02-05 11:57:53 -06:00

60 lines
1.5 KiB
JavaScript

import discourseComputed from "discourse-common/utils/decorators";
import { ajax } from "discourse/lib/ajax";
import EmberObject from "@ember/object";
import getURL from "discourse-common/lib/get-url";
const AdminSubscription = EmberObject.extend({
@discourseComputed("status")
canceled(status) {
return status === "canceled";
},
@discourseComputed("metadata")
metadataUserExists(metadata) {
return metadata.user_id && metadata.username;
},
@discourseComputed("metadata")
subscriptionUserPath(metadata) {
return getURL(`/admin/users/${metadata.user_id}/${metadata.username}`);
},
destroy(refund) {
const data = {
refund: refund,
};
return ajax(`/s/admin/subscriptions/${this.id}`, {
method: "delete",
data,
}).then((result) => AdminSubscription.create(result));
},
});
AdminSubscription.reopenClass({
find() {
return ajax("/s/admin/subscriptions", {
method: "get",
}).then((result) => {
if (result === null) {
return { unconfigured: true };
}
result.data = result.data.map((subscription) =>
AdminSubscription.create(subscription)
);
return result;
});
},
loadMore(lastRecord) {
return ajax(`/s/admin/subscriptions?last_record=${lastRecord}`, {
method: "get",
}).then((result) => {
result.data = result.data.map((subscription) =>
AdminSubscription.create(subscription)
);
return result;
});
},
});
export default AdminSubscription;