Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/io.js

Issue 29367480: Issue 4721 - Use IndexedDB for storage in Edge (Closed)
Patch Set: Address some nits Created Dec. 20, 2016, 2:31 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | lib/localforage.min.js » ('j') | metadata.edge » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « no previous file | lib/localforage.min.js » ('j') | metadata.edge » ('J')

Powered by Google App Engine
This is Rietveld