Index: lib/io.js |
=================================================================== |
--- a/lib/io.js |
+++ b/lib/io.js |
@@ -26,27 +26,43 @@ |
{ |
let key = fileToKey(file); |
- ext.storage.get([key], function(items) |
+ // Make sure we do not have subscriptions in localStorage from older |
+ // versions first |
+ let entry = localStorage.getItem(key); |
+ if (typeof entry == "string") |
{ |
- let entry = items[key]; |
- |
- if (entry) |
- successCallback(entry); |
+ try |
+ { |
+ entry = JSON.parse(entry); |
+ } |
+ catch(err) |
+ { |
+ setTimeout(errorCallback(new Error("File is corrupted"))); |
+ return; |
+ } |
+ setTimeout(successCallback(entry)); |
+ return; |
+ } |
+ // Now try to read from IndexedDB |
+ localforage.getItem(key, function(err, value) |
+ { |
+ if (err || !value) |
+ errorCallback(new Error("File doesn't exist")); |
else |
- errorCallback(new Error("File doesn't exist")); |
+ successCallback(value); |
}); |
} |
function saveFile(file, data, callback) |
{ |
- ext.storage.set( |
- fileToKey(file), |
- { |
- content: Array.from(data), |
- lastModified: Date.now() |
- }, |
- callback |
- ); |
+ var key = fileToKey(file); |
+ var entry = { |
+ content: Array.from(data), |
+ lastModified: Date.now() |
+ }; |
+ |
+ localStorage.removeItem(key); |
+ localforage.setItem(key, entry, callback); |
} |
exports.IO = |
@@ -60,9 +76,11 @@ |
{ |
function onLoaded(entry) |
{ |
- for (let line of entry.content) |
- listener.process(line); |
- |
+ if ("content" in entry) |
+ { |
+ for (let line of entry.content) |
+ listener.process(line); |
+ } |
listener.process(null); |
callback(null); |
} |