Make prettier

This commit is contained in:
Philipp Heckel 2025-12-29 14:25:00 -05:00
parent 75f8928a8c
commit e22985cc8b
3 changed files with 37 additions and 16 deletions

View file

@ -167,6 +167,8 @@ class CustomHeaderFragment : DialogFragment() {
// Validate header name and check if a user already exists for this server
CoroutineScope(Dispatchers.Main).launch {
var isValid = true
val targetBaseUrl = if (header != null) header!!.baseUrl else baseUrl
if (headerName.isNotEmpty()) {
if (!validateHeaderName(headerName)) {
headerNameLayout.error = getString(R.string.custom_headers_dialog_error_invalid_name)
@ -174,20 +176,12 @@ class CustomHeaderFragment : DialogFragment() {
} else if (isReservedHeader(headerName)) {
headerNameLayout.error = getString(R.string.custom_headers_dialog_error_reserved_name)
isValid = false
} else if (headerName.equals("Authorization", ignoreCase = true)) {
// Check if a user exists for this server (async)
val targetBaseUrl = if (header != null) header!!.baseUrl else baseUrl
val userExists = if (this@CustomHeaderFragment::repository.isInitialized && validUrl(targetBaseUrl)) {
withContext(Dispatchers.IO) {
repository.getUser(targetBaseUrl) != null
}
} else {
false
}
if (userExists) {
headerNameLayout.error = getString(R.string.custom_headers_dialog_error_user_exists)
isValid = false
}
} else if (isDuplicateHeader(targetBaseUrl, headerName)) {
headerNameLayout.error = getString(R.string.custom_headers_dialog_error_duplicate)
isValid = false
} else if (headerName.equals("Authorization", ignoreCase = true) && hasUserForServer(targetBaseUrl)) {
headerNameLayout.error = getString(R.string.custom_headers_dialog_error_user_exists)
isValid = false
}
}
if (header == null) {
@ -228,6 +222,31 @@ class CustomHeaderFragment : DialogFragment() {
return reservedHeaders.contains(nameLower) || nameLower.startsWith("sec-websocket-")
}
private suspend fun isDuplicateHeader(baseUrl: String, headerName: String): Boolean {
if (!this::repository.isInitialized || !validUrl(baseUrl)) {
return false
}
val existingHeaders = withContext(Dispatchers.IO) {
repository.getCustomHeadersForServer(baseUrl)
}
return existingHeaders.any { existingHeader ->
// When editing, exclude the current header being edited
val isCurrentHeader = header != null &&
existingHeader.baseUrl == header!!.baseUrl &&
existingHeader.name == header!!.name
!isCurrentHeader && existingHeader.name.equals(headerName, ignoreCase = true)
}
}
private suspend fun hasUserForServer(baseUrl: String): Boolean {
if (!this::repository.isInitialized || !validUrl(baseUrl)) {
return false
}
return withContext(Dispatchers.IO) {
repository.getUser(baseUrl) != null
}
}
companion object {
const val TAG = "NtfyCustomHeaderFragment"
private const val BUNDLE_BASE_URL = "baseUrl"

View file

@ -360,6 +360,7 @@
<string name="custom_headers_dialog_error_invalid_name">Ungültige Zeichen im Header-Namen</string>
<string name="custom_headers_dialog_error_reserved_name">Dieser Header ist reserviert und wird von ntfy gesetzt</string>
<string name="custom_headers_dialog_error_user_exists">Authorization-Header kann nicht hinzugefügt werden, wenn ein Benutzer für diesen Server konfiguriert ist</string>
<string name="custom_headers_dialog_error_duplicate">Ein Header mit diesem Namen existiert bereits für diesen Server</string>
<string name="custom_headers_dialog_name_hint">Header-Name (z.B. CF-Access-Client-Id)</string>
<string name="custom_headers_dialog_value_hint">Wert (z.B. 9f3c2e4a1b2d4e)</string>
<string name="custom_headers_dialog_description_add">Einen benutzerdefinierten HTTP-Header hinzufügen, der mit jeder Anfrage an den angegebenen Server gesendet wird.</string>

View file

@ -467,8 +467,8 @@
<string name="user_dialog_button_save">Save</string>
<!-- Custom headers dialog -->
<string name="custom_headers_dialog_title_add">Add Custom Header</string>
<string name="custom_headers_dialog_title_edit">Edit Custom Header</string>
<string name="custom_headers_dialog_title_add">Add custom header</string>
<string name="custom_headers_dialog_title_edit">Edit custom header</string>
<string name="custom_headers_dialog_base_url_hint">Service URL</string>
<string name="custom_headers_dialog_name_hint">Header name (e.g. CF-Access-Client-Id)</string>
<string name="custom_headers_dialog_value_hint">Value (e.g. 9f3c2e4a1b2d4e)</string>
@ -477,6 +477,7 @@
<string name="custom_headers_dialog_error_invalid_name">Header name contains invalid characters</string>
<string name="custom_headers_dialog_error_reserved_name">This header is reserved and set by ntfy</string>
<string name="custom_headers_dialog_error_user_exists">Cannot add Authorization header if a user is configured for this server</string>
<string name="custom_headers_dialog_error_duplicate">A header with this name already exists for this server</string>
<string name="custom_headers_dialog_button_add">Add</string>
<string name="custom_headers_dialog_button_save">Save</string>
<string name="custom_headers_dialog_button_delete">Delete</string>