Fix Flash Of Unstyled Content (fouc)
This commit is contained in:
@@ -254,7 +254,7 @@ define([
|
||||
var parentEl = exp.findElement(files, parentPath);
|
||||
if (path.length === 4 && path[0] === TRASH) {
|
||||
files[TRASH][path[1]].splice(path[2], 1);
|
||||
} else if (path[0] === UNSORTED) {
|
||||
} else if (path[0] === UNSORTED) { //TODO || === TEMPLATE
|
||||
parentEl.splice(key, 1);
|
||||
} else {
|
||||
parentEl[key] = undefined;
|
||||
@@ -264,6 +264,7 @@ define([
|
||||
};
|
||||
|
||||
// Find an element in a object following a path, resursively
|
||||
// NOTE: it is always used with an absolute path and root === files in our code
|
||||
var findElement = exp.findElement = function (root, pathInput) {
|
||||
if (!pathInput) {
|
||||
error("Invalid path:\n", pathInput, "\nin root\n", root);
|
||||
@@ -279,6 +280,7 @@ define([
|
||||
return findElement(root[key], path);
|
||||
};
|
||||
|
||||
// Get the object {element: element, path: [path]} from a trash root path
|
||||
var getTrashElementData = exp.getTrashElementData = function (trashPath) {
|
||||
if (!isInTrashRoot) {
|
||||
debug("Called getTrashElementData on a element not in trash root: ", trashPath);
|
||||
@@ -289,6 +291,7 @@ define([
|
||||
return findElement(files, parentPath);
|
||||
};
|
||||
|
||||
// Get data from AllFiles (Cryptpad_RECENTPADS)
|
||||
var getFileData = exp.getFileData = function (file) {
|
||||
if (!file) { return; }
|
||||
var res;
|
||||
@@ -328,6 +331,7 @@ define([
|
||||
};
|
||||
|
||||
// Move to trash
|
||||
// TODO: rename the function
|
||||
var removeElement = exp.removeElement = function (path, cb, keepOld) {
|
||||
if (!path || path.length < 2 || path[0] === TRASH) {
|
||||
debug("Calling removeElement from a wrong path: ", path);
|
||||
@@ -343,6 +347,7 @@ define([
|
||||
if (cb) { cb(); }
|
||||
};
|
||||
|
||||
//TODO add suport for TEMPLATE here
|
||||
var moveElement = exp.moveElement = function (elementPath, newParentPath, cb, keepOld) {
|
||||
if (comparePath(elementPath, newParentPath)) { return; } // Nothing to do...
|
||||
if (isPathInTrash(newParentPath)) {
|
||||
@@ -353,12 +358,13 @@ define([
|
||||
|
||||
var newParent = findElement(files, newParentPath);
|
||||
|
||||
// Never move a folder in one of its children
|
||||
if (isFolder(element) && isSubpath(newParentPath, elementPath)) {
|
||||
log(Messages.fo_moveFolderToChildError);
|
||||
return;
|
||||
}
|
||||
|
||||
if (isPathInUnsorted(newParentPath)) {
|
||||
if (isPathInUnsorted(newParentPath)) { //TODO || TEMPLATE
|
||||
if (isFolder(element)) {
|
||||
log(Messages.fo_moveUnsortedError);
|
||||
return;
|
||||
@@ -386,7 +392,7 @@ define([
|
||||
var newName = !isPathInRoot(elementPath) ? getAvailableName(newParent, name) : name;
|
||||
|
||||
if (typeof(newParent[newName]) !== "undefined") {
|
||||
log("A file with the same name already exist at the new location. Rename the file and try again.");
|
||||
log(Messages.fo_unavailableName);
|
||||
return;
|
||||
}
|
||||
newParent[newName] = element;
|
||||
@@ -523,6 +529,7 @@ define([
|
||||
|
||||
var emptyTrash = exp.emptyTrash = function (cb) {
|
||||
files[TRASH] = {};
|
||||
checkDeletedFiles();
|
||||
if(cb) { cb(); }
|
||||
};
|
||||
|
||||
@@ -592,7 +599,7 @@ define([
|
||||
|
||||
var fixFiles = exp.fixFiles = function () {
|
||||
// Explore the tree and check that everything is correct:
|
||||
// * 'root', 'trash' and 'filesData' exist and are objects
|
||||
// * 'root', 'trash', 'unsorted' and 'filesData' exist and are objects
|
||||
// * ROOT: Folders are objects, files are href
|
||||
// * TRASH: Trash root contains only arrays, each element of the array is an object {element:.., path:..}
|
||||
// * FILES_DATA: - Data (title, cdate, adte) are stored in filesData. filesData contains only href keys linking to object with title, cdate, adate.
|
||||
@@ -601,10 +608,6 @@ define([
|
||||
// * UNSORTED: Contains only files (href), and does not contains files that are in ROOT
|
||||
debug("Cleaning file system...");
|
||||
|
||||
// Create a backup
|
||||
if (typeof(localStorage.oldFileSystem) === "undefined") {
|
||||
localStorage.oldFileSystem = '[]';
|
||||
}
|
||||
var before = JSON.stringify(files);
|
||||
|
||||
if (typeof(files[ROOT]) !== "object") { debug("ROOT was not an object"); files[ROOT] = {}; }
|
||||
|
||||
@@ -18,6 +18,11 @@ define([
|
||||
var $iframe = $('#pad-iframe').contents();
|
||||
var ifrw = $('#pad-iframe')[0].contentWindow;
|
||||
|
||||
Cryptpad.addLoadingScreen();
|
||||
var onConnectError = function (info) {
|
||||
Cryptpad.errorLoadingScreen(Messages.websocketError);
|
||||
};
|
||||
|
||||
var APP = window.APP = {
|
||||
$bar: $iframe.find('#toolbar'),
|
||||
editable: false
|
||||
@@ -48,12 +53,6 @@ define([
|
||||
console.error.apply(console, arguments);
|
||||
};
|
||||
var log = config.log = Cryptpad.log;
|
||||
var DEBUG_LS = APP.DEBUG_LS = {
|
||||
resetLocalStorage : function () {
|
||||
delete localStorage[LOCALSTORAGE_OPENED];
|
||||
delete localStorage[LOCALSTORAGE_LAST];
|
||||
}
|
||||
};
|
||||
|
||||
var getLastOpenedFolder = function () {
|
||||
var path;
|
||||
@@ -459,6 +458,7 @@ define([
|
||||
var andThen = function () {
|
||||
filesOp.moveElements(paths, newPath, cb);
|
||||
};
|
||||
// "force" is currently unused but may be configurable by user
|
||||
if (newPath[0] !== TRASH || force) {
|
||||
andThen();
|
||||
return;
|
||||
@@ -1405,6 +1405,7 @@ define([
|
||||
pressKey(e.which, false);
|
||||
});
|
||||
$(ifrw).on('keydown', function (e) {
|
||||
// "Del"
|
||||
if (e.which === 46) {
|
||||
var $selected = $iframe.find('.selected');
|
||||
if (!$selected.length) { return; }
|
||||
@@ -1552,6 +1553,7 @@ define([
|
||||
var $backupButton = Cryptpad.createButton('', true);
|
||||
$backupButton.on('click', function() {
|
||||
var url = window.location.origin + window.location.pathname + '#' + editHash;
|
||||
//TODO change text & transalte
|
||||
Cryptpad.alert("Backup URL for this pad. It is highly recommended that you do not share it with other people.<br>Anybody with that URL can remove all the files in your file manager.<br>" + url);
|
||||
});
|
||||
$userBlock.append($backupButton);
|
||||
@@ -1566,12 +1568,15 @@ define([
|
||||
proxy[FILES_DATA] = s;
|
||||
initLocalStorage();
|
||||
init(proxy);
|
||||
APP.userList.onChange();
|
||||
Cryptpad.removeLoadingScreen();
|
||||
});
|
||||
return;
|
||||
}
|
||||
initLocalStorage();
|
||||
init(proxy);
|
||||
APP.userList.onChange();
|
||||
Cryptpad.removeLoadingScreen();
|
||||
};
|
||||
var onDisconnect = function (info) {
|
||||
setEditable(false);
|
||||
@@ -1593,6 +1598,11 @@ define([
|
||||
onDisconnect();
|
||||
});
|
||||
});
|
||||
Cryptpad.onError(function (info) {
|
||||
if (info) {
|
||||
onConnectError();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user