1
0
Fork 0
mirror of https://github.com/futurepress/epub.js.git synced 2025-10-03 14:59:18 +02:00
epub.js/fpjs/render/storage.js

112 lines
No EOL
2.2 KiB
JavaScript

FP.storage = function(){
var _supported = {},
_storageType,
_store;
function storageMethod(storageType){
console.log("storageMethod", storageType)
//-- Pick store type
if( !storageType || typeof(FP.store[storageType]) == "undefined"){
_storageType = "none";
}else{
_storageType = storageType;
}
//-- Create a new store of that type
_store = new FP.store[_storageType];
//-- Handle load errors
_store.failed = _error;
}
function determineStorageMethod(override) {
var methods = ["filesystem", "indexeddb", "websqldatabase", "ram"],
method = 'none';
checkSupport();
if(override && (override == "none" || _supported[override])){
method = override;
}else{
for ( var i = -1, len = methods.length; ++i < len; ){
if ( _supported[methods[i]] ) {
method = methods[i];
break;
}
}
}
storageMethod(method);
}
function get(path, callback) {
return _store.get(path, callback);
}
function preload(path, callback) {
return _store.preload(path, callback);
}
function batch(group, callback) {
return _store.batch(group, callback);
}
function getURL(path) {
return _store.getURL(path);
}
function save(path, file, callback) {
return _store.save(path, file, callback);
}
function _error(err){
console.log("error", err);
}
function getStorageType(){
return _storageType;
}
function checkSupport() {
var support = "filesystem indexeddb websqldatabase ram".split(' '),
toTest = "RequestFileSystem IndexedDB openDatabase URL".split(' ');
for ( var t = -1, len = support.length; ++t < len; ){
var test = support[t],
method = toTest[t];
_supported[test] = testSupport(method);
}
}
function testSupport(method) {
prefixes = ['webkit', 'moz', 'o', 'ms'];
for ( var i = -1, len = prefixes.length; ++i < len; ){
if ( window[prefixes[i] + method] ) return true;
}
return method in window;
}
return {
"get" : get,
"preload" : preload,
"batch" : batch,
"storageMethod": storageMethod,
"getURL": getURL,
"save" : save,
"getStorageType" : getStorageType,
"determineStorageMethod": determineStorageMethod
}
}();