/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import { inject as service } from '@ember/service'; import { assert } from '@ember/debug'; import Component from '@ember/component'; export default Component.extend({ tagName: '', flashMessages: service(), params: null, successMessage() { return 'Save was successful'; }, errorMessage() { return 'There was an error saving'; }, onError(model) { if (model && model.rollbackAttributes) { model.rollbackAttributes(); } }, onSuccess() {}, // override and return a promise transaction() { assert('override transaction call in an extension of popup-base', false); }, actions: { performTransaction() { const args = [...arguments]; const messageArgs = this.messageArgs(...args); return this.transaction(...args) .then(() => { this.onSuccess(); this.flashMessages.success(this.successMessage(...messageArgs)); }) .catch((e) => { this.onError(...messageArgs); this.flashMessages.success(this.errorMessage(e, ...messageArgs)); }); }, }, });