Added share bookmark to form

This commit is contained in:
Juan Gilsanz Polo
2024-04-14 20:44:34 +02:00
parent d42b960381
commit ca74c53ad2
7 changed files with 54 additions and 7 deletions

View File

@@ -4,9 +4,9 @@
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 3 /// Locales: 3
/// Strings: 561 (187 per locale) /// Strings: 570 (190 per locale)
/// ///
/// Built on 2024-04-03 at 23:27 UTC /// Built on 2024-04-14 at 18:40 UTC
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: type=lint // ignore_for_file: type=lint
@@ -348,6 +348,7 @@ class _StringsBookmarksAddBookmarkEn {
String get title => 'Title'; String get title => 'Title';
String get description => 'Description'; String get description => 'Description';
String get markAsUnread => 'Mark as unread'; String get markAsUnread => 'Mark as unread';
String get markAsUnreadDescription => 'Unread bookmarks can be filtered for, and marked as read after you had a chance to look at them.';
String get notes => 'Notes'; String get notes => 'Notes';
String get addNotes => 'Add notes'; String get addNotes => 'Add notes';
String get tags => 'Tags'; String get tags => 'Tags';
@@ -360,6 +361,8 @@ class _StringsBookmarksAddBookmarkEn {
String get errorSavingBookmark => 'An error occured when saving the new bookmark.'; String get errorSavingBookmark => 'An error occured when saving the new bookmark.';
String get leaveEmptyUseWebsiteTitle => 'Leave empty to use the website\'s title.'; String get leaveEmptyUseWebsiteTitle => 'Leave empty to use the website\'s title.';
String get leaveEmptyUseWebsiteDescription => 'Leave empty to use the website\'s description.'; String get leaveEmptyUseWebsiteDescription => 'Leave empty to use the website\'s description.';
String get share => 'Share';
String get shareDescription => 'Share this bookmark with other registered users and anonymous users.';
} }
// Path: bookmarks.search // Path: bookmarks.search
@@ -731,6 +734,7 @@ class _StringsBookmarksAddBookmarkEs implements _StringsBookmarksAddBookmarkEn {
@override String get title => 'Title'; @override String get title => 'Title';
@override String get description => 'Description'; @override String get description => 'Description';
@override String get markAsUnread => 'Marcar como no leído'; @override String get markAsUnread => 'Marcar como no leído';
@override String get markAsUnreadDescription => 'Los marcadores no leídos pueden filtrarse y marcarse como leídos después de haberlos consultado.';
@override String get notes => 'Notas'; @override String get notes => 'Notas';
@override String get addNotes => 'Añadir notas'; @override String get addNotes => 'Añadir notas';
@override String get tags => 'Etiquetas'; @override String get tags => 'Etiquetas';
@@ -743,6 +747,8 @@ class _StringsBookmarksAddBookmarkEs implements _StringsBookmarksAddBookmarkEn {
@override String get errorSavingBookmark => 'Ocurrió un error al guardar el nuevo marcador.'; @override String get errorSavingBookmark => 'Ocurrió un error al guardar el nuevo marcador.';
@override String get leaveEmptyUseWebsiteTitle => 'Dejar vacío para usar el título del sitio web.'; @override String get leaveEmptyUseWebsiteTitle => 'Dejar vacío para usar el título del sitio web.';
@override String get leaveEmptyUseWebsiteDescription => 'Dejar vacío para usar la descripción del sitio web.'; @override String get leaveEmptyUseWebsiteDescription => 'Dejar vacío para usar la descripción del sitio web.';
@override String get share => 'Compartir';
@override String get shareDescription => 'Comparte este marcador con otros usuarios registrados y usuarios anónimos.';
} }
// Path: bookmarks.search // Path: bookmarks.search
@@ -1114,6 +1120,7 @@ class _StringsBookmarksAddBookmarkTr implements _StringsBookmarksAddBookmarkEn {
@override String get title => 'Başlık'; @override String get title => 'Başlık';
@override String get description => 'ıklama'; @override String get description => 'ıklama';
@override String get markAsUnread => 'Okunmadı olarak işaretle'; @override String get markAsUnread => 'Okunmadı olarak işaretle';
@override String get markAsUnreadDescription => 'Unread bookmarks can be filtered for, and marked as read after you had a chance to look at them.';
@override String get notes => 'Notlar'; @override String get notes => 'Notlar';
@override String get addNotes => 'Not ekle'; @override String get addNotes => 'Not ekle';
@override String get tags => 'Etiketler'; @override String get tags => 'Etiketler';
@@ -1126,6 +1133,8 @@ class _StringsBookmarksAddBookmarkTr implements _StringsBookmarksAddBookmarkEn {
@override String get errorSavingBookmark => 'Yeni yer işareti kaydedilirken bir hata oluştu.'; @override String get errorSavingBookmark => 'Yeni yer işareti kaydedilirken bir hata oluştu.';
@override String get leaveEmptyUseWebsiteTitle => 'Web sitesinin başlığını kullanmak için boş bırakın.'; @override String get leaveEmptyUseWebsiteTitle => 'Web sitesinin başlığını kullanmak için boş bırakın.';
@override String get leaveEmptyUseWebsiteDescription => 'Web sitesinin açıklamasını kullanmak için boş bırakın.'; @override String get leaveEmptyUseWebsiteDescription => 'Web sitesinin açıklamasını kullanmak için boş bırakın.';
@override String get share => 'Share';
@override String get shareDescription => 'Share this bookmark with other registered users and anonymous users.';
} }
// Path: bookmarks.search // Path: bookmarks.search
@@ -1353,6 +1362,7 @@ extension on Translations {
case 'bookmarks.addBookmark.title': return 'Title'; case 'bookmarks.addBookmark.title': return 'Title';
case 'bookmarks.addBookmark.description': return 'Description'; case 'bookmarks.addBookmark.description': return 'Description';
case 'bookmarks.addBookmark.markAsUnread': return 'Mark as unread'; case 'bookmarks.addBookmark.markAsUnread': return 'Mark as unread';
case 'bookmarks.addBookmark.markAsUnreadDescription': return 'Unread bookmarks can be filtered for, and marked as read after you had a chance to look at them.';
case 'bookmarks.addBookmark.notes': return 'Notes'; case 'bookmarks.addBookmark.notes': return 'Notes';
case 'bookmarks.addBookmark.addNotes': return 'Add notes'; case 'bookmarks.addBookmark.addNotes': return 'Add notes';
case 'bookmarks.addBookmark.tags': return 'Tags'; case 'bookmarks.addBookmark.tags': return 'Tags';
@@ -1365,6 +1375,8 @@ extension on Translations {
case 'bookmarks.addBookmark.errorSavingBookmark': return 'An error occured when saving the new bookmark.'; case 'bookmarks.addBookmark.errorSavingBookmark': return 'An error occured when saving the new bookmark.';
case 'bookmarks.addBookmark.leaveEmptyUseWebsiteTitle': return 'Leave empty to use the website\'s title.'; case 'bookmarks.addBookmark.leaveEmptyUseWebsiteTitle': return 'Leave empty to use the website\'s title.';
case 'bookmarks.addBookmark.leaveEmptyUseWebsiteDescription': return 'Leave empty to use the website\'s description.'; case 'bookmarks.addBookmark.leaveEmptyUseWebsiteDescription': return 'Leave empty to use the website\'s description.';
case 'bookmarks.addBookmark.share': return 'Share';
case 'bookmarks.addBookmark.shareDescription': return 'Share this bookmark with other registered users and anonymous users.';
case 'bookmarks.search.searchBookmarks': return 'Search bookmarks'; case 'bookmarks.search.searchBookmarks': return 'Search bookmarks';
case 'bookmarks.search.clearSearch': return 'Clear search'; case 'bookmarks.search.clearSearch': return 'Clear search';
case 'bookmarks.search.inputSearchTerm': return 'Input a search term'; case 'bookmarks.search.inputSearchTerm': return 'Input a search term';
@@ -1548,6 +1560,7 @@ extension on _StringsEs {
case 'bookmarks.addBookmark.title': return 'Title'; case 'bookmarks.addBookmark.title': return 'Title';
case 'bookmarks.addBookmark.description': return 'Description'; case 'bookmarks.addBookmark.description': return 'Description';
case 'bookmarks.addBookmark.markAsUnread': return 'Marcar como no leído'; case 'bookmarks.addBookmark.markAsUnread': return 'Marcar como no leído';
case 'bookmarks.addBookmark.markAsUnreadDescription': return 'Los marcadores no leídos pueden filtrarse y marcarse como leídos después de haberlos consultado.';
case 'bookmarks.addBookmark.notes': return 'Notas'; case 'bookmarks.addBookmark.notes': return 'Notas';
case 'bookmarks.addBookmark.addNotes': return 'Añadir notas'; case 'bookmarks.addBookmark.addNotes': return 'Añadir notas';
case 'bookmarks.addBookmark.tags': return 'Etiquetas'; case 'bookmarks.addBookmark.tags': return 'Etiquetas';
@@ -1560,6 +1573,8 @@ extension on _StringsEs {
case 'bookmarks.addBookmark.errorSavingBookmark': return 'Ocurrió un error al guardar el nuevo marcador.'; case 'bookmarks.addBookmark.errorSavingBookmark': return 'Ocurrió un error al guardar el nuevo marcador.';
case 'bookmarks.addBookmark.leaveEmptyUseWebsiteTitle': return 'Dejar vacío para usar el título del sitio web.'; case 'bookmarks.addBookmark.leaveEmptyUseWebsiteTitle': return 'Dejar vacío para usar el título del sitio web.';
case 'bookmarks.addBookmark.leaveEmptyUseWebsiteDescription': return 'Dejar vacío para usar la descripción del sitio web.'; case 'bookmarks.addBookmark.leaveEmptyUseWebsiteDescription': return 'Dejar vacío para usar la descripción del sitio web.';
case 'bookmarks.addBookmark.share': return 'Compartir';
case 'bookmarks.addBookmark.shareDescription': return 'Comparte este marcador con otros usuarios registrados y usuarios anónimos.';
case 'bookmarks.search.searchBookmarks': return 'Buscar marcadores'; case 'bookmarks.search.searchBookmarks': return 'Buscar marcadores';
case 'bookmarks.search.clearSearch': return 'Limpiar búsqueda'; case 'bookmarks.search.clearSearch': return 'Limpiar búsqueda';
case 'bookmarks.search.inputSearchTerm': return 'Introduce un término de búsqueda'; case 'bookmarks.search.inputSearchTerm': return 'Introduce un término de búsqueda';
@@ -1743,6 +1758,7 @@ extension on _StringsTr {
case 'bookmarks.addBookmark.title': return 'Başlık'; case 'bookmarks.addBookmark.title': return 'Başlık';
case 'bookmarks.addBookmark.description': return 'ıklama'; case 'bookmarks.addBookmark.description': return 'ıklama';
case 'bookmarks.addBookmark.markAsUnread': return 'Okunmadı olarak işaretle'; case 'bookmarks.addBookmark.markAsUnread': return 'Okunmadı olarak işaretle';
case 'bookmarks.addBookmark.markAsUnreadDescription': return 'Unread bookmarks can be filtered for, and marked as read after you had a chance to look at them.';
case 'bookmarks.addBookmark.notes': return 'Notlar'; case 'bookmarks.addBookmark.notes': return 'Notlar';
case 'bookmarks.addBookmark.addNotes': return 'Not ekle'; case 'bookmarks.addBookmark.addNotes': return 'Not ekle';
case 'bookmarks.addBookmark.tags': return 'Etiketler'; case 'bookmarks.addBookmark.tags': return 'Etiketler';
@@ -1755,6 +1771,8 @@ extension on _StringsTr {
case 'bookmarks.addBookmark.errorSavingBookmark': return 'Yeni yer işareti kaydedilirken bir hata oluştu.'; case 'bookmarks.addBookmark.errorSavingBookmark': return 'Yeni yer işareti kaydedilirken bir hata oluştu.';
case 'bookmarks.addBookmark.leaveEmptyUseWebsiteTitle': return 'Web sitesinin başlığını kullanmak için boş bırakın.'; case 'bookmarks.addBookmark.leaveEmptyUseWebsiteTitle': return 'Web sitesinin başlığını kullanmak için boş bırakın.';
case 'bookmarks.addBookmark.leaveEmptyUseWebsiteDescription': return 'Web sitesinin açıklamasını kullanmak için boş bırakın.'; case 'bookmarks.addBookmark.leaveEmptyUseWebsiteDescription': return 'Web sitesinin açıklamasını kullanmak için boş bırakın.';
case 'bookmarks.addBookmark.share': return 'Share';
case 'bookmarks.addBookmark.shareDescription': return 'Share this bookmark with other registered users and anonymous users.';
case 'bookmarks.search.searchBookmarks': return 'Yer işaretlerini ara'; case 'bookmarks.search.searchBookmarks': return 'Yer işaretlerini ara';
case 'bookmarks.search.clearSearch': return 'Aramayı temizle'; case 'bookmarks.search.clearSearch': return 'Aramayı temizle';
case 'bookmarks.search.inputSearchTerm': return 'Bir arama terimi girin'; case 'bookmarks.search.inputSearchTerm': return 'Bir arama terimi girin';

View File

@@ -80,6 +80,7 @@
"title": "Title", "title": "Title",
"description": "Description", "description": "Description",
"markAsUnread": "Mark as unread", "markAsUnread": "Mark as unread",
"markAsUnreadDescription": "Unread bookmarks can be filtered for, and marked as read after you had a chance to look at them.",
"notes": "Notes", "notes": "Notes",
"addNotes": "Add notes", "addNotes": "Add notes",
"tags": "Tags", "tags": "Tags",
@@ -91,7 +92,9 @@
"bookmarkSavedSuccessfully": "Bookmark saved successfully.", "bookmarkSavedSuccessfully": "Bookmark saved successfully.",
"errorSavingBookmark": "An error occured when saving the new bookmark.", "errorSavingBookmark": "An error occured when saving the new bookmark.",
"leaveEmptyUseWebsiteTitle": "Leave empty to use the website's title.", "leaveEmptyUseWebsiteTitle": "Leave empty to use the website's title.",
"leaveEmptyUseWebsiteDescription": "Leave empty to use the website's description." "leaveEmptyUseWebsiteDescription": "Leave empty to use the website's description.",
"share": "Share",
"shareDescription": "Share this bookmark with other registered users and anonymous users."
}, },
"search": { "search": {
"searchBookmarks": "Search bookmarks", "searchBookmarks": "Search bookmarks",

View File

@@ -80,6 +80,7 @@
"title": "Title", "title": "Title",
"description": "Description", "description": "Description",
"markAsUnread": "Marcar como no leído", "markAsUnread": "Marcar como no leído",
"markAsUnreadDescription": "Los marcadores no leídos pueden filtrarse y marcarse como leídos después de haberlos consultado.",
"notes": "Notas", "notes": "Notas",
"addNotes": "Añadir notas", "addNotes": "Añadir notas",
"tags": "Etiquetas", "tags": "Etiquetas",
@@ -91,7 +92,9 @@
"bookmarkSavedSuccessfully": "Marcador guardado correctamente", "bookmarkSavedSuccessfully": "Marcador guardado correctamente",
"errorSavingBookmark": "Ocurrió un error al guardar el nuevo marcador.", "errorSavingBookmark": "Ocurrió un error al guardar el nuevo marcador.",
"leaveEmptyUseWebsiteTitle": "Dejar vacío para usar el título del sitio web.", "leaveEmptyUseWebsiteTitle": "Dejar vacío para usar el título del sitio web.",
"leaveEmptyUseWebsiteDescription": "Dejar vacío para usar la descripción del sitio web." "leaveEmptyUseWebsiteDescription": "Dejar vacío para usar la descripción del sitio web.",
"share": "Compartir",
"shareDescription": "Comparte este marcador con otros usuarios registrados y usuarios anónimos."
}, },
"search": { "search": {
"searchBookmarks": "Buscar marcadores", "searchBookmarks": "Buscar marcadores",

View File

@@ -80,6 +80,7 @@
"title": "Başlık", "title": "Başlık",
"description": "Açıklama", "description": "Açıklama",
"markAsUnread": "Okunmadı olarak işaretle", "markAsUnread": "Okunmadı olarak işaretle",
"markAsUnreadDescription": "Unread bookmarks can be filtered for, and marked as read after you had a chance to look at them.",
"notes": "Notlar", "notes": "Notlar",
"addNotes": "Not ekle", "addNotes": "Not ekle",
"tags": "Etiketler", "tags": "Etiketler",
@@ -91,7 +92,9 @@
"bookmarkSavedSuccessfully": "Yer işareti başarıyla kaydedildi.", "bookmarkSavedSuccessfully": "Yer işareti başarıyla kaydedildi.",
"errorSavingBookmark": "Yeni yer işareti kaydedilirken bir hata oluştu.", "errorSavingBookmark": "Yeni yer işareti kaydedilirken bir hata oluştu.",
"leaveEmptyUseWebsiteTitle": "Web sitesinin başlığını kullanmak için boş bırakın.", "leaveEmptyUseWebsiteTitle": "Web sitesinin başlığını kullanmak için boş bırakın.",
"leaveEmptyUseWebsiteDescription": "Web sitesinin açıklamasını kullanmak için boş bırakın." "leaveEmptyUseWebsiteDescription": "Web sitesinin açıklamasını kullanmak için boş bırakın.",
"share": "Share",
"shareDescription": "Share this bookmark with other registered users and anonymous users."
}, },
"search": { "search": {
"searchBookmarks": "Yer işaretlerini ara", "searchBookmarks": "Yer işaretlerini ara",

View File

@@ -16,6 +16,7 @@ class BookmarkFormModel {
List<String> tags; List<String> tags;
final TextEditingController notesController; final TextEditingController notesController;
int? editBookmarkId; int? editBookmarkId;
bool share;
BookmarkFormModel({ BookmarkFormModel({
required this.urlController, required this.urlController,
@@ -30,5 +31,6 @@ class BookmarkFormModel {
required this.tags, required this.tags,
required this.notesController, required this.notesController,
this.editBookmarkId, this.editBookmarkId,
this.share = false,
}); });
} }

View File

@@ -63,6 +63,7 @@ class BookmarkForm extends _$BookmarkForm {
state.tags = bookmark.tagNames ?? []; state.tags = bookmark.tagNames ?? [];
state.notesController.text = bookmark.notes ?? ''; state.notesController.text = bookmark.notes ?? '';
state.markAsUnread = bookmark.unread ?? false; state.markAsUnread = bookmark.unread ?? false;
state.share = bookmark.shared ?? false;
} }
void initializeProviderUrl(String url) { void initializeProviderUrl(String url) {
@@ -112,6 +113,11 @@ class BookmarkForm extends _$BookmarkForm {
ref.notifyListeners(); ref.notifyListeners();
} }
void updateShare(bool value) {
state.share = value;
ref.notifyListeners();
}
void saveBookmark() async { void saveBookmark() async {
final newBookmark = SetBookmarkData( final newBookmark = SetBookmarkData(
url: state.urlController.text, url: state.urlController.text,
@@ -121,7 +127,7 @@ class BookmarkForm extends _$BookmarkForm {
: state.checkBookmark?.metadata?.description ?? '', : state.checkBookmark?.metadata?.description ?? '',
isArchived: false, isArchived: false,
unread: state.markAsUnread, unread: state.markAsUnread,
shared: false, shared: state.share,
tagNames: state.tags.join(","), tagNames: state.tags.join(","),
notes: state.notesController.text, notes: state.notesController.text,
); );

View File

@@ -133,7 +133,10 @@ class BookmarkFormModalState extends ConsumerState<BookmarkFormModal> {
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context), handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
), ),
SliverList.list( SliverList.list(
children: const [_ModalContent()], children: const [
_ModalContent(),
SizedBox(height: 16),
],
), ),
], ],
), ),
@@ -412,11 +415,20 @@ class _ModalContent extends ConsumerWidget {
SwitchListTile( SwitchListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4), contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
title: Text(t.bookmarks.addBookmark.markAsUnread), title: Text(t.bookmarks.addBookmark.markAsUnread),
subtitle: Text(t.bookmarks.addBookmark.markAsUnreadDescription),
value: provider.markAsUnread, value: provider.markAsUnread,
onChanged: provider.checkBookmark != null onChanged: provider.checkBookmark != null
? (v) => ref.read(bookmarkFormProvider.notifier).updateMarkAsUnread(v) ? (v) => ref.read(bookmarkFormProvider.notifier).updateMarkAsUnread(v)
: null, : null,
), ),
SwitchListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
title: Text(t.bookmarks.addBookmark.share),
subtitle: Text(t.bookmarks.addBookmark.shareDescription),
value: provider.share,
onChanged:
provider.checkBookmark != null ? (v) => ref.read(bookmarkFormProvider.notifier).updateShare(v) : null,
),
const SizedBox(height: 16), const SizedBox(height: 16),
], ],
); );