Allow saving bookmarks with authenticated URLs

Bookmarks behind authentication couldn't be saved.
The app didn't allow saving when URL metadata check failed, even
though Linkding accepts these URLs.
The error message still displays to inform users that metadata
couldn't be fetched, but it no longer blocks saving.
This commit is contained in:
Stefano Tortarolo
2026-01-11 14:19:56 +01:00
parent 471bc20aab
commit 884cec19ef
7 changed files with 13 additions and 8 deletions

View File

@@ -502,7 +502,7 @@ extension on Translations {
case 'bookmarks.addBookmark.validateUrl': return 'Validate URL'; case 'bookmarks.addBookmark.validateUrl': return 'Validate URL';
case 'bookmarks.addBookmark.urlValid': return 'The URL is valid'; case 'bookmarks.addBookmark.urlValid': return 'The URL is valid';
case 'bookmarks.addBookmark.urlNotValid': return 'The URL is not valid'; case 'bookmarks.addBookmark.urlNotValid': return 'The URL is not valid';
case 'bookmarks.addBookmark.cannotCheckUrl': return 'The URL couldn\'t be checked'; case 'bookmarks.addBookmark.cannotCheckUrl': return 'The URL couldn\'t be checked, but you can save it anyway.';
case 'bookmarks.addBookmark.invalidUrl': return 'Invalid URL'; case 'bookmarks.addBookmark.invalidUrl': return 'Invalid URL';
case 'bookmarks.addBookmark.url': return 'URL'; case 'bookmarks.addBookmark.url': return 'URL';
case 'bookmarks.addBookmark.checkingUrl': return 'Checking URL...'; case 'bookmarks.addBookmark.checkingUrl': return 'Checking URL...';

View File

@@ -73,7 +73,7 @@
"validateUrl": "Validate URL", "validateUrl": "Validate URL",
"urlValid": "The URL is valid", "urlValid": "The URL is valid",
"urlNotValid": "The URL is not valid", "urlNotValid": "The URL is not valid",
"cannotCheckUrl": "The URL couldn't be checked", "cannotCheckUrl": "The URL couldn't be checked, but you can save it anyway.",
"invalidUrl": "Invalid URL", "invalidUrl": "Invalid URL",
"url": "URL", "url": "URL",
"checkingUrl": "Checking URL...", "checkingUrl": "Checking URL...",

View File

@@ -234,7 +234,7 @@ class _TranslationsBookmarksAddBookmarkEs implements TranslationsBookmarksAddBoo
@override String get validateUrl => 'Validar URL'; @override String get validateUrl => 'Validar URL';
@override String get urlValid => 'La URL es válida'; @override String get urlValid => 'La URL es válida';
@override String get urlNotValid => 'La URL no es válida'; @override String get urlNotValid => 'La URL no es válida';
@override String get cannotCheckUrl => 'No se pudo comprobar la URL'; @override String get cannotCheckUrl => 'No se pudo comprobar la URL, pero puedes guardarla de todas formas.';
@override String get invalidUrl => 'URL no válida'; @override String get invalidUrl => 'URL no válida';
@override String get checkingUrl => 'Comprobando URL...'; @override String get checkingUrl => 'Comprobando URL...';
@override String get title => 'Title'; @override String get title => 'Title';
@@ -500,7 +500,7 @@ extension on TranslationsEs {
case 'bookmarks.addBookmark.validateUrl': return 'Validar URL'; case 'bookmarks.addBookmark.validateUrl': return 'Validar URL';
case 'bookmarks.addBookmark.urlValid': return 'La URL es válida'; case 'bookmarks.addBookmark.urlValid': return 'La URL es válida';
case 'bookmarks.addBookmark.urlNotValid': return 'La URL no es válida'; case 'bookmarks.addBookmark.urlNotValid': return 'La URL no es válida';
case 'bookmarks.addBookmark.cannotCheckUrl': return 'No se pudo comprobar la URL'; case 'bookmarks.addBookmark.cannotCheckUrl': return 'No se pudo comprobar la URL, pero puedes guardarla de todas formas.';
case 'bookmarks.addBookmark.invalidUrl': return 'URL no válida'; case 'bookmarks.addBookmark.invalidUrl': return 'URL no válida';
case 'bookmarks.addBookmark.checkingUrl': return 'Comprobando URL...'; case 'bookmarks.addBookmark.checkingUrl': return 'Comprobando URL...';
case 'bookmarks.addBookmark.title': return 'Title'; case 'bookmarks.addBookmark.title': return 'Title';

View File

@@ -74,7 +74,7 @@
"validateUrl": "Validar URL", "validateUrl": "Validar URL",
"urlValid": "La URL es válida", "urlValid": "La URL es válida",
"urlNotValid": "La URL no es válida", "urlNotValid": "La URL no es válida",
"cannotCheckUrl": "No se pudo comprobar la URL", "cannotCheckUrl": "No se pudo comprobar la URL, pero puedes guardarla de todas formas.",
"invalidUrl": "URL no válida", "invalidUrl": "URL no válida",
"checkingUrl": "Comprobando URL...", "checkingUrl": "Comprobando URL...",
"title": "Title", "title": "Title",

View File

@@ -233,7 +233,7 @@ class _TranslationsBookmarksAddBookmarkTr implements TranslationsBookmarksAddBoo
@override String get validateUrl => 'Bağlantı adresini doğrula'; @override String get validateUrl => 'Bağlantı adresini doğrula';
@override String get urlValid => 'Bağlantı adresi geçerli'; @override String get urlValid => 'Bağlantı adresi geçerli';
@override String get urlNotValid => 'Bağlantı adresi geçerli değil'; @override String get urlNotValid => 'Bağlantı adresi geçerli değil';
@override String get cannotCheckUrl => 'Bağlantı adresi kontrol edilemedi'; @override String get cannotCheckUrl => 'Bağlantı adresi kontrol edilemedi, ancak yine de kaydedebilirsiniz.';
@override String get invalidUrl => 'Geçersiz bağlantı adresi'; @override String get invalidUrl => 'Geçersiz bağlantı adresi';
@override String get url => 'Bağlantı adresi'; @override String get url => 'Bağlantı adresi';
@override String get checkingUrl => 'Bağlantı adresi kontrol ediliyor...'; @override String get checkingUrl => 'Bağlantı adresi kontrol ediliyor...';
@@ -499,7 +499,7 @@ extension on TranslationsTr {
case 'bookmarks.addBookmark.validateUrl': return 'Bağlantı adresini doğrula'; case 'bookmarks.addBookmark.validateUrl': return 'Bağlantı adresini doğrula';
case 'bookmarks.addBookmark.urlValid': return 'Bağlantı adresi geçerli'; case 'bookmarks.addBookmark.urlValid': return 'Bağlantı adresi geçerli';
case 'bookmarks.addBookmark.urlNotValid': return 'Bağlantı adresi geçerli değil'; case 'bookmarks.addBookmark.urlNotValid': return 'Bağlantı adresi geçerli değil';
case 'bookmarks.addBookmark.cannotCheckUrl': return 'Bağlantı adresi kontrol edilemedi'; case 'bookmarks.addBookmark.cannotCheckUrl': return 'Bağlantı adresi kontrol edilemedi, ancak yine de kaydedebilirsiniz.';
case 'bookmarks.addBookmark.invalidUrl': return 'Geçersiz bağlantı adresi'; case 'bookmarks.addBookmark.invalidUrl': return 'Geçersiz bağlantı adresi';
case 'bookmarks.addBookmark.url': return 'Bağlantı adresi'; case 'bookmarks.addBookmark.url': return 'Bağlantı adresi';
case 'bookmarks.addBookmark.checkingUrl': return 'Bağlantı adresi kontrol ediliyor...'; case 'bookmarks.addBookmark.checkingUrl': return 'Bağlantı adresi kontrol ediliyor...';

View File

@@ -73,7 +73,7 @@
"validateUrl": "Bağlantı adresini doğrula", "validateUrl": "Bağlantı adresini doğrula",
"urlValid": "Bağlantı adresi geçerli", "urlValid": "Bağlantı adresi geçerli",
"urlNotValid": "Bağlantı adresi geçerli değil", "urlNotValid": "Bağlantı adresi geçerli değil",
"cannotCheckUrl": "Bağlantı adresi kontrol edilemedi", "cannotCheckUrl": "Bağlantı adresi kontrol edilemedi, ancak yine de kaydedebilirsiniz.",
"invalidUrl": "Geçersiz bağlantı adresi", "invalidUrl": "Geçersiz bağlantı adresi",
"url": "Bağlantı adresi", "url": "Bağlantı adresi",
"checkingUrl": "Bağlantı adresi kontrol ediliyor...", "checkingUrl": "Bağlantı adresi kontrol ediliyor...",

View File

@@ -115,7 +115,12 @@ class BookmarkForm extends _$BookmarkForm {
state.bookmarkValid = true; state.bookmarkValid = true;
state.checkBookmarkLoadStatus = LoadStatus.loaded; state.checkBookmarkLoadStatus = LoadStatus.loaded;
} else { } else {
// URL check failed (e.g., authenticated URLs), but if URL format is valid,
// allow saving anyway since Linkding accepts these URLs
state.checkBookmarkLoadStatus = LoadStatus.error; state.checkBookmarkLoadStatus = LoadStatus.error;
if (state.urlError == null) {
state.bookmarkValid = true;
}
} }
ref.notifyListeners(); ref.notifyListeners();
} }