mirror of https://github.com/xwiki-labs/cryptpad
Use offline state per shared folder in the drive
This commit is contained in:
parent
ebd007fdb9
commit
446cca0725
|
@ -327,6 +327,7 @@ button.primary:hover{
|
|||
if (!built) { return; }
|
||||
try {
|
||||
var node = document.querySelector('.cp-loading-progress');
|
||||
if (!node) { return; }
|
||||
if (node.parentNode) { node.parentNode.removeChild(node); }
|
||||
document.querySelector('.cp-loading-spinner-container').setAttribute('style', 'display:none;');
|
||||
document.querySelector('#cp-loading-message').setAttribute('style', 'display:block;');
|
||||
|
|
|
@ -42,6 +42,7 @@ define([
|
|||
|
||||
var APP = window.APP = {
|
||||
editable: false,
|
||||
online: true,
|
||||
mobile: function () {
|
||||
if (window.matchMedia) { return !window.matchMedia('(any-pointer:fine)').matches; }
|
||||
else { return $('body').width() <= 600; }
|
||||
|
@ -267,13 +268,25 @@ define([
|
|||
};
|
||||
|
||||
// Handle disconnect/reconnect
|
||||
var setEditable = function (state, isHistory) {
|
||||
// If isHistory and isSf are both false, update the "APP.online" flag
|
||||
// If isHistory is true, update the "APP.history" flag
|
||||
// isSf is used to detect offline shared folders: setEditable is called on displayDirectory
|
||||
var setEditable = function (state, isHistory, isSf) {
|
||||
if (APP.closed || !APP.$content || !$.contains(document.documentElement, APP.$content[0])) { return; }
|
||||
if (isHistory) {
|
||||
APP.history = !state;
|
||||
} else if (!isSf) {
|
||||
APP.online = state;
|
||||
}
|
||||
state = APP.online && !APP.history && state;
|
||||
APP.editable = !APP.readOnly && state;
|
||||
|
||||
if (!state) {
|
||||
APP.$content.addClass('cp-app-drive-readonly');
|
||||
if (!isHistory) {
|
||||
if (!APP.history || !APP.online) {
|
||||
$('#cp-app-drive-connection-state').show();
|
||||
} else {
|
||||
$('#cp-app-drive-connection-state').hide();
|
||||
}
|
||||
$('[draggable="true"]').attr('draggable', false);
|
||||
}
|
||||
|
@ -3670,6 +3683,15 @@ define([
|
|||
}
|
||||
|
||||
var readOnlyFolder = false;
|
||||
|
||||
// If the shared folder is offline, add the "DISCONNECTED" banner, otherwise
|
||||
// use the normal "editable" behavior (based on drive offline or history mode)
|
||||
if (sfId && manager.folders[sfId].offline) {
|
||||
setEditable(false, false, true);
|
||||
} else {
|
||||
setEditable(true, false, true);
|
||||
}
|
||||
|
||||
if (APP.readOnly) {
|
||||
// Read-only drive (team?)
|
||||
$content.prepend($readOnly.clone());
|
||||
|
|
|
@ -120,10 +120,13 @@ define([
|
|||
Store.getSharedFolder = function (clientId, data, cb) {
|
||||
var s = getStore(data.teamId);
|
||||
var id = data.id;
|
||||
var proxy;
|
||||
if (!s || !s.manager) { return void cb({ error: 'ENOTFOUND' }); }
|
||||
if (s.manager.folders[id]) {
|
||||
proxy = Util.clone(s.manager.folders[id].proxy);
|
||||
proxy.offline = Boolean(s.manager.folders[id].offline);
|
||||
// If it is loaded, return the shared folder proxy
|
||||
return void cb(s.manager.folders[id].proxy);
|
||||
return void cb(proxy);
|
||||
} else {
|
||||
// Otherwise, check if we know this shared folder
|
||||
var shared = Util.find(s.proxy, ['drive', UserObject.SHARED_FOLDERS]) || {};
|
||||
|
|
|
@ -40,6 +40,14 @@ define([
|
|||
userObject: userObject,
|
||||
leave: leave
|
||||
};
|
||||
if (proxy.on) {
|
||||
proxy.on('disconnect', function () {
|
||||
Env.folders[id].offline = true;
|
||||
});
|
||||
proxy.on('reconnect', function () {
|
||||
Env.folders[id].online = true;
|
||||
});
|
||||
}
|
||||
return userObject;
|
||||
};
|
||||
|
||||
|
|
|
@ -82,6 +82,8 @@ define([
|
|||
var readOnly = !secret.keys.editKeyStr;
|
||||
if (!manager || !manager.folders[fId]) { return; }
|
||||
manager.folders[fId].userObject.setReadOnly(readOnly, secret.keys.secondaryKey);
|
||||
|
||||
manager.folders[fId].offline = newObj.offline;
|
||||
}));
|
||||
});
|
||||
// Remove from memory folders that have been deleted from the drive remotely
|
||||
|
|
|
@ -93,6 +93,8 @@ define([
|
|||
var readOnly = !secret.keys.editKeyStr;
|
||||
if (!manager || !manager.folders[fId]) { return; }
|
||||
manager.folders[fId].userObject.setReadOnly(readOnly, secret.keys.secondaryKey);
|
||||
|
||||
manager.folders[fId].offline = newObj.offline;
|
||||
}));
|
||||
});
|
||||
// Remove from memory folders that have been deleted from the drive remotely
|
||||
|
|
Loading…
Reference in New Issue