mirror of https://github.com/status-im/consul.git
80 lines
2.3 KiB
JavaScript
80 lines
2.3 KiB
JavaScript
|
import Mixin from '@ember/object/mixin';
|
||
|
import { get, set } from '@ember/object';
|
||
|
import WithFeedback from 'consul-ui/mixins/with-feedback';
|
||
|
|
||
|
const transitionToList = function(key, transitionTo) {
|
||
|
if (key === '/') {
|
||
|
return transitionTo('dc.kv.index');
|
||
|
} else {
|
||
|
return transitionTo('dc.kv.folder', key);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
export default Mixin.create(WithFeedback, {
|
||
|
actions: {
|
||
|
create: function(item, parent) {
|
||
|
get(this, 'feedback').execute(
|
||
|
() => {
|
||
|
return get(this, 'repo')
|
||
|
.persist(item)
|
||
|
.then(item => {
|
||
|
return transitionToList(get(parent, 'Key'), this.transitionTo.bind(this));
|
||
|
});
|
||
|
},
|
||
|
`Your key has been added.`,
|
||
|
`There was an error adding your key.`
|
||
|
);
|
||
|
},
|
||
|
update: function(item, parent) {
|
||
|
get(this, 'feedback').execute(
|
||
|
() => {
|
||
|
return get(this, 'repo')
|
||
|
.persist(item)
|
||
|
.then(() => {
|
||
|
return transitionToList(get(parent, 'Key'), this.transitionTo.bind(this));
|
||
|
});
|
||
|
},
|
||
|
`Your key has been saved.`,
|
||
|
`There was an error saving your key.`
|
||
|
);
|
||
|
},
|
||
|
delete: function(item, parent) {
|
||
|
get(this, 'feedback').execute(
|
||
|
() => {
|
||
|
return get(this, 'repo')
|
||
|
.remove(item)
|
||
|
.then(() => {
|
||
|
switch (this.routeName) {
|
||
|
case 'dc.kv.index':
|
||
|
return this.refresh();
|
||
|
default:
|
||
|
return transitionToList(get(parent, 'Key'), this.transitionTo.bind(this));
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
`Your key was deleted.`,
|
||
|
`There was an error deleting your key.`
|
||
|
);
|
||
|
},
|
||
|
cancel: function(item, parent) {
|
||
|
return transitionToList(get(parent, 'Key'), this.transitionTo.bind(this));
|
||
|
},
|
||
|
invalidateSession: function(item) {
|
||
|
const controller = this.controller;
|
||
|
const repo = get(this, 'sessionRepo');
|
||
|
get(this, 'feedback').execute(
|
||
|
() => {
|
||
|
return repo.remove(item).then(() => {
|
||
|
const item = get(controller, 'item');
|
||
|
set(item, 'Session', null);
|
||
|
delete item.Session;
|
||
|
set(controller, 'session', null);
|
||
|
});
|
||
|
},
|
||
|
`The session was invalidated.`,
|
||
|
`There was an error invalidating the session.`
|
||
|
);
|
||
|
},
|
||
|
},
|
||
|
});
|