0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-24 23:48:13 -05:00

Added handling for active prices

refs https://github.com/TryGhost/Team/issues/665

- Allows (un)archiving of prices
- Filters Portal settings on active prices only
This commit is contained in:
Rishabh 2021-05-07 19:14:04 +05:30
parent 998d42fc33
commit c53e0fce77
3 changed files with 33 additions and 7 deletions

View file

@ -332,6 +332,9 @@ export default ModalComponent.extend({
const products = yield this.store.query('product', {include: 'stripe_prices'}); const products = yield this.store.query('product', {include: 'stripe_prices'});
const product = products.firstObject; const product = products.firstObject;
const prices = product.get('stripePrices'); const prices = product.get('stripePrices');
this.set('prices', prices); const activePrices = prices.filter((d) => {
return !!d.active;
});
this.set('prices', activePrices);
}).drop() }).drop()
}); });

View file

@ -80,6 +80,18 @@ export default class ProductController extends Controller {
this.showPriceModal = true; this.showPriceModal = true;
} }
@action
async archivePrice(price) {
price.active = false;
this.send('savePrice', price);
}
@action
async activatePrice(price) {
price.active = true;
this.send('savePrice', price);
}
@action @action
async confirmLeave() { async confirmLeave() {
this.settings.rollbackAttributes(); this.settings.rollbackAttributes();
@ -102,12 +114,21 @@ export default class ProductController extends Controller {
savePrice(price) { savePrice(price) {
const stripePrices = this.product.stripePrices.map((d) => { const stripePrices = this.product.stripePrices.map((d) => {
if (d.id === price.id) { if (d.id === price.id) {
return EmberObject.create(price); return EmberObject.create({
...price,
active: !!price.active
});
} }
return d; return {
...d,
active: !!d.active
};
}); });
if (!price.id) { if (!price.id) {
stripePrices.push(EmberObject.create(price)); stripePrices.push(EmberObject.create({
...price,
active: !!price.active
}));
} }
this.product.set('stripePrices', stripePrices); this.product.set('stripePrices', stripePrices);
this.saveTask.perform(); this.saveTask.perform();
@ -128,7 +149,7 @@ export default class ProductController extends Controller {
return this._validateSignupRedirect(this.paidSignupRedirect, 'membersPaidSignupRedirect'); return this._validateSignupRedirect(this.paidSignupRedirect, 'membersPaidSignupRedirect');
} }
@task({drop: true}) @task({restartable: true})
*saveTask() { *saveTask() {
this.send('validatePaidSignupRedirect'); this.send('validatePaidSignupRedirect');
if (this.settings.get('errors').length !== 0) { if (this.settings.get('errors').length !== 0) {

View file

@ -105,11 +105,13 @@
<span>Edit</span> <span>Edit</span>
</button> </button>
{{#if price.active}} {{#if price.active}}
<button class="gh-btn gh-btn-link archived"> <button class="gh-btn gh-btn-link archived" {{action "archivePrice" price}}>
<span>Archive</span> <span>Archive</span>
</button> </button>
{{else}} {{else}}
<button class="gh-btn gh-btn-link"><span>Activate</span></button> <button class="gh-btn gh-btn-link" {{action "activatePrice" price}}>
<span>Activate</span>
</button>
{{/if}} {{/if}}
</div> </div>
</div> </div>