From c359c27997185d33bd2004f5bae42f346a850d7d Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 20 Dec 2016 17:27:45 +0100 Subject: [PATCH] Use user object as default store in file manager --- customize.dist/fsStore.js | 11 +++- customize.dist/index.html | 2 +- customize.dist/src/fragments/index.html | 2 +- customize.dist/src/toolbar.less | 1 + customize.dist/toolbar.css | 1 + www/common/cryptpad-common.js | 7 ++- www/file/main.js | 76 ++++++++++++++++--------- 7 files changed, 68 insertions(+), 32 deletions(-) diff --git a/customize.dist/fsStore.js b/customize.dist/fsStore.js index c031cba21..7910a5cf3 100644 --- a/customize.dist/fsStore.js +++ b/customize.dist/fsStore.js @@ -19,6 +19,7 @@ define([ var storeObj; var ready = false; var filesOp; + var exp = {}; var safeSet = function (key, val) { storeObj[key] = val; @@ -85,6 +86,10 @@ define([ cb(); }; + Store.getProxy = function () { + return exp; + }; + var changeHandlers = Store.changeHandlers = []; Store.change = function (f) { @@ -134,7 +139,9 @@ define([ }; var rt = window.rt = Listmap.create(listmapConfig); + exp.proxy = rt.proxy; rt.proxy.on('create', function (info) { + exp.info = info; var realtime = info.realtime; if (!Cryptpad.getUserHash()) { localStorage.FS_hash = Cryptpad.getEditHashFromKeys(info.channel, secret.keys); @@ -170,12 +177,12 @@ define([ }; Store.ready = function (f, Cryptpad) { - if (Cryptpad.parsePadUrl(window.location.href).type === "file") { + /*if (Cryptpad.parsePadUrl(window.location.href).type === "file") { if (typeof(f) === 'function') { f(void 0, Cryptpad.getStore(true)); } return; - } + }*/ if (ready) { if (typeof(f) === 'function') { f(void 0, Store); diff --git a/customize.dist/index.html b/customize.dist/index.html index 025f6c1ea..c9e09fd8a 100644 --- a/customize.dist/index.html +++ b/customize.dist/index.html @@ -80,7 +80,7 @@ --> - +
diff --git a/customize.dist/src/fragments/index.html b/customize.dist/src/fragments/index.html index 8815c91b5..91f33178d 100644 --- a/customize.dist/src/fragments/index.html +++ b/customize.dist/src/fragments/index.html @@ -40,7 +40,7 @@ --> - +
diff --git a/customize.dist/src/toolbar.less b/customize.dist/src/toolbar.less index 7bdd1caae..af45fe057 100644 --- a/customize.dist/src/toolbar.less +++ b/customize.dist/src/toolbar.less @@ -39,6 +39,7 @@ } .cryptpad-lag { + box-sizing: content-box; vertical-align: top; height: 16px; width: 16px; diff --git a/customize.dist/toolbar.css b/customize.dist/toolbar.css index 1814fa993..4d31b6d78 100644 --- a/customize.dist/toolbar.css +++ b/customize.dist/toolbar.css @@ -39,6 +39,7 @@ float: right; } .cryptpad-toolbar .cryptpad-lag { + box-sizing: content-box; vertical-align: top; height: 16px; width: 16px; diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index 8ce10d64a..09f44d3d9 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -432,7 +432,9 @@ define([ cb(err, data); }); }; - + var setLSAttribute = common.setLSAttribute = function (attr, value) { + localStorage[attr] = value; + }; // STORAGE var getPadAttribute = common.getPadAttribute = function (attr, cb, legacy) { @@ -445,6 +447,9 @@ define([ cb(err, data); }); }; + var getLSAttribute = common.getLSAttribute = function (attr) { + return localStorage[attr]; + }; // STORAGE diff --git a/www/file/main.js b/www/file/main.js index 79f2aa8fb..73066590a 100644 --- a/www/file/main.js +++ b/www/file/main.js @@ -747,13 +747,13 @@ define([ var $span = $(this); var value; if ($span.hasClass('foldername')) { - value = files[SORT_FOLDER_DESC]; - files[SORT_FOLDER_DESC] = value ? false : true; + value = Cryptpad.getLSAttribute(SORT_FOLDER_DESC); + Cryptpad.setLSAttribute(SORT_FOLDER_DESC, value ? false : true); refresh(); return; } - value = files[SORT_FILE_BY]; - var descValue = files[SORT_FILE_DESC]; + value = Cryptpad.getLSAttribute(SORT_FILE_BY); + var descValue = Cryptpad.getLSAttribute(SORT_FILE_DESC); if ($span.hasClass('filename')) { if (value === '') { descValue = descValue ? false : true; @@ -775,17 +775,17 @@ define([ } }); } - files[SORT_FILE_BY] = value; - files[SORT_FILE_DESC] = descValue; + Cryptpad.setLSAttribute(SORT_FILE_BY, value); + Cryptpad.setLSAttribute(SORT_FILE_DESC, descValue); refresh(); }; var addFolderSortIcon = function ($list) { var $icon = $sortAscIcon.clone(); - if (files[SORT_FOLDER_DESC]) { + if (Cryptpad.getLSAttribute(SORT_FOLDER_DESC)) { $icon = $sortDescIcon.clone(); } - if (typeof(files[SORT_FOLDER_DESC]) !== "undefined") { + if (typeof(Cryptpad.getLSAttribute(SORT_FOLDER_DESC)) !== "undefined") { $list.find('.foldername').prepend($icon); } }; @@ -801,12 +801,12 @@ define([ }; var addFileSortIcon = function ($list) { var $icon = $sortAscIcon.clone(); - if (files[SORT_FILE_DESC]) { + if (Cryptpad.getLSAttribute(SORT_FILE_DESC)) { $icon = $sortDescIcon.clone(); } var classSorted; - if (files[SORT_FILE_BY] === '') { classSorted = 'filename'; } - else if (files[SORT_FILE_BY]) { classSorted = files[SORT_FILE_BY]; } + if (Cryptpad.getLSAttribute(SORT_FILE_BY) === '') { classSorted = 'filename'; } + else if (Cryptpad.getLSAttribute(SORT_FILE_BY)) { classSorted = Cryptpad.getLSAttribute(SORT_FILE_BY); } if (classSorted) { $list.find('.' + classSorted).prepend($icon); } @@ -895,7 +895,7 @@ define([ var $fileHeader = getFileListHeader(false); $container.append($fileHeader); var keys = unsorted; - var sortedFiles = sortElements(false, [UNSORTED], keys, files[SORT_FILE_BY], !files[SORT_FILE_DESC], true); + var sortedFiles = sortElements(false, [UNSORTED], keys, Cryptpad.getLSAttribute(SORT_FILE_BY), !Cryptpad.getLSAttribute(SORT_FILE_DESC), true); sortedFiles.forEach(function (href) { var file = filesOp.getFileData(href); if (!file) { @@ -928,7 +928,7 @@ define([ var $fileHeader = getFileListHeader(false); $container.append($fileHeader); var keys = allfiles; - var sortedFiles = sortElements(false, [FILES_DATA], keys, files[SORT_FILE_BY], !files[SORT_FILE_DESC], false, true); + var sortedFiles = sortElements(false, [FILES_DATA], keys, Cryptpad.getLSAttribute(SORT_FILE_BY), !Cryptpad.getLSAttribute(SORT_FILE_DESC), false, true); sortedFiles.forEach(function (file) { var $icon = $fileIcon.clone(); var $name = $('', { 'class': 'file-element element' }); @@ -969,8 +969,8 @@ define([ }); }); }); - var sortedFolders = sortTrashElements(true, filesList, null, !files[SORT_FOLDER_DESC]); - var sortedFiles = sortTrashElements(false, filesList, files[SORT_FILE_BY], !files[SORT_FILE_DESC]); + var sortedFolders = sortTrashElements(true, filesList, null, !Cryptpad.getLSAttribute(SORT_FOLDER_DESC)); + var sortedFiles = sortTrashElements(false, filesList, Cryptpad.getLSAttribute(SORT_FILE_BY), !Cryptpad.getLSAttribute(SORT_FILE_DESC)); if (filesOp.hasSubfolder(root, true)) { $list.append($folderHeader); } sortedFolders.forEach(function (f) { var $element = createElement([TRASH], f.spath, root, true); @@ -1044,8 +1044,8 @@ define([ if (filesOp.hasSubfolder(root)) { $list.append($folderHeader); } // display sub directories var keys = Object.keys(root); - var sortedFolders = sortElements(true, path, keys, null, !files[SORT_FOLDER_DESC]); - var sortedFiles = sortElements(false, path, keys, files[SORT_FILE_BY], !files[SORT_FILE_DESC]); + var sortedFolders = sortElements(true, path, keys, null, !Cryptpad.getLSAttribute(SORT_FOLDER_DESC)); + var sortedFiles = sortElements(false, path, keys, Cryptpad.getLSAttribute(SORT_FILE_BY), !Cryptpad.getLSAttribute(SORT_FILE_DESC)); sortedFolders.forEach(function (key) { if (filesOp.isFile(root[key])) { return; } var $element = createElement(path, key, root, true); @@ -1436,6 +1436,8 @@ define([ // don't initialize until the store is ready. Cryptpad.ready(function () { + var storeObj = Cryptpad.getStore().getProxy && Cryptpad.getStore().getProxy().proxy ? Cryptpad.getStore().getProxy() : undefined; + Cryptpad.styleAlerts(); if (window.location.hash && window.location.hash === "#iframe") { @@ -1458,8 +1460,13 @@ define([ logging: false }; - var rt = window.rt = module.rt = Listmap.create(listmapConfig); - rt.proxy.on('create', function (info) { + var proxy; + if (storeObj) { proxy = storeObj.proxy; } + else { + var rt = window.rt = module.rt = Listmap.create(listmapConfig); + proxy = rt.proxy; + } + var onCreate = function (info) { var realtime = module.realtime = info.realtime; var editHash = APP.editHash = !readOnly ? Cryptpad.getEditHashFromKeys(info.channel, secret.keys) : undefined; @@ -1505,25 +1512,40 @@ define([ $userBlock.append($backupButton); } - }).on('ready', function () { - module.files = rt.proxy; - if (JSON.stringify(rt.proxy) === '{}') { + }; + var onReady = function () { + module.files = proxy; + if (JSON.stringify(proxy) === '{}') { var store = Cryptpad.getStore(true); store.get(Cryptpad.storageKey, function (err, s) { - rt.proxy[FILES_DATA] = s; + proxy[FILES_DATA] = s; initLocalStorage(); - init(rt.proxy); + init(proxy); }); return; } initLocalStorage(); - init(rt.proxy); + init(proxy); APP.userList.onChange(); - }) - .on('disconnect', function (info) { + }; + var onDisconnect = function (info) { setEditable(false); console.error('err'); Cryptpad.alert(Messages.common_connectionLost); + }; + + if (storeObj) { + onCreate(storeObj.info); + onReady(); + } else { + proxy.on('create', function (info) { + onCreate(info); + }).on('ready', function () { + onReady(); + }); + } + proxy.on('disconnect', function () { + onDisconnect(); }); });