aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Colomb <src@andre.colomb.de>2024-03-03 21:09:57 +0100
committerGitHub <noreply@github.com>2024-03-03 21:09:57 +0100
commit5fdab1bf1132817771db4159caba8d0380153460 (patch)
treef32f63bd4451f6ac3420f6450c700e46812bf1e8
parent13a6d43f0b63faa5b55d357124401c854dbf0b30 (diff)
downloadsyncthing-5fdab1bf1132817771db4159caba8d0380153460.tar.gz
syncthing-5fdab1bf1132817771db4159caba8d0380153460.zip
gui: Show encryption status for devices sharing folder (ref #8808) (#9355)
This re-implements the stalled enhancement from #8808. Thanks @Craeckie for the idea and first implementation draft! If a folder is shared to a device with encryption, add a lock icon in front of the device name under "Shared With" in the folder details panel. Be careful not to add whitespace caused by line wraps in HTML source code, which would defeat the purpose of keeping the icon glued to the name by a non-breaking space. Apply the same lock icon for the list of folders shared with a device.
-rw-r--r--gui/default/index.html10
-rwxr-xr-xgui/default/syncthing/core/syncthingController.js9
2 files changed, 17 insertions, 2 deletions
diff --git a/gui/default/index.html b/gui/default/index.html
index 26f4e8655..5a825a7e6 100644
--- a/gui/default/index.html
+++ b/gui/default/index.html
@@ -587,7 +587,10 @@
<th><span class="fas fa-fw fa-share-alt"></span>&nbsp;<span translate>Shared With</span></th>
<td class="text-right no-overflow-ellipse overflow-break-word">
<span ng-repeat="device in otherDevices(folder.devices)">
- <span ng-switch="completion[device.deviceID][folder.id].remoteState"><!-- Avoid stray space...
+ <span ng-if="folder.type !== 'receiveencrypted' && device.encryptionPassword" class="text-nowrap">
+ <span class="fa fa-lock"></span>&nbsp;<!-- Avoid stray space...
+ --></span><!-- Avoid stray space...
+ --><span ng-switch="completion[device.deviceID][folder.id].remoteState"><!-- Avoid stray space...
--><span ng-switch-when="notSharing" data-original-title="{{'The remote device has not accepted sharing this folder.' | translate}}" tooltip>{{deviceName(devices[device.deviceID])}}<sup>1</sup></span><!-- Avoid stray space...
--><span ng-switch-when="paused" data-original-title="{{'The remote device has paused this folder.' | translate}}" tooltip>{{deviceName(devices[device.deviceID])}}<sup>2</sup></span><!-- Avoid stray space...
--><span ng-switch-default>{{deviceName(devices[device.deviceID])}}</span><!-- Avoid stray space...
@@ -943,7 +946,10 @@
<th><span class="fas fa-fw fa-folder"></span>&nbsp;<span translate>Folders</span></th>
<td class="text-right no-overflow-ellipse overflow-break-word">
<span ng-repeat="folderID in deviceFolders(deviceCfg)">
- <span ng-switch="completion[deviceCfg.deviceID][folderID].remoteState"><!-- Avoid stray space...
+ <span ng-if="folderIsSharedEncrypted(folderID, deviceCfg.deviceID)" class="text-nowrap">
+ <span class="fa fa-lock"></span>&nbsp;<!-- Avoid stray space...
+ --></span><!-- Avoid stray space...
+ --><span ng-switch="completion[deviceCfg.deviceID][folderID].remoteState"><!-- Avoid stray space...
--><span ng-switch-when="notSharing" data-original-title="{{'The remote device has not accepted sharing this folder.' | translate}}" tooltip>{{folderLabel(folderID)}}<sup>1</sup></span><!-- Avoid stray space...
--><span ng-switch-when="paused" data-original-title="{{'The remote device has paused this folder.' | translate}}" tooltip>{{folderLabel(folderID)}}<sup>2</sup></span><!-- Avoid stray space...
--><span ng-switch-default>{{folderLabel(folderID)}}</span><!-- Avoid stray space...
diff --git a/gui/default/syncthing/core/syncthingController.js b/gui/default/syncthing/core/syncthingController.js
index 54b0a96ee..51f08d050 100755
--- a/gui/default/syncthing/core/syncthingController.js
+++ b/gui/default/syncthing/core/syncthingController.js
@@ -2662,6 +2662,15 @@ angular.module('syncthing.core')
+ '&device=' + encodeURIComponent(deviceID));
};
+ $scope.folderIsSharedEncrypted = function (folderID, deviceID) {
+ var folderCfg = $scope.folders[folderID];
+ if (!folderCfg || folderCfg.type === 'receiveencrypted') return false;
+
+ return folderCfg.devices.some(function (device) {
+ return device.deviceID === deviceID && device.encryptionPassword !== '';
+ });
+ };
+
$scope.folderHasUnacceptedDevices = function (folderCfg) {
for (var deviceID in $scope.completion) {
if (deviceID in $scope.devices