mirror of https://github.com/xwiki-labs/cryptpad
Restore full hash when safe hash is deleted from the drive
This commit is contained in:
parent
9961bffd48
commit
464eaee49a
|
@ -845,6 +845,7 @@ define([
|
||||||
pad.onConnectEvent = Util.mkEvent();
|
pad.onConnectEvent = Util.mkEvent();
|
||||||
pad.onErrorEvent = Util.mkEvent();
|
pad.onErrorEvent = Util.mkEvent();
|
||||||
pad.onMetadataEvent = Util.mkEvent();
|
pad.onMetadataEvent = Util.mkEvent();
|
||||||
|
pad.onChannelDeleted = Util.mkEvent();
|
||||||
|
|
||||||
pad.requestAccess = function (data, cb) {
|
pad.requestAccess = function (data, cb) {
|
||||||
postMessage("REQUEST_PAD_ACCESS", data, cb);
|
postMessage("REQUEST_PAD_ACCESS", data, cb);
|
||||||
|
@ -1753,6 +1754,7 @@ define([
|
||||||
PAD_CONNECT: common.padRpc.onConnectEvent.fire,
|
PAD_CONNECT: common.padRpc.onConnectEvent.fire,
|
||||||
PAD_ERROR: common.padRpc.onErrorEvent.fire,
|
PAD_ERROR: common.padRpc.onErrorEvent.fire,
|
||||||
PAD_METADATA: common.padRpc.onMetadataEvent.fire,
|
PAD_METADATA: common.padRpc.onMetadataEvent.fire,
|
||||||
|
CHANNEL_DELETED: common.padRpc.onChannelDeleted.fire,
|
||||||
// Drive
|
// Drive
|
||||||
DRIVE_LOG: common.drive.onLog.fire,
|
DRIVE_LOG: common.drive.onLog.fire,
|
||||||
DRIVE_CHANGE: common.drive.onChange.fire,
|
DRIVE_CHANGE: common.drive.onChange.fire,
|
||||||
|
@ -1896,7 +1898,7 @@ define([
|
||||||
anonHash: LocalStore.getFSHash(),
|
anonHash: LocalStore.getFSHash(),
|
||||||
localToken: tryParsing(localStorage.getItem(Constants.tokenKey)), // TODO move this to LocalStore ?
|
localToken: tryParsing(localStorage.getItem(Constants.tokenKey)), // TODO move this to LocalStore ?
|
||||||
language: common.getLanguage(),
|
language: common.getLanguage(),
|
||||||
driveEvents: rdyCfg.driveEvents // Boolean
|
driveEvents: true //rdyCfg.driveEvents // Boolean
|
||||||
};
|
};
|
||||||
// if a pad is created from a file
|
// if a pad is created from a file
|
||||||
if (sessionStorage[Constants.newPadFileData]) {
|
if (sessionStorage[Constants.newPadFileData]) {
|
||||||
|
|
|
@ -1232,6 +1232,23 @@ define([
|
||||||
cb(res || viewRes || {});
|
cb(res || viewRes || {});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Hidden hash: if a pad is deleted, we may have to switch back to full hash
|
||||||
|
// in some tabs
|
||||||
|
Store.checkDeletedPad = function (channel) {
|
||||||
|
if (!channel) { return; }
|
||||||
|
|
||||||
|
// Check if the pad is still stored in one of our drives
|
||||||
|
Store.getPadDataFromChannel(null, {
|
||||||
|
channel: channel,
|
||||||
|
isFile: true // we don't care if it's view or edit
|
||||||
|
}, function (res) {
|
||||||
|
// If it is stored, abort
|
||||||
|
if (Object.keys(res).length) { return; }
|
||||||
|
// Otherwise, tell all the tabs that this channel was deleted and give them the hrefs
|
||||||
|
broadcast([], "CHANNEL_DELETED", channel);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Messaging (manage friends from the userlist)
|
// Messaging (manage friends from the userlist)
|
||||||
Store.answerFriendRequest = function (clientId, obj, cb) {
|
Store.answerFriendRequest = function (clientId, obj, cb) {
|
||||||
var value = obj.value;
|
var value = obj.value;
|
||||||
|
@ -2127,6 +2144,12 @@ define([
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (o && !n && Array.isArray(p) && (p[0] === UserObject.FILES_DATA ||
|
||||||
|
(p[0] === 'drive' && p[1] === UserObject.FILES_DATA))) {
|
||||||
|
setTimeout(function () {
|
||||||
|
Store.checkDeletedPad(o && o.channel);
|
||||||
|
});
|
||||||
|
}
|
||||||
sendDriveEvent('DRIVE_CHANGE', {
|
sendDriveEvent('DRIVE_CHANGE', {
|
||||||
id: fId,
|
id: fId,
|
||||||
old: o,
|
old: o,
|
||||||
|
|
|
@ -93,6 +93,12 @@ define([
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (o && !n && Array.isArray(p) && (p[0] === UserObject.FILES_DATA ||
|
||||||
|
(p[0] === 'drive' && p[1] === UserObject.FILES_DATA))) {
|
||||||
|
setTimeout(function () {
|
||||||
|
ctx.Store.checkDeletedPad(o && o.channel);
|
||||||
|
});
|
||||||
|
}
|
||||||
team.sendEvent('DRIVE_CHANGE', {
|
team.sendEvent('DRIVE_CHANGE', {
|
||||||
id: fId,
|
id: fId,
|
||||||
old: o,
|
old: o,
|
||||||
|
|
|
@ -771,6 +771,9 @@ define([
|
||||||
toUnpin.forEach(function (chan) {
|
toUnpin.forEach(function (chan) {
|
||||||
if (toKeep.indexOf(chan) === -1) {
|
if (toKeep.indexOf(chan) === -1) {
|
||||||
unpinList.push(chan);
|
unpinList.push(chan);
|
||||||
|
|
||||||
|
// Check if need need to restore a full hash (hidden hash deleted from drive)
|
||||||
|
Env.Store.checkDeletedPad(chan);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -783,7 +786,16 @@ define([
|
||||||
};
|
};
|
||||||
// Empty the trash (main drive only)
|
// Empty the trash (main drive only)
|
||||||
var _emptyTrash = function (Env, data, cb) {
|
var _emptyTrash = function (Env, data, cb) {
|
||||||
Env.user.userObject.emptyTrash(cb);
|
Env.user.userObject.emptyTrash(function (err, toClean) {
|
||||||
|
cb();
|
||||||
|
|
||||||
|
// Check if need need to restore a full hash (hidden hash deleted from drive)
|
||||||
|
if (!Array.isArray(toClean)) { return; }
|
||||||
|
var toCheck = Util.deduplicateString(toClean);
|
||||||
|
toCheck.forEach(function (chan) {
|
||||||
|
Env.Store.checkDeletedPad(chan);
|
||||||
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
// Rename files or folders
|
// Rename files or folders
|
||||||
var _rename = function (Env, data, cb) {
|
var _rename = function (Env, data, cb) {
|
||||||
|
|
|
@ -1324,7 +1324,16 @@ define([
|
||||||
}
|
}
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
|
// If our channel was deleted from all of our drives, sitch back to full hash
|
||||||
|
// in the address bar
|
||||||
|
Cryptpad.padRpc.onChannelDeleted.reg(function (channel) {
|
||||||
|
if (channel !== secret.channel) { return; }
|
||||||
|
var ohc = window.onhashchange;
|
||||||
|
window.onhashchange = function () {};
|
||||||
|
window.location.href = currentPad.href;
|
||||||
|
window.onhashchange = ohc;
|
||||||
|
ohc({reset: true});
|
||||||
|
});
|
||||||
|
|
||||||
// Join the netflux channel
|
// Join the netflux channel
|
||||||
var rtStarted = false;
|
var rtStarted = false;
|
||||||
|
|
Loading…
Reference in New Issue