mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-11-25 09:03:12 +03:00
Updated member management data (#1150)
no issue - Updated hard-coded data in member management to use real values from API
This commit is contained in:
parent
7c1ba31781
commit
c72e7b6040
@ -1,14 +1,29 @@
|
||||
import Controller from '@ember/controller';
|
||||
import {alias} from '@ember/object/computed';
|
||||
import {computed} from '@ember/object';
|
||||
import {inject as controller} from '@ember/controller';
|
||||
import {inject as service} from '@ember/service';
|
||||
import {task} from 'ember-concurrency';
|
||||
|
||||
export default Controller.extend({
|
||||
members: controller(),
|
||||
store: service(),
|
||||
|
||||
router: service(),
|
||||
|
||||
member: alias('model'),
|
||||
|
||||
subscription: computed('member.subscriptions', function () {
|
||||
let subscriptions = this.member.get('subscriptions') || [];
|
||||
let subscription = subscriptions[0] || {};
|
||||
return {
|
||||
amount: subscription.amount ? (subscription.amount / 100) : '-',
|
||||
status: subscription.status || '-',
|
||||
plan: subscription.plan || '-'
|
||||
|
||||
};
|
||||
}),
|
||||
|
||||
actions: {
|
||||
finaliseDeletion() {
|
||||
// decrememnt the total member count manually so there's no flash
|
||||
@ -18,5 +33,14 @@ export default Controller.extend({
|
||||
}
|
||||
this.router.transitionTo('members');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
fetchMember: task(function* (memberId) {
|
||||
yield this.store.findRecord('member', memberId, {
|
||||
reload: true
|
||||
}).then((data) => {
|
||||
this.set('member', data);
|
||||
});
|
||||
})
|
||||
|
||||
});
|
||||
|
9
ghost/admin/app/models/member-subscription.js
Normal file
9
ghost/admin/app/models/member-subscription.js
Normal file
@ -0,0 +1,9 @@
|
||||
import EmberObject from '@ember/object';
|
||||
|
||||
export default EmberObject.extend({
|
||||
adapter: '',
|
||||
amount: 0,
|
||||
plan: '',
|
||||
status: '',
|
||||
validUntil: 0
|
||||
});
|
@ -4,5 +4,6 @@ import attr from 'ember-data/attr';
|
||||
export default DS.Model.extend({
|
||||
name: attr('string'),
|
||||
email: attr('string'),
|
||||
createdAt: attr('moment-utc')
|
||||
createdAt: attr('moment-utc'),
|
||||
subscriptions: attr('member-subscription')
|
||||
});
|
||||
|
@ -1,7 +1,26 @@
|
||||
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
|
||||
|
||||
export default AuthenticatedRoute.extend({
|
||||
// TODO: add model method to load member if not passed in
|
||||
model(params) {
|
||||
this._isMemberUpdated = true;
|
||||
return this.store.findRecord('member', params.member_id, {
|
||||
reload: true
|
||||
});
|
||||
},
|
||||
|
||||
setupController(controller, model) {
|
||||
this._super(...arguments);
|
||||
if (!this._isMemberUpdated) {
|
||||
controller.fetchMember.perform(model.get('id'));
|
||||
}
|
||||
},
|
||||
|
||||
deactivate() {
|
||||
this._super(...arguments);
|
||||
|
||||
// clear the properties
|
||||
this._isMemberUpdated = false;
|
||||
},
|
||||
|
||||
titleToken() {
|
||||
return this.controller.get('member.name');
|
||||
|
@ -32,8 +32,8 @@
|
||||
</div>
|
||||
<div class="flex flex-column flex-grow-1 pa5">
|
||||
<span class="db ttu f8 midlightgrey">Current plan</span>
|
||||
<span class="db f5">Monthly</span>
|
||||
<span class="db f8 midlightgrey">6 USD/month</span>
|
||||
<span class="db f5">{{subscription.plan}}</span>
|
||||
<span class="db f8 midlightgrey">{{subscription.amount}} USD/month</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
35
ghost/admin/app/transforms/member-subscription.js
Normal file
35
ghost/admin/app/transforms/member-subscription.js
Normal file
@ -0,0 +1,35 @@
|
||||
import MemberSubscription from 'ghost-admin/models/member-subscription';
|
||||
import Transform from 'ember-data/transform';
|
||||
import {A as emberA, isArray as isEmberArray} from '@ember/array';
|
||||
|
||||
export default Transform.extend({
|
||||
deserialize(serialized) {
|
||||
let subscriptions, subscriptionArray;
|
||||
|
||||
subscriptionArray = serialized || [];
|
||||
|
||||
subscriptions = subscriptionArray.map(itemDetails => MemberSubscription.create(itemDetails));
|
||||
|
||||
return emberA(subscriptions);
|
||||
},
|
||||
|
||||
serialize(deserialized) {
|
||||
let subscriptionArray;
|
||||
|
||||
if (isEmberArray(deserialized)) {
|
||||
subscriptionArray = deserialized.map((item) => {
|
||||
let adapter = item.get('adapter').trim();
|
||||
let amount = item.get('amount');
|
||||
let plan = item.get('plan').trim();
|
||||
let status = item.get('status').trim();
|
||||
let validUntil = item.get('validUntil');
|
||||
|
||||
return {adapter, amount, plan, status, validUntil};
|
||||
}).compact();
|
||||
} else {
|
||||
subscriptionArray = [];
|
||||
}
|
||||
|
||||
return subscriptionArray;
|
||||
}
|
||||
});
|
Loading…
Reference in New Issue
Block a user