mirror of https://github.com/xwiki-labs/cryptpad
Don't load expired or deleted shared folders
This commit is contained in:
parent
7d89026d83
commit
6a80f49fe0
|
@ -366,7 +366,7 @@ define([
|
|||
|
||||
Store.getDeletedPads = function (clientId, data, cb) {
|
||||
if (!store.anon_rpc) { return void cb({error: 'ANON_RPC_NOT_READY'}); }
|
||||
var list = getCanonicalChannelList(true);
|
||||
var list = (data && data.list) || getCanonicalChannelList(true);
|
||||
if (!Array.isArray(list)) {
|
||||
return void cb({error: 'INVALID_FILE_LIST'});
|
||||
}
|
||||
|
@ -1313,11 +1313,45 @@ define([
|
|||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
var loadSharedFolders = function (waitFor) {
|
||||
var w = waitFor();
|
||||
store.sharedFolders = {};
|
||||
var shared = Util.find(store.proxy, ['drive', UserObject.SHARED_FOLDERS]) || {};
|
||||
Object.keys(shared).forEach(function (id) {
|
||||
var sf = shared[id];
|
||||
loadSharedFolder(id, sf, waitFor());
|
||||
// Check if any of our shared folder is expired or deleted by its owner.
|
||||
// If we don't check now, Listmap will create an empty proxy if it no longer exists on
|
||||
// the server.
|
||||
nThen(function (waitFor) {
|
||||
var edPublic = store.proxy.edPublic;
|
||||
var checkExpired = Object.keys(shared).filter(function (fId) {
|
||||
var d = shared[fId];
|
||||
return (Array.isArray(d.owners) && d.owners.length &&
|
||||
(!edPublic || d.owners.indexOf(edPublic) === -1))
|
||||
|| (d.expire && d.expire < (+new Date()));
|
||||
}).map(function (fId) {
|
||||
return shared[fId].channel;
|
||||
});
|
||||
Store.getDeletedPads(null, {list: checkExpired}, waitFor(function (chans) {
|
||||
if (chans && chans.error) { return void console.error(chans.error); }
|
||||
if (!Array.isArray(chans) || !chans.length) { return; }
|
||||
var toDelete = [];
|
||||
Object.keys(shared).forEach(function (fId) {
|
||||
if (chans.indexOf(shared[fId].channel) !== -1
|
||||
&& toDelete.indexOf(fId) === -1) {
|
||||
toDelete.push(fId);
|
||||
}
|
||||
});
|
||||
toDelete.forEach(function (fId) {
|
||||
var paths = store.userObject.findFile(Number(fId));
|
||||
store.userObject.delete(paths, waitFor(), true);
|
||||
delete shared[fId];
|
||||
});
|
||||
}));
|
||||
}).nThen(function () {
|
||||
Object.keys(shared).forEach(function (id) {
|
||||
var sf = shared[id];
|
||||
loadSharedFolder(id, sf, function () {
|
||||
w();
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -1355,6 +1389,7 @@ define([
|
|||
progress: progress
|
||||
});
|
||||
});
|
||||
Store.initAnonRpc(null, null, waitFor());
|
||||
}).nThen(function (waitFor) {
|
||||
postMessage(clientId, 'LOADING_DRIVE', {
|
||||
state: 3
|
||||
|
|
|
@ -2,8 +2,9 @@ define([
|
|||
'/common/userObject.js',
|
||||
'/common/common-util.js',
|
||||
'/common/common-hash.js',
|
||||
'/customize/messages.js',
|
||||
'/bower_components/nthen/index.js',
|
||||
], function (UserObject, Util, Hash, nThen) {
|
||||
], function (UserObject, Util, Hash, Messages, nThen) {
|
||||
|
||||
|
||||
var getConfig = function (Env) {
|
||||
|
@ -361,8 +362,8 @@ define([
|
|||
|
||||
// 2b. load the proxy
|
||||
Env.loadSharedFolder(id, folderData, waitFor(function (rt, metadata) {
|
||||
if (data.name && !rt.proxy.metadata) { // Creating a new shared folder
|
||||
rt.proxy.metadata = {title: data.name};
|
||||
if (!rt.proxy.metadata) { // Creating a new shared folder
|
||||
rt.proxy.metadata = {title: data.name || Messages.fm_newFolder}; // XXX
|
||||
}
|
||||
// If we're importing a folder, check its serverside metadata
|
||||
if (data.folderData && metadata) {
|
||||
|
|
|
@ -40,9 +40,12 @@ define([
|
|||
var log = config.log || logging;
|
||||
var logError = config.logError || logging;
|
||||
var debug = exp.debug = config.debug || logging;
|
||||
|
||||
exp.fixFiles = function () {}; // Overriden by OuterFO
|
||||
|
||||
var error = exp.error = function() {
|
||||
exp.fixFiles();
|
||||
console.error.apply(console, arguments);
|
||||
exp.fixFiles();
|
||||
};
|
||||
|
||||
if (config.outer) {
|
||||
|
@ -139,6 +142,9 @@ define([
|
|||
|
||||
// Data from filesData
|
||||
var getTitle = exp.getTitle = function (file, type) {
|
||||
if (isSharedFolder(file)) {
|
||||
return '??'; // XXX
|
||||
}
|
||||
var data = getFileData(file);
|
||||
if (!file || !data || !(data.href || data.roHref)) {
|
||||
error("getTitle called with a non-existing file id: ", file, data);
|
||||
|
|
|
@ -3192,6 +3192,7 @@ define([
|
|||
var title = manager.getTitle(id);
|
||||
titles.push(title);
|
||||
var paths = manager.findFile(id);
|
||||
console.log(title, id, paths);
|
||||
manager.delete(paths, refresh);
|
||||
});
|
||||
if (!titles.length) { return; }
|
||||
|
|
Loading…
Reference in New Issue