From afcddc0b02080fc92539a86cc22b919855de9fef Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 22 May 2018 13:31:34 -0400 Subject: [PATCH] LP#1750894 Settings migration function Signed-off-by: Bill Erickson --- Open-ILS/web/js/ui/default/staff/services/hatch.js | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/Open-ILS/web/js/ui/default/staff/services/hatch.js b/Open-ILS/web/js/ui/default/staff/services/hatch.js index db08feb7b8..973f145cff 100644 --- a/Open-ILS/web/js/ui/default/staff/services/hatch.js +++ b/Open-ILS/web/js/ui/default/staff/services/hatch.js @@ -368,6 +368,76 @@ angular.module('egCoreMod') }); } + service.migrateServerSettings = function() { + + if (!service.auth) service.auth = $injector.get('egAuth'); + if (!service.auth.token()) return $q.reject('no authtoken'); + + var deferred = $q.defer(); + var settings = service.serverSettings.slice(0); // clone + + function migrateNext(key) { + if (!key) { + return deferred.resolve(); + } + + service.migrateOneServerSetting(key).then( + function() { + deferred.notify('migrated ' + key); + migrateNext(settings.shift()); + }, + function() { + deferred.reject( + 'Something failed during settings migration'); + } + ); + + } + + return deferred.promise; + } + + service.migrateOneServerSetting = function(key) { + console.log('migrating server setting ' + key); + var deferred = $q.defer(); + + function remove(key) { + return service.useSettings() ? + service.removeRemoteItem(key) : + $q.when(service.removeLocalItem(key)); + } + + var prom = service.useSettings() ? + service.getRemoteItem(key) : + $q.when(service.getLocalItem(key)); + + prom.then(function(value) { + + if (value === undefined || value === null) { + remove(key); // for good measure. + return deferred.resolve(); + } + + service.setServerItem(key, value).then( + function() { + console.debug( + 'setting ' + key + ' successfully stored on server'); + + remove(key).then(function() { + console.debug( + 'setting ' + key + ' removed from local storage'); + deferred.resolve(); + }); + }, + function() { + deferred.reject('applying server setting ' + key); + } + ); + }) + + return deferred.promise; + } + service.getServerItemBatch = function(keys) { // no cache checking for now. assumes batch mode is only // called once on page load. maybe add cache checking later. -- 2.11.0