From 546be0ea633af858065624b2077b8d85b91ee245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Mon, 1 Feb 2021 04:32:28 +0100 Subject: [PATCH] Handle corrupted scope values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Due to a bug (fixed some commits ago) in the UsersController of the settings app the scope of the properties can be null (for example, if lookup server upload was disabled and the user then changed the display name in the profile information). In that case now the scope menu icon shows an error to inform the user. The scope value will not change when other properties are modified until the user chooses an explicit value from the menu. Note that until a scope is explicitly set the property will behave as if it is private. Signed-off-by: Daniel Calviño Sánchez --- apps/settings/js/federationsettingsview.js | 15 ++++++++++++++- .../templates/settings/personal/personal.info.php | 14 +++++++------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/apps/settings/js/federationsettingsview.js b/apps/settings/js/federationsettingsview.js index 9cefaf132f..2476c3f942 100644 --- a/apps/settings/js/federationsettingsview.js +++ b/apps/settings/js/federationsettingsview.js @@ -43,7 +43,14 @@ if (!scopeOnly) { self._config.set(field, $('#' + field).val()); } - self._config.set(field + 'Scope', $('#' + field + 'scope').val()); + // A scope could have been stored as null due to a previous bug. + // Null values should be kept as such until the user explicitly + // sets the right value, but they will be returned as empty + // strings in the template (which would overwrite the null value + // if sent). Due to this an extra class is needed to + // differentiate them. + var initialScopeValue = $('#' + field + 'scope').hasClass('corrupted-scope-value') ? undefined : $('#' + field + 'scope').val(); + self._config.set(field + 'Scope', initialScopeValue); // Set inputs whenever model values change if (!scopeOnly) { @@ -219,6 +226,12 @@ $icon.addClass('icon-link'); $icon.removeClass('hidden'); break; + case '': + case null: + case undefined: + $icon.addClass('icon-error'); + $icon.removeClass('hidden'); + break; } } }); diff --git a/apps/settings/templates/settings/personal/personal.info.php b/apps/settings/templates/settings/personal/personal.info.php index 1524403611..ea56b00bbd 100644 --- a/apps/settings/templates/settings/personal/personal.info.php +++ b/apps/settings/templates/settings/personal/personal.info.php @@ -70,7 +70,7 @@ script('settings', [ - + class="corrupted-scope-value">
@@ -124,7 +124,7 @@ script('settings', [ - + class="corrupted-scope-value">
@@ -172,7 +172,7 @@ script('settings', [ t('For password reset and notifications')); ?> - + class="corrupted-scope-value">
@@ -193,7 +193,7 @@ script('settings', [ placeholder="t('Your phone number')); ?>" autocomplete="on" autocapitalize="none" autocorrect="off" /> - + class="corrupted-scope-value"> @@ -215,7 +215,7 @@ script('settings', [ value="" autocomplete="on" autocapitalize="none" autocorrect="off" /> - + class="corrupted-scope-value"> @@ -268,7 +268,7 @@ script('settings', [ } ?> /> - + class="corrupted-scope-value"> @@ -321,7 +321,7 @@ script('settings', [ } ?> /> - + class="corrupted-scope-value">