kopia lustrzana https://github.com/c9/core
Merge pull request +6318 from c9/fix-vfs-storage
Save vfs to sessionStorage only on unload to not share it with other tabspull/39/head
commit
ee0fa0413a
|
@ -16,7 +16,7 @@ define(function(require, exports, module) {
|
||||||
var plugin = new Plugin("Ajax.org", main.consumes);
|
var plugin = new Plugin("Ajax.org", main.consumes);
|
||||||
var emit = plugin.getEmitter();
|
var emit = plugin.getEmitter();
|
||||||
|
|
||||||
var urlServers;
|
var urlServers, lastVfs;
|
||||||
var query = require("url").parse(document.location.href, true).query;
|
var query = require("url").parse(document.location.href, true).query;
|
||||||
if (query.vfs) {
|
if (query.vfs) {
|
||||||
if (!query.vfs.match(/^https:\/\/.*\/vfs$/))
|
if (!query.vfs.match(/^https:\/\/.*\/vfs$/))
|
||||||
|
@ -164,7 +164,6 @@ define(function(require, exports, module) {
|
||||||
return callback(new Error("Disconnected: Could not reach your workspace. Please try again later."));
|
return callback(new Error("Disconnected: Could not reach your workspace. Please try again later."));
|
||||||
|
|
||||||
var server = servers[i];
|
var server = servers[i];
|
||||||
|
|
||||||
auth.request(server.url + "/" + options.pid, {
|
auth.request(server.url + "/" + options.pid, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
timeout: 120000,
|
timeout: 120000,
|
||||||
|
@ -268,22 +267,24 @@ define(function(require, exports, module) {
|
||||||
};
|
};
|
||||||
|
|
||||||
var data = JSON.stringify(vfs);
|
var data = JSON.stringify(vfs);
|
||||||
var oldData = window.sessionStorage.getItem("vfsid");
|
|
||||||
|
var oldData = lastVfs || window.sessionStorage.getItem("vfsid");
|
||||||
if (oldData && oldData !== data)
|
if (oldData && oldData !== data)
|
||||||
deleteOldVfs();
|
deleteOldVfs();
|
||||||
|
|
||||||
try {
|
lastVfs = data;
|
||||||
window.sessionStorage.setItem("vfsid", data);
|
|
||||||
} catch(e) {
|
|
||||||
// could throw a quota exception
|
|
||||||
}
|
|
||||||
return vfs;
|
return vfs;
|
||||||
}
|
}
|
||||||
|
|
||||||
function recallVfs() {
|
function recallVfs() {
|
||||||
var vfs;
|
var vfs;
|
||||||
try {
|
try {
|
||||||
vfs = JSON.parse(window.sessionStorage.getItem("vfsid"));
|
vfs = JSON.parse(lastVfs || window.sessionStorage.getItem("vfsid"));
|
||||||
|
if (!lastVfs) {
|
||||||
|
window.sessionStorage.removeItem("vfsid");
|
||||||
|
lastVfs = JSON.stringify(vfs);
|
||||||
|
}
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
if (!vfs)
|
if (!vfs)
|
||||||
|
@ -300,10 +301,11 @@ define(function(require, exports, module) {
|
||||||
function deleteOldVfs() {
|
function deleteOldVfs() {
|
||||||
var vfs;
|
var vfs;
|
||||||
try {
|
try {
|
||||||
vfs = JSON.parse(window.sessionStorage.getItem("vfsid"));
|
vfs = JSON.parse(lastVfs || window.sessionStorage.getItem("vfsid"));
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
window.sessionStorage.removeItem("vfsid");
|
window.sessionStorage.removeItem("vfsid");
|
||||||
|
lastVfs = null;
|
||||||
if (!vfs) return;
|
if (!vfs) return;
|
||||||
|
|
||||||
auth.request(vfs.vfsid, {
|
auth.request(vfs.vfsid, {
|
||||||
|
@ -315,13 +317,29 @@ define(function(require, exports, module) {
|
||||||
if (err) console.error(vfs.vfsid, "deleted", err);
|
if (err) console.error(vfs.vfsid, "deleted", err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function fatalError(msg, action) {
|
function fatalError(msg, action) {
|
||||||
var err = new Error(msg);
|
var err = new Error(msg);
|
||||||
err.fatal = true;
|
err.fatal = true;
|
||||||
err.action = action || "reload";
|
err.action = action || "reload";
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function saveToSessionStorage() {
|
||||||
|
try {
|
||||||
|
window.sessionStorage.setItem("vfsid", lastVfs);
|
||||||
|
} catch(e) {
|
||||||
|
// could throw a quota exception
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.on("load", function() {
|
||||||
|
window.addEventListener("unload", saveToSessionStorage);
|
||||||
|
});
|
||||||
|
|
||||||
|
plugin.on("unload", function() {
|
||||||
|
window.removeEventListener("unload", saveToSessionStorage);
|
||||||
|
});
|
||||||
|
|
||||||
/***** Register and define API *****/
|
/***** Register and define API *****/
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue