511343d2aa
Originally we assumed all settings would be editable in the settings page, but over time we've added thigns to localStorage that aren't user settable settings. This means we shouldn't save all you localStorage settings everything time only a single setting has been saved. This change only changes the setting you've changed via the settings page, meaning it will never update non-user-settable settings.
51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
import Controller from '@ember/controller';
|
|
import { get, set } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
|
|
export default Controller.extend({
|
|
repo: service('settings'),
|
|
dom: service('dom'),
|
|
timeout: service('timeout'),
|
|
confirming: false,
|
|
applyTransition: function() {
|
|
const tick = this.timeout.tick;
|
|
set(this, 'confirming', true);
|
|
tick().then(() => {
|
|
set(this, 'confirming', false);
|
|
});
|
|
},
|
|
actions: {
|
|
key: function(e) {
|
|
this.applyTransition();
|
|
switch (true) {
|
|
case e.keyCode === 13:
|
|
// disable ENTER
|
|
e.preventDefault();
|
|
}
|
|
},
|
|
change: function(e, value, item) {
|
|
const event = this.dom.normalizeEvent(e, value);
|
|
// TODO: Switch to using forms like the rest of the app
|
|
// setting utils/form/builder for things to be done before we
|
|
// can do that. For the moment just do things normally its a simple
|
|
// enough form at the moment
|
|
|
|
const target = event.target;
|
|
const blocking = get(this, 'item.client.blocking');
|
|
switch (target.name) {
|
|
case 'client[blocking]':
|
|
set(this, 'item.client.blocking', !blocking);
|
|
this.send('update', 'client', this.item.client);
|
|
break;
|
|
case 'urls[service]':
|
|
if (typeof get(this, 'item.urls') === 'undefined') {
|
|
set(this, 'item.urls', {});
|
|
}
|
|
set(this, 'item.urls.service', target.value);
|
|
this.send('update', 'urls', this.item.urls);
|
|
break;
|
|
}
|
|
},
|
|
},
|
|
});
|