Use user object as default store in file manager

pull/1/head
yflory 8 years ago
parent 4aed585574
commit c359c27997

@ -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);

@ -80,7 +80,7 @@
</tbody>
</table>-->
<iframe src="/file/#iframe" id="fileManagerIframe" style="display: none;"></iframe>
<iframe src="/file/#iframe" id="fileManagerIframe"></iframe>
<div id="buttons" class="buttons">
<a id="create-pad" class="button create" href="/pad/" data-localization="button_newpad"></a>

@ -40,7 +40,7 @@
</tbody>
</table>-->
<iframe src="/file/#iframe" id="fileManagerIframe" style="display: none;"></iframe>
<iframe src="/file/#iframe" id="fileManagerIframe"></iframe>
<div id="buttons" class="buttons">
<a id="create-pad" class="button create" href="/pad/" data-localization="button_newpad"></a>

@ -39,6 +39,7 @@
}
.cryptpad-lag {
box-sizing: content-box;
vertical-align: top;
height: 16px;
width: 16px;

@ -39,6 +39,7 @@
float: right;
}
.cryptpad-toolbar .cryptpad-lag {
box-sizing: content-box;
vertical-align: top;
height: 16px;
width: 16px;

@ -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

@ -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 = $('<span>', { '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();
});
});

Loading…
Cancel
Save