mirror of https://github.com/hashicorp/consul
48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Service from '@ember/service';
|
|
import getStorage from 'consul-ui/utils/storage/local-storage';
|
|
const SCHEME = 'consul';
|
|
const storage = getStorage(SCHEME);
|
|
// promise aware assertion
|
|
export const ifNotBlocking = function (repo) {
|
|
return repo.findBySlug('client').then(function (settings) {
|
|
return typeof settings.blocking !== 'undefined' && !settings.blocking;
|
|
});
|
|
};
|
|
export default class SettingsService extends Service {
|
|
storage = storage;
|
|
|
|
findAll(key) {
|
|
return Promise.resolve(this.storage.all());
|
|
}
|
|
|
|
findBySlug(slug) {
|
|
return Promise.resolve(this.storage.getValue(slug));
|
|
}
|
|
|
|
persist(obj) {
|
|
const storage = this.storage;
|
|
Object.keys(obj).forEach((item, i) => {
|
|
storage.setValue(item, obj[item]);
|
|
});
|
|
return Promise.resolve(obj);
|
|
}
|
|
|
|
delete(obj) {
|
|
// TODO: Loop through and delete the specified keys
|
|
if (!Array.isArray(obj)) {
|
|
obj = [obj];
|
|
}
|
|
const storage = this.storage;
|
|
const item = obj.reduce(function (prev, item, i, arr) {
|
|
storage.removeValue(item);
|
|
return prev;
|
|
}, {});
|
|
return Promise.resolve(item);
|
|
}
|
|
}
|