all: Automatic/disabled folder-config when receive-encrypted (#7327)
This commit is contained in:
@@ -250,7 +250,7 @@
|
||||
</div>
|
||||
<div class="panel-footer clearfix">
|
||||
<div class="pull-right">
|
||||
<button type="button" class="btn btn-sm btn-success" ng-click="addFolderAndShare(folderID, offeringDevice.label, deviceID)" ng-if="!folders[folderID]">
|
||||
<button type="button" class="btn btn-sm btn-success" ng-click="addFolderAndShare(folderID, pendingFolder, deviceID)" ng-if="!folders[folderID]">
|
||||
<span class="fas fa-check"></span> <span translate>Add</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-success" ng-click="shareFolderWithDevice(folderID, deviceID)" ng-if="folders[folderID]">
|
||||
@@ -417,7 +417,7 @@
|
||||
<span class="far fa-copy"></span> {{model[folder.id].localFiles | alwaysNumber | localeNumber}} 
|
||||
<span class="far fa-folder"></span> {{model[folder.id].localDirectories | alwaysNumber | localeNumber}} 
|
||||
<span class="far fa-hdd"></span> ~{{model[folder.id].localBytes | binary}}B<!-- get rid of the annoying trailing whitespace
|
||||
--><span ng-if="model[folder.id].ignorePatterns"><br/><i><small translate class="text-muted">Reduced by ignore patterns</small></i></span>
|
||||
--><span ng-if="model[folder.id].ignorePatterns"><br/><i><small translate class="text-muted">Reduced by ignore patterns</small></i></span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -51,6 +51,7 @@ angular.module('syncthing.core')
|
||||
$scope.globalChangeEvents = {};
|
||||
$scope.metricRates = false;
|
||||
$scope.folderPathErrors = {};
|
||||
$scope.currentSharing = {};
|
||||
$scope.currentFolder = {};
|
||||
$scope.currentDevice = {};
|
||||
$scope.ignores = {
|
||||
@@ -276,7 +277,8 @@ angular.module('syncthing.core')
|
||||
arg.data.added.forEach(function (rejected) {
|
||||
var offeringDevice = {
|
||||
time: arg.time,
|
||||
label: rejected.folderLabel
|
||||
label: rejected.folderLabel,
|
||||
receiveEncrypted: rejected.receiveEncrypted,
|
||||
};
|
||||
console.log("rejected folder", rejected.folderID, "from device:", rejected.deviceID, offeringDevice);
|
||||
|
||||
@@ -1831,12 +1833,31 @@ angular.module('syncthing.core')
|
||||
$scope.currentFolder.path = pathJoin($scope.config.defaults.folder.path, newvalue);
|
||||
});
|
||||
|
||||
$scope.fsWatcherToggled = function () {
|
||||
if ($scope.currentFolder.fsWatcherEnabled) {
|
||||
$scope.currentFolder.rescanIntervalS = 3600;
|
||||
} else {
|
||||
$scope.currentFolder.rescanIntervalS = 60;
|
||||
$scope.setFSWatcherIntervalDefault = function () {
|
||||
var defaultRescanIntervals = [60, 3600, 3600*24];
|
||||
if (defaultRescanIntervals.indexOf($scope.currentFolder.rescanIntervalS) === -1) {
|
||||
return;
|
||||
}
|
||||
var idx;
|
||||
if ($scope.currentFolder.fsWatcherEnabled) {
|
||||
idx = 1;
|
||||
} else if ($scope.currentFolder.type === 'receiveencrypted') {
|
||||
idx = 2;
|
||||
} else {
|
||||
idx = 0;
|
||||
}
|
||||
$scope.currentFolder.rescanIntervalS = defaultRescanIntervals[idx];
|
||||
};
|
||||
|
||||
$scope.setDefaultsForFolderType = function () {
|
||||
if ($scope.currentFolder.type === 'receiveencrypted') {
|
||||
$scope.currentFolder.fsWatcherEnabled = false;
|
||||
$scope.currentFolder.ignorePerms = true;
|
||||
delete $scope.currentFolder.versioning;
|
||||
} else {
|
||||
$scope.currentFolder.fsWatcherEnabled = true;
|
||||
}
|
||||
$scope.setFSWatcherIntervalDefault();
|
||||
};
|
||||
|
||||
$scope.loadFormIntoScope = function (form) {
|
||||
@@ -1857,6 +1878,7 @@ angular.module('syncthing.core')
|
||||
|
||||
function editFolderModal() {
|
||||
initVersioningEditing();
|
||||
$scope.currentFolder._recvEnc = $scope.currentFolder.type === 'receiveencrypted';
|
||||
$scope.folderPathErrors = {};
|
||||
$scope.folderEditor.$setPristine();
|
||||
$('#editFolder').modal().one('shown.bs.tab', function (e) {
|
||||
@@ -1996,13 +2018,20 @@ angular.module('syncthing.core')
|
||||
});
|
||||
};
|
||||
|
||||
$scope.addFolderAndShare = function (folderID, folderLabel, device) {
|
||||
$scope.addFolderAndShare = function (folderID, pendingFolder, device) {
|
||||
addFolderInit(folderID).then(function() {
|
||||
$scope.currentFolder.viewFlags = {
|
||||
importFromOtherDevice: true
|
||||
};
|
||||
$scope.currentSharing.selected[device] = true;
|
||||
$scope.currentFolder.label = folderLabel;
|
||||
$scope.currentFolder.label = pendingFolder.offeredBy[device].label;
|
||||
for (var k in pendingFolder.offeredBy) {
|
||||
if (pendingFolder.offeredBy[k].receiveEncrypted) {
|
||||
$scope.currentFolder.type = "receiveencrypted";
|
||||
$scope.setDefaultsForFolderType();
|
||||
break;
|
||||
}
|
||||
}
|
||||
editFolderModal();
|
||||
});
|
||||
};
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<li class="active"><a data-toggle="tab" href="#folder-general"><span class="fas fa-cog"></span> <span translate>General</span></a></li>
|
||||
<li><a data-toggle="tab" href="#folder-sharing"><span class="fas fa-share-alt"></span> <span translate>Sharing</span></a></li>
|
||||
<li><a data-toggle="tab" href="#folder-versioning"><span class="fas fa-copy"></span> <span translate>File Versioning</span></a></li>
|
||||
<li ng-if="!editingDefaults"><a data-toggle="tab" href="#folder-ignores"><span class="fas fa-filter"></span> <span translate>Ignore Patterns</span></a></li>
|
||||
<li ng-if="!editingDefaults" ng-class="{'disabled': currentFolder._recvEnc}"><a ng-attr-data-toggle="{{ currentFolder._recvEnc ? undefined : 'tab'}}" href="{{currentFolder._recvEnc ? '#' : '#folder-ignores'}}"><span class="fas fa-filter"></span> <span translate>Ignore Patterns</span></a></li>
|
||||
<li><a data-toggle="tab" href="#folder-advanced"><span class="fas fa-cogs"></span> <span translate>Advanced</span></a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
@@ -186,7 +186,7 @@
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label>
|
||||
<input type="checkbox" ng-model="currentFolder.fsWatcherEnabled" ng-change="fsWatcherToggled()" tooltip data-original-title="{{'Use notifications from the filesystem to detect changed items.' | translate }}"> <span translate>Watch for Changes</span>
|
||||
<input type="checkbox" ng-model="currentFolder.fsWatcherEnabled" ng-change="setFSWatcherIntervalDefault()" tooltip data-original-title="{{'Use notifications from the filesystem to detect changed items.' | translate }}"> <span translate>Watch for Changes</span>
|
||||
</label>
|
||||
<p translate class="help-block">Watching for changes discovers most changes without periodic scanning.</p>
|
||||
</div>
|
||||
@@ -205,7 +205,7 @@
|
||||
<div class="col-md-6 form-group">
|
||||
<label translate>Folder Type</label>
|
||||
<a href="https://docs.syncthing.net/users/foldertypes.html" target="_blank"><span class="fas fa-question-circle"></span> <span translate>Help</span></a>
|
||||
<select class="form-control" ng-model="currentFolder.type" ng-disabled="editingExisting && currentFolder.type === 'receiveencrypted'">
|
||||
<select class="form-control" ng-change="setDefaultsForFolderType()" ng-model="currentFolder.type" ng-disabled="editingExisting && currentFolder.type === 'receiveencrypted'">
|
||||
<option value="sendreceive" translate>Send & Receive</option>
|
||||
<option value="sendonly" translate>Send Only</option>
|
||||
<option value="receiveonly" translate>Receive Only</option>
|
||||
@@ -255,7 +255,7 @@
|
||||
</div>
|
||||
<div class="col-md-6 form-group">
|
||||
<label>
|
||||
<input type="checkbox" ng-model="currentFolder.ignorePerms" /> <span translate>Ignore Permissions</span>
|
||||
<input type="checkbox" ng-disabled="currentFolder._recvEnc" ng-model="currentFolder.ignorePerms" /> <span translate>Ignore Permissions</span>
|
||||
</label>
|
||||
<p translate class="help-block">
|
||||
Disables comparing and syncing file permissions. Useful on systems with nonexistent or custom permissions (e.g. FAT, exFAT, Synology, Android).
|
||||
|
||||
Reference in New Issue
Block a user