From 884cec19ef6041cdb39ed0386fc103736c1d1f4a Mon Sep 17 00:00:00 2001 From: Stefano Tortarolo Date: Sun, 11 Jan 2026 14:19:56 +0100 Subject: [PATCH] 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. --- lib/i18n/strings_en.g.dart | 2 +- lib/i18n/strings_en.i18n.json | 2 +- lib/i18n/strings_es.g.dart | 4 ++-- lib/i18n/strings_es.i18n.json | 2 +- lib/i18n/strings_tr.g.dart | 4 ++-- lib/i18n/strings_tr.i18n.json | 2 +- lib/screens/bookmarks/provider/bookmark_form.provider.dart | 5 +++++ 7 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/i18n/strings_en.g.dart b/lib/i18n/strings_en.g.dart index d793ac3..1b10272 100644 --- a/lib/i18n/strings_en.g.dart +++ b/lib/i18n/strings_en.g.dart @@ -502,7 +502,7 @@ extension on Translations { case 'bookmarks.addBookmark.validateUrl': return 'Validate URL'; case 'bookmarks.addBookmark.urlValid': return 'The URL is 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.url': return 'URL'; case 'bookmarks.addBookmark.checkingUrl': return 'Checking URL...'; diff --git a/lib/i18n/strings_en.i18n.json b/lib/i18n/strings_en.i18n.json index 6c80cb9..c8b216f 100644 --- a/lib/i18n/strings_en.i18n.json +++ b/lib/i18n/strings_en.i18n.json @@ -73,7 +73,7 @@ "validateUrl": "Validate URL", "urlValid": "The URL is 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", "url": "URL", "checkingUrl": "Checking URL...", diff --git a/lib/i18n/strings_es.g.dart b/lib/i18n/strings_es.g.dart index ca8c499..2e48154 100644 --- a/lib/i18n/strings_es.g.dart +++ b/lib/i18n/strings_es.g.dart @@ -234,7 +234,7 @@ class _TranslationsBookmarksAddBookmarkEs implements TranslationsBookmarksAddBoo @override String get validateUrl => 'Validar URL'; @override String get urlValid => 'La URL 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 checkingUrl => 'Comprobando URL...'; @override String get title => 'Title'; @@ -500,7 +500,7 @@ extension on TranslationsEs { case 'bookmarks.addBookmark.validateUrl': return 'Validar URL'; case 'bookmarks.addBookmark.urlValid': return 'La URL 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.checkingUrl': return 'Comprobando URL...'; case 'bookmarks.addBookmark.title': return 'Title'; diff --git a/lib/i18n/strings_es.i18n.json b/lib/i18n/strings_es.i18n.json index 6d747e9..400a3be 100644 --- a/lib/i18n/strings_es.i18n.json +++ b/lib/i18n/strings_es.i18n.json @@ -74,7 +74,7 @@ "validateUrl": "Validar URL", "urlValid": "La URL 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", "checkingUrl": "Comprobando URL...", "title": "Title", diff --git a/lib/i18n/strings_tr.g.dart b/lib/i18n/strings_tr.g.dart index f873597..5fb8ec7 100644 --- a/lib/i18n/strings_tr.g.dart +++ b/lib/i18n/strings_tr.g.dart @@ -233,7 +233,7 @@ class _TranslationsBookmarksAddBookmarkTr implements TranslationsBookmarksAddBoo @override String get validateUrl => 'Bağlantı adresini doğrula'; @override String get urlValid => 'Bağlantı adresi geçerli'; @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 url => 'Bağlantı adresi'; @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.urlValid': return 'Bağlantı adresi geçerli'; 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.url': return 'Bağlantı adresi'; case 'bookmarks.addBookmark.checkingUrl': return 'Bağlantı adresi kontrol ediliyor...'; diff --git a/lib/i18n/strings_tr.i18n.json b/lib/i18n/strings_tr.i18n.json index b715c84..bc82578 100644 --- a/lib/i18n/strings_tr.i18n.json +++ b/lib/i18n/strings_tr.i18n.json @@ -73,7 +73,7 @@ "validateUrl": "Bağlantı adresini doğrula", "urlValid": "Bağlantı adresi geçerli", "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", "url": "Bağlantı adresi", "checkingUrl": "Bağlantı adresi kontrol ediliyor...", diff --git a/lib/screens/bookmarks/provider/bookmark_form.provider.dart b/lib/screens/bookmarks/provider/bookmark_form.provider.dart index db24195..87319c4 100644 --- a/lib/screens/bookmarks/provider/bookmark_form.provider.dart +++ b/lib/screens/bookmarks/provider/bookmark_form.provider.dart @@ -115,7 +115,12 @@ class BookmarkForm extends _$BookmarkForm { state.bookmarkValid = true; state.checkBookmarkLoadStatus = LoadStatus.loaded; } 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; + if (state.urlError == null) { + state.bookmarkValid = true; + } } ref.notifyListeners(); }