From d0f8458dd25b20d39de531f9b4fa1f93216de6df Mon Sep 17 00:00:00 2001 From: yflory Date: Mon, 10 Feb 2020 14:43:22 +0100 Subject: [PATCH 1/4] Fix openincode in anon shared folders --- www/common/drive-ui.js | 28 +++++++++++++++++----------- www/drive/inner.js | 4 ++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 78510b6dd..e9610fae5 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -1175,13 +1175,9 @@ define([ } else if ($element.is('.cp-app-drive-element-noreadonly')) { hide.push('openro'); // Remove open 'view' mode } - // if it's not a plain text file - // XXX: there is a bug with this code in anon shared folder, so we disable it - if (APP.loggedIn || !APP.newSharedFolder) { - var metadata = manager.getFileData(manager.find(path)); - if (!metadata || !Util.isPlainTextFile(metadata.fileType, metadata.title)) { - hide.push('openincode'); - } + var metadata = manager.getFileData(manager.find(path)); + if (!metadata || !Util.isPlainTextFile(metadata.fileType, metadata.title)) { + hide.push('openincode'); } } else if ($element.is('.cp-app-drive-element-sharedf')) { if (containsFolder) { @@ -3237,21 +3233,23 @@ define([ var path = currentPath.slice(1); var root = Util.find(data, path); + var realPath = [ROOT, SHARED_FOLDER].concat(path); + if (manager.hasSubfolder(root)) { $list.append($folderHeader); } // display sub directories var keys = Object.keys(root); - var sortedFolders = sortElements(true, currentPath, keys, null, !getSortFolderDesc()); - var sortedFiles = sortElements(false, currentPath, keys, APP.store[SORT_FILE_BY], !getSortFileDesc()); + var sortedFolders = sortElements(true, realPath, keys, null, !getSortFolderDesc()); + var sortedFiles = sortElements(false, realPath, keys, APP.store[SORT_FILE_BY], !getSortFileDesc()); sortedFolders.forEach(function (key) { if (manager.isFile(root[key])) { return; } - var $element = createElement(currentPath, key, root, true); + var $element = createElement(realPath, key, root, true); $element.appendTo($list); }); if (manager.hasFile(root)) { $list.append($fileHeader); } // display files sortedFiles.forEach(function (key) { if (manager.isFolder(root[key])) { return; } - var $element = createElement(currentPath, key, root, false); + var $element = createElement(realPath, key, root, false); if (!$element) { return; } $element.appendTo($list); }); @@ -3973,6 +3971,14 @@ define([ common.sessionStorage.put(Constants.newPadTeamKey, APP.team, waitFor()); }).nThen(function () { common.openURL('/code/'); + // We need to restore sessionStorage for the next time we want to create a pad from this tab + // NOTE: the 100ms timeout is to fix a race condition in firefox where sessionStorage + // would be deleted before the new tab was created + setTimeout(function () { + common.sessionStorage.put(Constants.newPadFileData, '', function () {}); + common.sessionStorage.put(Constants.newPadPathKey, '', function () {}); + common.sessionStorage.put(Constants.newPadTeamKey, '', function () {}); + }, 100); }); } diff --git a/www/drive/inner.js b/www/drive/inner.js index a5325a651..f5251f284 100644 --- a/www/drive/inner.js +++ b/www/drive/inner.js @@ -96,7 +96,11 @@ define([ var updateObject = function (sframeChan, obj, cb) { sframeChan.query('Q_DRIVE_GETOBJECT', null, function (err, newObj) { copyObjectValue(obj, newObj); + // If anon shared folder, make a virtual drive containing this folder if (!APP.loggedIn && APP.newSharedFolder) { + obj.drive.root = { + sf: APP.newSharedFolder + }; obj.drive.sharedFolders = obj.drive.sharedFolders || {}; obj.drive.sharedFolders[APP.newSharedFolder] = { href: APP.anonSFHref, From 830c401f50db417ddd6bf9423011ed6e04e635e1 Mon Sep 17 00:00:00 2001 From: yflory Date: Mon, 10 Feb 2020 14:54:35 +0100 Subject: [PATCH 2/4] Remove invalid option in context menu --- www/common/drive-ui.js | 1 + 1 file changed, 1 insertion(+) diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index e9610fae5..01025b6a1 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -1200,6 +1200,7 @@ define([ hide.push('collapseall'); } containsFolder = true; + hide.push('savelocal'); hide.push('openro'); hide.push('openincode'); hide.push('properties'); From 68a77885d4762839c89d098b29db8539b699088c Mon Sep 17 00:00:00 2001 From: ansuz Date: Mon, 10 Feb 2020 09:03:16 -0500 Subject: [PATCH 3/4] suppress some routine server logs --- lib/api.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/api.js b/lib/api.js index c13f8c7c8..bd5c99629 100644 --- a/lib/api.js +++ b/lib/api.js @@ -16,11 +16,14 @@ module.exports.create = function (config) { .on('channelOpen', historyKeeper.channelOpen) .on('sessionClose', function (userId, reason) { if (['BAD_MESSAGE', 'SOCKET_ERROR', 'SEND_MESSAGE_FAIL_2'].indexOf(reason) !== -1) { + if (reason && reason.code === 'ECONNRESET') { return; } return void log.error('SESSION_CLOSE_WITH_ERROR', { userId: userId, reason: reason, }); } + + if (reason && reason === 'SOCKET_CLOSED') { return; } log.verbose('SESSION_CLOSE_ROUTINE', { userId: userId, reason: reason, From b69261d1190e6695da84aea59fc7eb742572c26e Mon Sep 17 00:00:00 2001 From: yflory Date: Mon, 10 Feb 2020 15:10:36 +0100 Subject: [PATCH 4/4] Display the share modal after folder conversion to sf --- www/common/drive-ui.js | 95 ++++++++++++++++++++++--------------- www/common/proxy-manager.js | 4 +- 2 files changed, 59 insertions(+), 40 deletions(-) diff --git a/www/common/drive-ui.js b/www/common/drive-ui.js index 01025b6a1..e86fa3351 100644 --- a/www/common/drive-ui.js +++ b/www/common/drive-ui.js @@ -1936,6 +1936,44 @@ define([ }; var getIcon = UI.getIcon; + var createShareButton = function (id, $container) { + var $shareBlock = $('