open-vault/ui/app/components/identity/_popup-base.js

42 lines
1.1 KiB
JavaScript

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() {
let args = [...arguments];
let 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));
});
},
},
});