From 16b4132ebfe348462b34e7f740524bde80de54d4 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 22 Apr 2017 12:10:54 +0200 Subject: [PATCH] Convert the `ViewHistory` to an ES6 class --- web/view_history.js | 138 +++++++++++++++++++++----------------------- 1 file changed, 66 insertions(+), 72 deletions(-) diff --git a/web/view_history.js b/web/view_history.js index d79ac7886..b4fa78de9 100644 --- a/web/view_history.js +++ b/web/view_history.js @@ -13,7 +13,7 @@ * limitations under the License. */ -var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; +const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; /** * View History - This is a utility for saving various view parameters for @@ -24,13 +24,12 @@ var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; * - FIREFOX or MOZCENTRAL - uses sessionStorage. * - GENERIC or CHROME - uses localStorage, if it is available. */ -var ViewHistory = (function ViewHistoryClosure() { - function ViewHistory(fingerprint, cacheSize) { +class ViewHistory { + constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) { this.fingerprint = fingerprint; - this.cacheSize = cacheSize || DEFAULT_VIEW_HISTORY_CACHE_SIZE; + this.cacheSize = cacheSize; this.isInitializedPromiseResolved = false; - this.initializedPromise = - this._readFromStorage().then(function (databaseStr) { + this.initializedPromise = this._readFromStorage().then((databaseStr) => { this.isInitializedPromiseResolved = true; var database = JSON.parse(databaseStr || '{}'); @@ -53,82 +52,77 @@ var ViewHistory = (function ViewHistoryClosure() { } this.file = database.files[index]; this.database = database; - }.bind(this)); + }); } - ViewHistory.prototype = { - _writeToStorage: function ViewHistory_writeToStorage() { - return new Promise(function (resolve) { - var databaseStr = JSON.stringify(this.database); + _writeToStorage() { + return new Promise((resolve) => { + var databaseStr = JSON.stringify(this.database); - if (typeof PDFJSDev !== 'undefined' && - PDFJSDev.test('FIREFOX || MOZCENTRAL')) { - sessionStorage.setItem('pdfjs.history', databaseStr); - } else { - localStorage.setItem('pdfjs.history', databaseStr); - } - resolve(); - }.bind(this)); - }, + if (typeof PDFJSDev !== 'undefined' && + PDFJSDev.test('FIREFOX || MOZCENTRAL')) { + sessionStorage.setItem('pdfjs.history', databaseStr); + } else { + localStorage.setItem('pdfjs.history', databaseStr); + } + resolve(); + }); + } - _readFromStorage: function ViewHistory_readFromStorage() { - return new Promise(function (resolve) { - if (typeof PDFJSDev !== 'undefined' && - PDFJSDev.test('FIREFOX || MOZCENTRAL')) { - resolve(sessionStorage.getItem('pdfjs.history')); - } else { - var value = localStorage.getItem('pdfjs.history'); + _readFromStorage() { + return new Promise(function(resolve) { + if (typeof PDFJSDev !== 'undefined' && + PDFJSDev.test('FIREFOX || MOZCENTRAL')) { + resolve(sessionStorage.getItem('pdfjs.history')); + } else { + var value = localStorage.getItem('pdfjs.history'); - // TODO: Remove this key-name conversion after a suitable time-frame. - // Note that we only remove the old 'database' entry if it looks like - // it was created by PDF.js. to avoid removing someone else's data. - if (!value) { - var databaseStr = localStorage.getItem('database'); - if (databaseStr) { - try { - var database = JSON.parse(databaseStr); - if (typeof database.files[0].fingerprint === 'string') { - localStorage.setItem('pdfjs.history', databaseStr); - localStorage.removeItem('database'); - value = databaseStr; - } - } catch (ex) { } - } + // TODO: Remove this key-name conversion after a suitable time-frame. + // Note that we only remove the old 'database' entry if it looks like + // it was created by PDF.js, to avoid removing someone else's data. + if (!value) { + var databaseStr = localStorage.getItem('database'); + if (databaseStr) { + try { + var database = JSON.parse(databaseStr); + if (typeof database.files[0].fingerprint === 'string') { + localStorage.setItem('pdfjs.history', databaseStr); + localStorage.removeItem('database'); + value = databaseStr; + } + } catch (ex) { } } - - resolve(value); } - }); - }, + resolve(value); + } + }); + } - set: function ViewHistory_set(name, val) { - if (!this.isInitializedPromiseResolved) { - return; - } - this.file[name] = val; - return this._writeToStorage(); - }, - - setMultiple: function ViewHistory_setMultiple(properties) { - if (!this.isInitializedPromiseResolved) { - return; - } - for (var name in properties) { - this.file[name] = properties[name]; - } - return this._writeToStorage(); - }, - - get: function ViewHistory_get(name, defaultValue) { - if (!this.isInitializedPromiseResolved) { - return defaultValue; - } - return this.file[name] || defaultValue; + set(name, val) { + if (!this.isInitializedPromiseResolved) { + return; } - }; + this.file[name] = val; + return this._writeToStorage(); + } - return ViewHistory; -})(); + setMultiple(properties) { + if (!this.isInitializedPromiseResolved) { + return; + } + for (var name in properties) { + this.file[name] = properties[name]; + } + return this._writeToStorage(); + } + + get(name, defaultValue) { + if (!this.isInitializedPromiseResolved) { + return defaultValue; + } + return this.file[name] || defaultValue; + } +} export { ViewHistory,