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`
///
/// 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
// ignore_for_file: type=lint
@@ -348,6 +348,7 @@ class _StringsBookmarksAddBookmarkEn {
String get title => 'Title';
String get description => 'Description';
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 addNotes => 'Add notes';
String get tags => 'Tags';
@@ -360,6 +361,8 @@ class _StringsBookmarksAddBookmarkEn {
String get errorSavingBookmark => 'An error occured when saving the new bookmark.';
String get leaveEmptyUseWebsiteTitle => 'Leave empty to use the website\'s title.';
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
@@ -731,6 +734,7 @@ class _StringsBookmarksAddBookmarkEs implements _StringsBookmarksAddBookmarkEn {
@override String get title => 'Title';
@override String get description => 'Description';
@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 addNotes => 'Añadir notas';
@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 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 share => 'Compartir';
@override String get shareDescription => 'Comparte este marcador con otros usuarios registrados y usuarios anónimos.';
}
// Path: bookmarks.search
@@ -1114,6 +1120,7 @@ class _StringsBookmarksAddBookmarkTr implements _StringsBookmarksAddBookmarkEn {
@override String get title => 'Başlık';
@override String get description => 'ıklama';
@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 addNotes => 'Not ekle';
@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 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 share => 'Share';
@override String get shareDescription => 'Share this bookmark with other registered users and anonymous users.';
}
// Path: bookmarks.search
@@ -1353,6 +1362,7 @@ extension on Translations {
case 'bookmarks.addBookmark.title': return 'Title';
case 'bookmarks.addBookmark.description': return 'Description';
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.addNotes': return 'Add notes';
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.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.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.clearSearch': return 'Clear search';
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.description': return 'Description';
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.addNotes': return 'Añadir notas';
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.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.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.clearSearch': return 'Limpiar 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.description': return 'ıklama';
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.addNotes': return 'Not ekle';
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.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.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.clearSearch': return 'Aramayı temizle';
case 'bookmarks.search.inputSearchTerm': return 'Bir arama terimi girin';

View File

@@ -80,6 +80,7 @@
"title": "Title",
"description": "Description",
"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",
"addNotes": "Add notes",
"tags": "Tags",
@@ -91,7 +92,9 @@
"bookmarkSavedSuccessfully": "Bookmark saved successfully.",
"errorSavingBookmark": "An error occured when saving the new bookmark.",
"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": {
"searchBookmarks": "Search bookmarks",

View File

@@ -80,6 +80,7 @@
"title": "Title",
"description": "Description",
"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",
"addNotes": "Añadir notas",
"tags": "Etiquetas",
@@ -91,7 +92,9 @@
"bookmarkSavedSuccessfully": "Marcador guardado correctamente",
"errorSavingBookmark": "Ocurrió un error al guardar el nuevo marcador.",
"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": {
"searchBookmarks": "Buscar marcadores",

View File

@@ -80,6 +80,7 @@
"title": "Başlık",
"description": "Açıklama",
"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",
"addNotes": "Not ekle",
"tags": "Etiketler",
@@ -91,7 +92,9 @@
"bookmarkSavedSuccessfully": "Yer işareti başarıyla kaydedildi.",
"errorSavingBookmark": "Yeni yer işareti kaydedilirken bir hata oluştu.",
"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": {
"searchBookmarks": "Yer işaretlerini ara",

View File

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

View File

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

View File

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