/** Copyright 2014-2019 Stewart Allen -- All Rights Reserved */ "use strict"; var gs_kiri_db = exports; (function() { if (!self.kiri) self.kiri = { }; /** * @constructor */ function Catalog(motodb, decimate) { var store = this; store.db = motodb; store.files = {}; store.listeners = []; store.autodec = decimate; store.deferredHandler = null; store.refresh(); } var kiri = self.kiri, DP = Catalog.prototype; kiri.openCatalog = function(motodb,decimate) { return new Catalog(motodb,decimate); }; DP.refresh = function() { var store = this; store.db.get('files', function(files) { if (files) { store.files = files; notifyFileListeners(store); } }); }; DP.wipe = function() { var key, files = this.files; for (key in files) { if (files.hasOwnProperty(key)) this.deleteFile(key); } }; DP.fileList = function() { return this.files; }; DP.addFileListener = function(listener) { if (!this.listeners.contains(listener)) { this.listeners.push(listener); listener(this.files); } }; DP.removeFileListener = function(listener) { this.listeners.remove(listener); }; function saveFileList(store) { store.db.put('files', store.files); notifyFileListeners(store); } function notifyFileListeners(store) { for (var i=0; i