From f11b112f97b3fa1ab0ba74e53b3a4a61ac39e677 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Sat, 24 Feb 2024 01:45:57 +0100 Subject: [PATCH] Renamed links to bookmarks --- lib/config/app_screens.dart | 4 +- lib/i18n/strings.g.dart | 174 +++++++++--------- lib/i18n/strings_en.i18n.json | 12 +- lib/i18n/strings_es.i18n.json | 12 +- lib/models/data/bookmarks.dart | 6 +- lib/models/data/tags.dart | 6 +- lib/router/routes.dart | 4 +- .../model/add_link.model.dart | 4 +- .../model/links.model.dart | 4 +- .../provider/add_bookmark.provider.dart} | 33 ++-- .../provider/add_bookmark.provider.g.dart} | 157 ++-------------- .../provider/bookmarks.provider.dart} | 14 +- .../provider/bookmarks.provider.g.dart | 42 +++++ .../ui/add_bookmark_modal.dart} | 71 +++---- .../ui/bookmark_item.dart} | 0 .../ui/bookmarks.dart} | 23 +-- .../links/provider/links.provider.g.dart | 39 ---- .../search/provider/search.provider.dart | 4 +- .../search/provider/search.provider.g.dart | 13 +- .../search/ui/bookmarks_search_list.dart | 2 +- lib/screens/search/ui/search.dart | 4 +- lib/services/api_client.dart | 8 +- lib/utils/date_to_string.dart | 4 +- 23 files changed, 252 insertions(+), 388 deletions(-) rename lib/screens/{links => bookmarks}/model/add_link.model.dart (95%) rename lib/screens/{links => bookmarks}/model/links.model.dart (67%) rename lib/screens/{links/provider/add_link.provider.dart => bookmarks/provider/add_bookmark.provider.dart} (78%) rename lib/screens/{links/provider/add_link.provider.g.dart => bookmarks/provider/add_bookmark.provider.g.dart} (54%) rename lib/screens/{links/provider/links.provider.dart => bookmarks/provider/bookmarks.provider.dart} (63%) create mode 100644 lib/screens/bookmarks/provider/bookmarks.provider.g.dart rename lib/screens/{links/ui/add_link_modal.dart => bookmarks/ui/add_bookmark_modal.dart} (81%) rename lib/screens/{links/ui/link_item.dart => bookmarks/ui/bookmark_item.dart} (100%) rename lib/screens/{links/ui/links.dart => bookmarks/ui/bookmarks.dart} (86%) delete mode 100644 lib/screens/links/provider/links.provider.g.dart diff --git a/lib/config/app_screens.dart b/lib/config/app_screens.dart index 9391a5a..6d75296 100644 --- a/lib/config/app_screens.dart +++ b/lib/config/app_screens.dart @@ -6,9 +6,9 @@ import 'package:linkdy/router/paths.dart'; final appScreens = [ AppRoute( - icon: Icons.link_rounded, + icon: Icons.bookmarks_rounded, route: RoutesPaths.links, - name: t.links.links, + name: t.bookmarks.bookmarks, ), AppRoute( icon: Icons.search_rounded, diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index bb6097d..637874f 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -6,7 +6,7 @@ /// Locales: 2 /// Strings: 208 (104 per locale) /// -/// Built on 2024-02-24 at 00:26 UTC +/// Built on 2024-02-24 at 00:45 UTC // coverage:ignore-file // ignore_for_file: type=lint @@ -150,7 +150,7 @@ class Translations implements BaseTranslations { // Translations late final _StringsGenericEn generic = _StringsGenericEn._(_root); late final _StringsOnboardingEn onboarding = _StringsOnboardingEn._(_root); - late final _StringsLinksEn links = _StringsLinksEn._(_root); + late final _StringsBookmarksEn bookmarks = _StringsBookmarksEn._(_root); late final _StringsSearchEn search = _StringsSearchEn._(_root); late final _StringsSettingsEn settings = _StringsSettingsEn._(_root); late final _StringsWebviewEn webview = _StringsWebviewEn._(_root); @@ -204,16 +204,16 @@ class _StringsOnboardingEn { String get invalidToken => 'Invalid token.'; } -// Path: links -class _StringsLinksEn { - _StringsLinksEn._(this._root); +// Path: bookmarks +class _StringsBookmarksEn { + _StringsBookmarksEn._(this._root); final Translations _root; // ignore: unused_field // Translations - String get links => 'Links'; - late final _StringsLinksDatesEn dates = _StringsLinksDatesEn._(_root); - late final _StringsLinksAddLinkEn addLink = _StringsLinksAddLinkEn._(_root); + String get bookmarks => 'Bookmarks'; + late final _StringsBookmarksDatesEn dates = _StringsBookmarksDatesEn._(_root); + late final _StringsBookmarksAddBookmarkEn addBookmark = _StringsBookmarksAddBookmarkEn._(_root); } // Path: search @@ -287,9 +287,9 @@ class _StringsColorsEn { String get indigo => 'Indigo'; } -// Path: links.dates -class _StringsLinksDatesEn { - _StringsLinksDatesEn._(this._root); +// Path: bookmarks.dates +class _StringsBookmarksDatesEn { + _StringsBookmarksDatesEn._(this._root); final Translations _root; // ignore: unused_field @@ -298,14 +298,14 @@ class _StringsLinksDatesEn { String yesterdayAt({required Object time}) => 'Yesterday, ${time}'; } -// Path: links.addLink -class _StringsLinksAddLinkEn { - _StringsLinksAddLinkEn._(this._root); +// Path: bookmarks.addBookmark +class _StringsBookmarksAddBookmarkEn { + _StringsBookmarksAddBookmarkEn._(this._root); final Translations _root; // ignore: unused_field // Translations - String get addLink => 'Add new link'; + String get addBookmark => 'Add new bookmark'; String get bookmarkUrl => 'Bookmark URL'; String get bookmarkDetails => 'Bookmark details'; String get validateUrl => 'Validate URL'; @@ -325,8 +325,8 @@ class _StringsLinksAddLinkEn { String get tagNoWhitespaces => 'Tag cannot contain whitespaces'; String get addTag => 'Add tag'; String get others => 'Others'; - String get savingLink => 'Saving link...'; - String get errorSavingLink => 'An error occured when saving the new link.'; + String get savingBookmark => 'Saving 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 leaveEmptyUseWebsiteDescription => 'Leave empty to use the website\'s description.'; } @@ -400,7 +400,7 @@ class _StringsEs implements Translations { // Translations @override late final _StringsGenericEs generic = _StringsGenericEs._(_root); @override late final _StringsOnboardingEs onboarding = _StringsOnboardingEs._(_root); - @override late final _StringsLinksEs links = _StringsLinksEs._(_root); + @override late final _StringsBookmarksEs bookmarks = _StringsBookmarksEs._(_root); @override late final _StringsSearchEs search = _StringsSearchEs._(_root); @override late final _StringsSettingsEs settings = _StringsSettingsEs._(_root); @override late final _StringsWebviewEs webview = _StringsWebviewEs._(_root); @@ -454,16 +454,16 @@ class _StringsOnboardingEs implements _StringsOnboardingEn { @override String get invalidToken => 'Token no válido.'; } -// Path: links -class _StringsLinksEs implements _StringsLinksEn { - _StringsLinksEs._(this._root); +// Path: bookmarks +class _StringsBookmarksEs implements _StringsBookmarksEn { + _StringsBookmarksEs._(this._root); @override final _StringsEs _root; // ignore: unused_field // Translations - @override String get links => 'Enlaces'; - @override late final _StringsLinksDatesEs dates = _StringsLinksDatesEs._(_root); - @override late final _StringsLinksAddLinkEs addLink = _StringsLinksAddLinkEs._(_root); + @override String get bookmarks => 'Marcadores'; + @override late final _StringsBookmarksDatesEs dates = _StringsBookmarksDatesEs._(_root); + @override late final _StringsBookmarksAddBookmarkEs addBookmark = _StringsBookmarksAddBookmarkEs._(_root); } // Path: search @@ -537,9 +537,9 @@ class _StringsColorsEs implements _StringsColorsEn { @override String get indigo => 'Índigo'; } -// Path: links.dates -class _StringsLinksDatesEs implements _StringsLinksDatesEn { - _StringsLinksDatesEs._(this._root); +// Path: bookmarks.dates +class _StringsBookmarksDatesEs implements _StringsBookmarksDatesEn { + _StringsBookmarksDatesEs._(this._root); @override final _StringsEs _root; // ignore: unused_field @@ -548,14 +548,14 @@ class _StringsLinksDatesEs implements _StringsLinksDatesEn { @override String yesterdayAt({required Object time}) => 'Ayer, ${time}'; } -// Path: links.addLink -class _StringsLinksAddLinkEs implements _StringsLinksAddLinkEn { - _StringsLinksAddLinkEs._(this._root); +// Path: bookmarks.addBookmark +class _StringsBookmarksAddBookmarkEs implements _StringsBookmarksAddBookmarkEn { + _StringsBookmarksAddBookmarkEs._(this._root); @override final _StringsEs _root; // ignore: unused_field // Translations - @override String get addLink => 'Añadir nuevo enlace'; + @override String get addBookmark => 'Añadir nuevo marcador'; @override String get url => 'URL'; @override String get bookmarkUrl => 'URL del marcador'; @override String get bookmarkDetails => 'Detalles del marcador'; @@ -575,8 +575,8 @@ class _StringsLinksAddLinkEs implements _StringsLinksAddLinkEn { @override String get tagNoWhitespaces => 'La etiqueta no puede contener espacios'; @override String get addTag => 'Añadir etiqueta'; @override String get others => 'Otros'; - @override String get savingLink => 'Guardando enlace...'; - @override String get errorSavingLink => 'Ocurrió un error al guardar el nuevo enlace.'; + @override String get savingBookmark => 'Guardando 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 leaveEmptyUseWebsiteDescription => 'Dejar vacío para usar la descripción del sitio web.'; } @@ -659,33 +659,33 @@ extension on Translations { case 'onboarding.connecting': return 'Connecting...'; case 'onboarding.cannotConnectToServer': return 'Cannot connect to the server.'; case 'onboarding.invalidToken': return 'Invalid token.'; - case 'links.links': return 'Links'; - case 'links.dates.todayAt': return ({required Object time}) => 'Today, ${time}'; - case 'links.dates.yesterdayAt': return ({required Object time}) => 'Yesterday, ${time}'; - case 'links.addLink.addLink': return 'Add new link'; - case 'links.addLink.bookmarkUrl': return 'Bookmark URL'; - case 'links.addLink.bookmarkDetails': return 'Bookmark details'; - case 'links.addLink.validateUrl': return 'Validate URL'; - case 'links.addLink.urlValid': return 'The URL is valid'; - case 'links.addLink.urlNotValid': return 'The URL is not valid'; - case 'links.addLink.cannotCheckUrl': return 'The URL couldn\'t be checked'; - case 'links.addLink.invalidUrl': return 'Invalid URL'; - case 'links.addLink.url': return 'URL'; - case 'links.addLink.checkingUrl': return 'Checking URL...'; - case 'links.addLink.title': return 'Title'; - case 'links.addLink.description': return 'Description'; - case 'links.addLink.markAsUnread': return 'Mark as unread'; - case 'links.addLink.notes': return 'Notes'; - case 'links.addLink.addNotes': return 'Add notes'; - case 'links.addLink.tags': return 'Tags'; - case 'links.addLink.noTagsAdded': return 'No tags added'; - case 'links.addLink.tagNoWhitespaces': return 'Tag cannot contain whitespaces'; - case 'links.addLink.addTag': return 'Add tag'; - case 'links.addLink.others': return 'Others'; - case 'links.addLink.savingLink': return 'Saving link...'; - case 'links.addLink.errorSavingLink': return 'An error occured when saving the new link.'; - case 'links.addLink.leaveEmptyUseWebsiteTitle': return 'Leave empty to use the website\'s title.'; - case 'links.addLink.leaveEmptyUseWebsiteDescription': return 'Leave empty to use the website\'s description.'; + case 'bookmarks.bookmarks': return 'Bookmarks'; + case 'bookmarks.dates.todayAt': return ({required Object time}) => 'Today, ${time}'; + case 'bookmarks.dates.yesterdayAt': return ({required Object time}) => 'Yesterday, ${time}'; + case 'bookmarks.addBookmark.addBookmark': return 'Add new bookmark'; + case 'bookmarks.addBookmark.bookmarkUrl': return 'Bookmark URL'; + case 'bookmarks.addBookmark.bookmarkDetails': return 'Bookmark details'; + 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.invalidUrl': return 'Invalid URL'; + case 'bookmarks.addBookmark.url': return 'URL'; + case 'bookmarks.addBookmark.checkingUrl': return 'Checking URL...'; + case 'bookmarks.addBookmark.title': return 'Title'; + case 'bookmarks.addBookmark.description': return 'Description'; + case 'bookmarks.addBookmark.markAsUnread': return 'Mark as unread'; + case 'bookmarks.addBookmark.notes': return 'Notes'; + case 'bookmarks.addBookmark.addNotes': return 'Add notes'; + case 'bookmarks.addBookmark.tags': return 'Tags'; + case 'bookmarks.addBookmark.noTagsAdded': return 'No tags added'; + case 'bookmarks.addBookmark.tagNoWhitespaces': return 'Tag cannot contain whitespaces'; + case 'bookmarks.addBookmark.addTag': return 'Add tag'; + case 'bookmarks.addBookmark.others': return 'Others'; + case 'bookmarks.addBookmark.savingBookmark': return 'Saving 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.leaveEmptyUseWebsiteDescription': return 'Leave empty to use the website\'s description.'; case 'search.search': return 'Search'; case 'search.bookmarks': return 'Bookmarks'; case 'search.tags': return 'Tags'; @@ -771,33 +771,33 @@ extension on _StringsEs { case 'onboarding.connecting': return 'Conectando...'; case 'onboarding.cannotConnectToServer': return 'No se puede conectar con el servidor.'; case 'onboarding.invalidToken': return 'Token no válido.'; - case 'links.links': return 'Enlaces'; - case 'links.dates.todayAt': return ({required Object time}) => 'Hoy, ${time}'; - case 'links.dates.yesterdayAt': return ({required Object time}) => 'Ayer, ${time}'; - case 'links.addLink.addLink': return 'Añadir nuevo enlace'; - case 'links.addLink.url': return 'URL'; - case 'links.addLink.bookmarkUrl': return 'URL del marcador'; - case 'links.addLink.bookmarkDetails': return 'Detalles del marcador'; - case 'links.addLink.validateUrl': return 'Validar URL'; - case 'links.addLink.urlValid': return 'La URL es válida'; - case 'links.addLink.urlNotValid': return 'La URL no es válida'; - case 'links.addLink.cannotCheckUrl': return 'No se pudo comprobar la URL'; - case 'links.addLink.invalidUrl': return 'URL no válida'; - case 'links.addLink.checkingUrl': return 'Comprobando URL...'; - case 'links.addLink.title': return 'Title'; - case 'links.addLink.description': return 'Description'; - case 'links.addLink.markAsUnread': return 'Marcar como no leído'; - case 'links.addLink.notes': return 'Notas'; - case 'links.addLink.addNotes': return 'Añadir notas'; - case 'links.addLink.tags': return 'Etiquetas'; - case 'links.addLink.noTagsAdded': return 'No hay etiquetas añadidas'; - case 'links.addLink.tagNoWhitespaces': return 'La etiqueta no puede contener espacios'; - case 'links.addLink.addTag': return 'Añadir etiqueta'; - case 'links.addLink.others': return 'Otros'; - case 'links.addLink.savingLink': return 'Guardando enlace...'; - case 'links.addLink.errorSavingLink': return 'Ocurrió un error al guardar el nuevo enlace.'; - case 'links.addLink.leaveEmptyUseWebsiteTitle': return 'Dejar vacío para usar el título del sitio web.'; - case 'links.addLink.leaveEmptyUseWebsiteDescription': return 'Dejar vacío para usar la descripción del sitio web.'; + case 'bookmarks.bookmarks': return 'Marcadores'; + case 'bookmarks.dates.todayAt': return ({required Object time}) => 'Hoy, ${time}'; + case 'bookmarks.dates.yesterdayAt': return ({required Object time}) => 'Ayer, ${time}'; + case 'bookmarks.addBookmark.addBookmark': return 'Añadir nuevo marcador'; + case 'bookmarks.addBookmark.url': return 'URL'; + case 'bookmarks.addBookmark.bookmarkUrl': return 'URL del marcador'; + case 'bookmarks.addBookmark.bookmarkDetails': return 'Detalles del marcador'; + 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.invalidUrl': return 'URL no válida'; + case 'bookmarks.addBookmark.checkingUrl': return 'Comprobando URL...'; + 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.notes': return 'Notas'; + case 'bookmarks.addBookmark.addNotes': return 'Añadir notas'; + case 'bookmarks.addBookmark.tags': return 'Etiquetas'; + case 'bookmarks.addBookmark.noTagsAdded': return 'No hay etiquetas añadidas'; + case 'bookmarks.addBookmark.tagNoWhitespaces': return 'La etiqueta no puede contener espacios'; + case 'bookmarks.addBookmark.addTag': return 'Añadir etiqueta'; + case 'bookmarks.addBookmark.others': return 'Otros'; + case 'bookmarks.addBookmark.savingBookmark': return 'Guardando 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.leaveEmptyUseWebsiteDescription': return 'Dejar vacío para usar la descripción del sitio web.'; case 'search.search': return 'Buscar'; case 'search.bookmarks': return 'Marcadores'; case 'search.tags': return 'Etiquetas'; diff --git a/lib/i18n/strings_en.i18n.json b/lib/i18n/strings_en.i18n.json index c4a7bcd..40990b9 100644 --- a/lib/i18n/strings_en.i18n.json +++ b/lib/i18n/strings_en.i18n.json @@ -32,14 +32,14 @@ "cannotConnectToServer": "Cannot connect to the server.", "invalidToken": "Invalid token." }, - "links": { - "links": "Links", + "bookmarks": { + "bookmarks": "Bookmarks", "dates": { "todayAt": "Today, $time", "yesterdayAt": "Yesterday, $time" }, - "addLink": { - "addLink": "Add new link", + "addBookmark": { + "addBookmark": "Add new bookmark", "bookmarkUrl": "Bookmark URL", "bookmarkDetails": "Bookmark details", "validateUrl": "Validate URL", @@ -59,8 +59,8 @@ "tagNoWhitespaces": "Tag cannot contain whitespaces", "addTag": "Add tag", "others": "Others", - "savingLink": "Saving link...", - "errorSavingLink": "An error occured when saving the new link.", + "savingBookmark": "Saving bookmark...", + "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." } diff --git a/lib/i18n/strings_es.i18n.json b/lib/i18n/strings_es.i18n.json index b43fc37..54dd51f 100644 --- a/lib/i18n/strings_es.i18n.json +++ b/lib/i18n/strings_es.i18n.json @@ -32,14 +32,14 @@ "cannotConnectToServer": "No se puede conectar con el servidor.", "invalidToken": "Token no válido." }, - "links": { - "links": "Enlaces", + "bookmarks": { + "bookmarks": "Marcadores", "dates": { "todayAt": "Hoy, $time", "yesterdayAt": "Ayer, $time" }, - "addLink": { - "addLink": "Añadir nuevo enlace", + "addBookmark": { + "addBookmark": "Añadir nuevo marcador", "url": "URL", "bookmarkUrl": "URL del marcador", "bookmarkDetails": "Detalles del marcador", @@ -59,8 +59,8 @@ "tagNoWhitespaces": "La etiqueta no puede contener espacios", "addTag": "Añadir etiqueta", "others": "Otros", - "savingLink": "Guardando enlace...", - "errorSavingLink": "Ocurrió un error al guardar el nuevo enlace.", + "savingBookmark": "Guardando marcador...", + "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." } diff --git a/lib/models/data/bookmarks.dart b/lib/models/data/bookmarks.dart index 14ccf42..6441dea 100644 --- a/lib/models/data/bookmarks.dart +++ b/lib/models/data/bookmarks.dart @@ -1,17 +1,17 @@ -class Bookmarks { +class BookmarksResponse { final int? count; final int? next; final int? previous; final List? results; - Bookmarks({ + BookmarksResponse({ this.count, this.next, this.previous, this.results, }); - factory Bookmarks.fromJson(Map json) => Bookmarks( + factory BookmarksResponse.fromJson(Map json) => BookmarksResponse( count: json["count"], next: json["next"], previous: json["previous"], diff --git a/lib/models/data/tags.dart b/lib/models/data/tags.dart index f8ee83c..45d38c1 100644 --- a/lib/models/data/tags.dart +++ b/lib/models/data/tags.dart @@ -1,17 +1,17 @@ -class Tags { +class TagsResponse { final int? count; final int? next; final int? previous; final List? results; - Tags({ + TagsResponse({ this.count, this.next, this.previous, this.results, }); - factory Tags.fromJson(Map json) => Tags( + factory TagsResponse.fromJson(Map json) => TagsResponse( count: json["count"], next: json["next"], previous: json["previous"], diff --git a/lib/router/routes.dart b/lib/router/routes.dart index 3847324..315d219 100644 --- a/lib/router/routes.dart +++ b/lib/router/routes.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:linkdy/screens/links/ui/links.dart'; +import 'package:linkdy/screens/bookmarks/ui/bookmarks.dart'; import 'package:linkdy/screens/onboarding/ui/onboarding.dart'; import 'package:linkdy/screens/search/ui/search.dart'; import 'package:linkdy/screens/settings/ui/customization/customization.dart'; @@ -35,7 +35,7 @@ final List appRoutes = [ routes: [ GoRoute( path: RoutesPaths.links, - builder: (context, state) => const Links(), + builder: (context, state) => const BookmarksScreen(), ), GoRoute( path: RoutesPaths.search, diff --git a/lib/screens/links/model/add_link.model.dart b/lib/screens/bookmarks/model/add_link.model.dart similarity index 95% rename from lib/screens/links/model/add_link.model.dart rename to lib/screens/bookmarks/model/add_link.model.dart index 61069d2..48068fb 100644 --- a/lib/screens/links/model/add_link.model.dart +++ b/lib/screens/bookmarks/model/add_link.model.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:linkdy/constants/enums.dart'; import 'package:linkdy/models/data/check_bookmark.dart'; -class AddLinkModel { +class AddBookmarkModel { final TextEditingController urlController; String? urlError; CheckBookmark? checkBookmark; @@ -16,7 +16,7 @@ class AddLinkModel { List tags; final TextEditingController notesController; - AddLinkModel({ + AddBookmarkModel({ required this.urlController, this.urlError, this.checkBookmark, diff --git a/lib/screens/links/model/links.model.dart b/lib/screens/bookmarks/model/links.model.dart similarity index 67% rename from lib/screens/links/model/links.model.dart rename to lib/screens/bookmarks/model/links.model.dart index ffd0438..7776cd1 100644 --- a/lib/screens/links/model/links.model.dart +++ b/lib/screens/bookmarks/model/links.model.dart @@ -1,8 +1,8 @@ -class LinksModel { +class BookmarksModel { int currentPage; int limit; - LinksModel({ + BookmarksModel({ this.currentPage = 0, this.limit = 100, }); diff --git a/lib/screens/links/provider/add_link.provider.dart b/lib/screens/bookmarks/provider/add_bookmark.provider.dart similarity index 78% rename from lib/screens/links/provider/add_link.provider.dart rename to lib/screens/bookmarks/provider/add_bookmark.provider.dart index ff64166..8cfdd0d 100644 --- a/lib/screens/links/provider/add_link.provider.dart +++ b/lib/screens/bookmarks/provider/add_bookmark.provider.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; -import 'package:linkdy/screens/links/provider/links.provider.dart'; -import 'package:linkdy/screens/links/model/add_link.model.dart'; +import 'package:linkdy/screens/bookmarks/provider/bookmarks.provider.dart'; +import 'package:linkdy/screens/bookmarks/model/add_link.model.dart'; import 'package:linkdy/models/data/tags.dart'; import 'package:linkdy/utils/snackbar.dart'; @@ -10,14 +10,13 @@ import 'package:linkdy/i18n/strings.g.dart'; import 'package:linkdy/utils/process_modal.dart'; import 'package:linkdy/models/data/post_bookmark.dart'; import 'package:linkdy/providers/router_provider.dart'; -import 'package:linkdy/models/data/bookmarks.dart'; import 'package:linkdy/constants/enums.dart'; import 'package:linkdy/constants/regexp.dart'; import 'package:linkdy/models/api_response.dart'; import 'package:linkdy/models/data/check_bookmark.dart'; import 'package:linkdy/providers/api_client_provider.dart'; -part 'add_link.provider.g.dart'; +part 'add_bookmark.provider.g.dart'; @riverpod Future> checkBookmark(CheckBookmarkRef ref, String url) async { @@ -26,22 +25,16 @@ Future> checkBookmark(CheckBookmarkRef ref, String ur } @riverpod -FutureOr> addBookmark(AddBookmarkRef ref, PostBookmark newBookmark) async { - final result = await ref.watch(apiClientProvider)!.fetchPostBookmark(newBookmark); - return result; -} - -@riverpod -FutureOr> getTags(GetTagsRef ref) async { +FutureOr> getTags(GetTagsRef ref) async { final result = await ref.watch(apiClientProvider)!.fetchTags(); return result; } @riverpod -class AddLink extends _$AddLink { +class AddBookmark extends _$AddBookmark { @override - AddLinkModel build() { - return AddLinkModel( + AddBookmarkModel build() { + return AddBookmarkModel( urlController: TextEditingController(), titleController: TextEditingController(), descriptionController: TextEditingController(), @@ -58,7 +51,7 @@ class AddLink extends _$AddLink { state.urlError = null; ref.notifyListeners(); } else { - state.urlError = t.links.addLink.invalidUrl; + state.urlError = t.bookmarks.addBookmark.invalidUrl; ref.notifyListeners(); } } @@ -98,18 +91,18 @@ class AddLink extends _$AddLink { ); final processModal = ProcessModal(); - processModal.open(t.links.addLink.savingLink); + processModal.open(t.bookmarks.addBookmark.savingBookmark); - final result = await ref.watch(addBookmarkProvider(newBookmark).future); + final result = await ref.watch(apiClientProvider)!.fetchPostBookmark(newBookmark); processModal.close(); if (result.successful == true) { - ref.invalidate(linksRequestProvider); + ref.invalidate(bookmarksRequestProvider); ref.watch(routerProvider).pop(); } else { showSnacbkar( - label: t.links.addLink.errorSavingLink, + label: t.bookmarks.addBookmark.errorSavingBookmark, color: Colors.red, ); } @@ -117,7 +110,7 @@ class AddLink extends _$AddLink { void validateTagInput(String value) { if (value.contains(" ")) { - state.tagsError = t.links.addLink.tagNoWhitespaces; + state.tagsError = t.bookmarks.addBookmark.tagNoWhitespaces; } else { state.tagsError = null; } diff --git a/lib/screens/links/provider/add_link.provider.g.dart b/lib/screens/bookmarks/provider/add_bookmark.provider.g.dart similarity index 54% rename from lib/screens/links/provider/add_link.provider.g.dart rename to lib/screens/bookmarks/provider/add_bookmark.provider.g.dart index aa7bb37..2c11ff4 100644 --- a/lib/screens/links/provider/add_link.provider.g.dart +++ b/lib/screens/bookmarks/provider/add_bookmark.provider.g.dart @@ -1,6 +1,6 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -part of 'add_link.provider.dart'; +part of 'add_bookmark.provider.dart'; // ************************************************************************** // RiverpodGenerator @@ -160,141 +160,12 @@ class _CheckBookmarkProviderElement String get url => (origin as CheckBookmarkProvider).url; } -String _$addBookmarkHash() => r'f0994cdf9fe086431549dac44daadd367a8b801b'; - -/// See also [addBookmark]. -@ProviderFor(addBookmark) -const addBookmarkProvider = AddBookmarkFamily(); - -/// See also [addBookmark]. -class AddBookmarkFamily extends Family>> { - /// See also [addBookmark]. - const AddBookmarkFamily(); - - /// See also [addBookmark]. - AddBookmarkProvider call( - PostBookmark newBookmark, - ) { - return AddBookmarkProvider( - newBookmark, - ); - } - - @override - AddBookmarkProvider getProviderOverride( - covariant AddBookmarkProvider provider, - ) { - return call( - provider.newBookmark, - ); - } - - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'addBookmarkProvider'; -} - -/// See also [addBookmark]. -class AddBookmarkProvider - extends AutoDisposeFutureProvider> { - /// See also [addBookmark]. - AddBookmarkProvider( - PostBookmark newBookmark, - ) : this._internal( - (ref) => addBookmark( - ref as AddBookmarkRef, - newBookmark, - ), - from: addBookmarkProvider, - name: r'addBookmarkProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$addBookmarkHash, - dependencies: AddBookmarkFamily._dependencies, - allTransitiveDependencies: - AddBookmarkFamily._allTransitiveDependencies, - newBookmark: newBookmark, - ); - - AddBookmarkProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.newBookmark, - }) : super.internal(); - - final PostBookmark newBookmark; - - @override - Override overrideWith( - FutureOr> Function(AddBookmarkRef provider) create, - ) { - return ProviderOverride( - origin: this, - override: AddBookmarkProvider._internal( - (ref) => create(ref as AddBookmarkRef), - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - newBookmark: newBookmark, - ), - ); - } - - @override - AutoDisposeFutureProviderElement> createElement() { - return _AddBookmarkProviderElement(this); - } - - @override - bool operator ==(Object other) { - return other is AddBookmarkProvider && other.newBookmark == newBookmark; - } - - @override - int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, newBookmark.hashCode); - - return _SystemHash.finish(hash); - } -} - -mixin AddBookmarkRef on AutoDisposeFutureProviderRef> { - /// The parameter `newBookmark` of this provider. - PostBookmark get newBookmark; -} - -class _AddBookmarkProviderElement - extends AutoDisposeFutureProviderElement> - with AddBookmarkRef { - _AddBookmarkProviderElement(super.provider); - - @override - PostBookmark get newBookmark => (origin as AddBookmarkProvider).newBookmark; -} - -String _$getTagsHash() => r'22cfedf0f73a32c41992b922cbdfbb0145cccc9a'; +String _$getTagsHash() => r'16138d28ed9ee5b99f5c84935f7a1eb98fad2a3b'; /// See also [getTags]. @ProviderFor(getTags) -final getTagsProvider = AutoDisposeFutureProvider>.internal( +final getTagsProvider = + AutoDisposeFutureProvider>.internal( getTags, name: r'getTagsProvider', debugGetCreateSourceHash: @@ -303,21 +174,21 @@ final getTagsProvider = AutoDisposeFutureProvider>.internal( allTransitiveDependencies: null, ); -typedef GetTagsRef = AutoDisposeFutureProviderRef>; -String _$addLinkHash() => r'6a5c26a8e562236c7d3806bca869d932097fa6a6'; +typedef GetTagsRef = AutoDisposeFutureProviderRef>; +String _$addBookmarkHash() => r'2953a4223fe70809fbcf37af23b4f61a62f0de9f'; -/// See also [AddLink]. -@ProviderFor(AddLink) -final addLinkProvider = - AutoDisposeNotifierProvider.internal( - AddLink.new, - name: r'addLinkProvider', +/// See also [AddBookmark]. +@ProviderFor(AddBookmark) +final addBookmarkProvider = + AutoDisposeNotifierProvider.internal( + AddBookmark.new, + name: r'addBookmarkProvider', debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') ? null : _$addLinkHash, + const bool.fromEnvironment('dart.vm.product') ? null : _$addBookmarkHash, dependencies: null, allTransitiveDependencies: null, ); -typedef _$AddLink = AutoDisposeNotifier; +typedef _$AddBookmark = AutoDisposeNotifier; // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/screens/links/provider/links.provider.dart b/lib/screens/bookmarks/provider/bookmarks.provider.dart similarity index 63% rename from lib/screens/links/provider/links.provider.dart rename to lib/screens/bookmarks/provider/bookmarks.provider.dart index 9617055..063a65f 100644 --- a/lib/screens/links/provider/links.provider.dart +++ b/lib/screens/bookmarks/provider/bookmarks.provider.dart @@ -1,24 +1,24 @@ +import 'package:linkdy/models/data/bookmarks.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; -import 'package:linkdy/screens/links/model/links.model.dart'; +import 'package:linkdy/screens/bookmarks/model/links.model.dart'; import 'package:linkdy/models/api_response.dart'; -import 'package:linkdy/models/data/bookmarks.dart'; import 'package:linkdy/providers/api_client_provider.dart'; -part 'links.provider.g.dart'; +part 'bookmarks.provider.g.dart'; @riverpod -FutureOr> linksRequest(LinksRequestRef ref) async { +FutureOr> bookmarksRequest(BookmarksRequestRef ref) async { final result = await ref.watch(apiClientProvider)!.fetchBookmarks(); return result; } @riverpod -class Links extends _$Links { +class Bookmarks extends _$Bookmarks { @override - LinksModel build() { - return LinksModel(); + BookmarksModel build() { + return BookmarksModel(); } void setCurrentPage(int page) { diff --git a/lib/screens/bookmarks/provider/bookmarks.provider.g.dart b/lib/screens/bookmarks/provider/bookmarks.provider.g.dart new file mode 100644 index 0000000..a56c33a --- /dev/null +++ b/lib/screens/bookmarks/provider/bookmarks.provider.g.dart @@ -0,0 +1,42 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'bookmarks.provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$bookmarksRequestHash() => r'c80328ae148c39617997a44ac5c34f27daf25a8a'; + +/// See also [bookmarksRequest]. +@ProviderFor(bookmarksRequest) +final bookmarksRequestProvider = + AutoDisposeFutureProvider>.internal( + bookmarksRequest, + name: r'bookmarksRequestProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$bookmarksRequestHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef BookmarksRequestRef + = AutoDisposeFutureProviderRef>; +String _$bookmarksHash() => r'4a1726830b4e7bbc131d69761aeb4702ca6b7180'; + +/// See also [Bookmarks]. +@ProviderFor(Bookmarks) +final bookmarksProvider = + AutoDisposeNotifierProvider.internal( + Bookmarks.new, + name: r'bookmarksProvider', + debugGetCreateSourceHash: + const bool.fromEnvironment('dart.vm.product') ? null : _$bookmarksHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef _$Bookmarks = AutoDisposeNotifier; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/screens/links/ui/add_link_modal.dart b/lib/screens/bookmarks/ui/add_bookmark_modal.dart similarity index 81% rename from lib/screens/links/ui/add_link_modal.dart rename to lib/screens/bookmarks/ui/add_bookmark_modal.dart index 89a504f..87a6dce 100644 --- a/lib/screens/links/ui/add_link_modal.dart +++ b/lib/screens/bookmarks/ui/add_bookmark_modal.dart @@ -2,16 +2,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:easy_autocomplete/easy_autocomplete.dart'; -import 'package:linkdy/screens/links/provider/add_link.provider.dart'; +import 'package:linkdy/screens/bookmarks/provider/add_bookmark.provider.dart'; import 'package:linkdy/widgets/section_label.dart'; import 'package:linkdy/i18n/strings.g.dart'; import 'package:linkdy/constants/enums.dart'; -class AddLinkModal extends ConsumerWidget { +class AddBookmarkModal extends ConsumerWidget { final bool fullscreen; - const AddLinkModal({ + const AddBookmarkModal({ Key? key, required this.fullscreen, }) : super(key: key); @@ -24,11 +24,11 @@ class AddLinkModal extends ConsumerWidget { leading: CloseButton( onPressed: () => Navigator.pop(context), ), - title: Text(t.links.addLink.addLink), + title: Text(t.bookmarks.addBookmark.addBookmark), actions: [ IconButton( - onPressed: ref.watch(addLinkProvider).checkBookmark != null - ? () => ref.read(addLinkProvider.notifier).addBookmark() + onPressed: ref.watch(addBookmarkProvider).checkBookmark != null + ? () => ref.read(addBookmarkProvider.notifier).addBookmark() : null, icon: const Icon(Icons.save_rounded), tooltip: t.generic.save, @@ -47,7 +47,7 @@ class _ModalContent extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final provider = ref.watch(addLinkProvider); + final provider = ref.watch(addBookmarkProvider); final tags = ref.watch(getTagsProvider); @@ -55,7 +55,7 @@ class _ModalContent extends ConsumerWidget { children: [ const SizedBox(height: 16), SectionLabel( - label: t.links.addLink.bookmarkUrl, + label: t.bookmarks.addBookmark.bookmarkUrl, padding: const EdgeInsets.symmetric( horizontal: 16, vertical: 0, @@ -66,7 +66,7 @@ class _ModalContent extends ConsumerWidget { padding: const EdgeInsets.symmetric(horizontal: 16), child: TextFormField( controller: provider.urlController, - onChanged: ref.read(addLinkProvider.notifier).validateUrl, + onChanged: ref.read(addBookmarkProvider.notifier).validateUrl, enabled: provider.checkBookmarkLoadStatus != LoadStatus.loading, decoration: InputDecoration( prefixIcon: const Icon(Icons.link_rounded), @@ -76,7 +76,7 @@ class _ModalContent extends ConsumerWidget { ), ), errorText: provider.urlError, - labelText: t.links.addLink.url, + labelText: t.bookmarks.addBookmark.url, ), ), ), @@ -88,7 +88,7 @@ class _ModalContent extends ConsumerWidget { onPressed: provider.checkBookmarkLoadStatus == null && provider.urlError == null && provider.urlController.text != "" - ? () => ref.read(addLinkProvider.notifier).checkUrlDetails() + ? () => ref.read(addBookmarkProvider.notifier).checkUrlDetails() : null, style: ButtonStyle( foregroundColor: provider.checkBookmarkLoadStatus == LoadStatus.loaded @@ -105,7 +105,7 @@ class _ModalContent extends ConsumerWidget { child: Row( mainAxisSize: MainAxisSize.min, children: [ - if (provider.checkBookmarkLoadStatus == null) Text(t.links.addLink.validateUrl), + if (provider.checkBookmarkLoadStatus == null) Text(t.bookmarks.addBookmark.validateUrl), if (provider.checkBookmarkLoadStatus == LoadStatus.loading) ...[ const SizedBox( width: 12, @@ -115,17 +115,17 @@ class _ModalContent extends ConsumerWidget { ), ), const SizedBox(width: 8), - Text(t.links.addLink.checkingUrl), + Text(t.bookmarks.addBookmark.checkingUrl), ], if (provider.checkBookmarkLoadStatus == LoadStatus.loaded) ...[ const Icon(Icons.check_circle_rounded), const SizedBox(width: 8), - Text(t.links.addLink.urlValid), + Text(t.bookmarks.addBookmark.urlValid), ], if (provider.checkBookmarkLoadStatus == LoadStatus.error) ...[ const Icon(Icons.error_rounded), const SizedBox(width: 8), - Text(t.links.addLink.cannotCheckUrl), + Text(t.bookmarks.addBookmark.cannotCheckUrl), ], ], ), @@ -133,7 +133,7 @@ class _ModalContent extends ConsumerWidget { ), ), SectionLabel( - label: t.links.addLink.bookmarkDetails, + label: t.bookmarks.addBookmark.bookmarkDetails, padding: const EdgeInsets.symmetric( horizontal: 16, vertical: 24, @@ -150,11 +150,11 @@ class _ModalContent extends ConsumerWidget { Radius.circular(10), ), ), - labelText: t.links.addLink.title, + labelText: t.bookmarks.addBookmark.title, hintText: provider.checkBookmark?.metadata?.title, floatingLabelBehavior: provider.checkBookmark != null ? FloatingLabelBehavior.always : FloatingLabelBehavior.auto, - helperText: t.links.addLink.leaveEmptyUseWebsiteTitle, + helperText: t.bookmarks.addBookmark.leaveEmptyUseWebsiteTitle, enabled: provider.checkBookmark != null, ), ), @@ -171,17 +171,17 @@ class _ModalContent extends ConsumerWidget { Radius.circular(10), ), ), - labelText: t.links.addLink.description, + labelText: t.bookmarks.addBookmark.description, hintText: provider.checkBookmark?.metadata?.description, floatingLabelBehavior: provider.checkBookmark != null ? FloatingLabelBehavior.always : FloatingLabelBehavior.auto, - helperText: t.links.addLink.leaveEmptyUseWebsiteDescription, + helperText: t.bookmarks.addBookmark.leaveEmptyUseWebsiteDescription, enabled: provider.checkBookmark != null, ), ), ), SectionLabel( - label: t.links.addLink.tags, + label: t.bookmarks.addBookmark.tags, padding: const EdgeInsets.symmetric( horizontal: 16, vertical: 24, @@ -198,7 +198,7 @@ class _ModalContent extends ConsumerWidget { Expanded( child: EasyAutocomplete( controller: provider.tagsController, - onChanged: ref.read(addLinkProvider.notifier).validateTagInput, + onChanged: ref.read(addBookmarkProvider.notifier).validateTagInput, suggestions: tags.value?.content?.results?.map((t) => t.name!).toList() ?? [], decoration: InputDecoration( border: const OutlineInputBorder( @@ -206,7 +206,7 @@ class _ModalContent extends ConsumerWidget { Radius.circular(10), ), ), - labelText: t.links.addLink.tags, + labelText: t.bookmarks.addBookmark.tags, errorText: provider.tagsError, ), suggestionBuilder: (data) => Padding( @@ -218,8 +218,8 @@ class _ModalContent extends ConsumerWidget { ), onSubmitted: provider.tagsController.text != "" && provider.tagsError == null ? (v) { - ref.read(addLinkProvider.notifier).setTags([...provider.tags, v]); - ref.read(addLinkProvider.notifier).clearTagsController(); + ref.read(addBookmarkProvider.notifier).setTags([...provider.tags, v]); + ref.read(addBookmarkProvider.notifier).clearTagsController(); } : null, ), @@ -229,13 +229,13 @@ class _ModalContent extends ConsumerWidget { onPressed: provider.tagsController.text != "" && provider.tagsError == null ? () { ref - .read(addLinkProvider.notifier) + .read(addBookmarkProvider.notifier) .setTags([...provider.tags, provider.tagsController.text]); - ref.read(addLinkProvider.notifier).clearTagsController(); + ref.read(addBookmarkProvider.notifier).clearTagsController(); } : null, icon: const Icon(Icons.check_rounded), - tooltip: t.links.addLink.addTag, + tooltip: t.bookmarks.addBookmark.addTag, ), ], ), @@ -250,13 +250,13 @@ class _ModalContent extends ConsumerWidget { itemBuilder: (context, index) => InputChip( label: Text(provider.tags[index]), onDeleted: () => ref - .read(addLinkProvider.notifier) + .read(addBookmarkProvider.notifier) .setTags(provider.tags.where((tag) => tag != provider.tags[index]).toList()), ), ) : Center( child: Text( - t.links.addLink.noTagsAdded, + t.bookmarks.addBookmark.noTagsAdded, style: TextStyle( fontSize: 16, color: Theme.of(context).colorScheme.secondary, @@ -268,7 +268,7 @@ class _ModalContent extends ConsumerWidget { ), ), SectionLabel( - label: t.links.addLink.others, + label: t.bookmarks.addBookmark.others, padding: const EdgeInsets.symmetric( horizontal: 16, vertical: 24, @@ -287,7 +287,7 @@ class _ModalContent extends ConsumerWidget { Radius.circular(10), ), ), - labelText: t.links.addLink.notes, + labelText: t.bookmarks.addBookmark.notes, helperText: t.generic.optional, ), autocorrect: false, @@ -302,10 +302,11 @@ class _ModalContent extends ConsumerWidget { const SizedBox(height: 12), SwitchListTile( contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4), - title: Text(t.links.addLink.markAsUnread), + title: Text(t.bookmarks.addBookmark.markAsUnread), value: provider.markAsUnread, - onChanged: - provider.checkBookmark != null ? (v) => ref.read(addLinkProvider.notifier).updateMarkAsUnread(v) : null, + onChanged: provider.checkBookmark != null + ? (v) => ref.read(addBookmarkProvider.notifier).updateMarkAsUnread(v) + : null, ), ], ); diff --git a/lib/screens/links/ui/link_item.dart b/lib/screens/bookmarks/ui/bookmark_item.dart similarity index 100% rename from lib/screens/links/ui/link_item.dart rename to lib/screens/bookmarks/ui/bookmark_item.dart diff --git a/lib/screens/links/ui/links.dart b/lib/screens/bookmarks/ui/bookmarks.dart similarity index 86% rename from lib/screens/links/ui/links.dart rename to lib/screens/bookmarks/ui/bookmarks.dart index 2c40ab7..c93500e 100644 --- a/lib/screens/links/ui/links.dart +++ b/lib/screens/bookmarks/ui/bookmarks.dart @@ -3,23 +3,18 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:linkdy/screens/links/provider/links.provider.dart'; +import 'package:linkdy/screens/bookmarks/provider/bookmarks.provider.dart'; +import 'package:linkdy/screens/bookmarks/ui/bookmark_item.dart'; +import 'package:linkdy/screens/bookmarks/ui/add_bookmark_modal.dart'; -import 'package:linkdy/screens/links/ui/add_link_modal.dart'; - -import 'package:linkdy/providers/app_status_provider.dart'; -import 'package:linkdy/providers/router_provider.dart'; -import 'package:linkdy/router/paths.dart'; import 'package:linkdy/i18n/strings.g.dart'; -import 'package:linkdy/screens/links/ui/link_item.dart'; -import 'package:linkdy/utils/open_url.dart'; -class Links extends ConsumerWidget { - const Links({Key? key}) : super(key: key); +class BookmarksScreen extends ConsumerWidget { + const BookmarksScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context, WidgetRef ref) { - final bookmarks = ref.watch(linksRequestProvider); + final bookmarks = ref.watch(bookmarksRequestProvider); final width = MediaQuery.of(context).size.width; @@ -35,7 +30,7 @@ class Links extends ConsumerWidget { child: child, ); }, - pageBuilder: (context, animation, secondaryAnimation) => AddLinkModal(fullscreen: width <= 700), + pageBuilder: (context, animation, secondaryAnimation) => AddBookmarkModal(fullscreen: width <= 700), ); } @@ -49,7 +44,7 @@ class Links extends ConsumerWidget { floating: true, centerTitle: false, forceElevated: innerBoxIsScrolled, - title: Text(t.links.links), + title: Text(t.bookmarks.bookmarks), ), ), ], @@ -59,7 +54,7 @@ class Links extends ConsumerWidget { child: Builder( builder: (context) => RefreshIndicator( displacement: 120, - onRefresh: () => ref.refresh(linksRequestProvider.future), + onRefresh: () => ref.refresh(bookmarksRequestProvider.future), child: CustomScrollView( slivers: [ SliverOverlapInjector( diff --git a/lib/screens/links/provider/links.provider.g.dart b/lib/screens/links/provider/links.provider.g.dart deleted file mode 100644 index 2972ee5..0000000 --- a/lib/screens/links/provider/links.provider.g.dart +++ /dev/null @@ -1,39 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'links.provider.dart'; - -// ************************************************************************** -// RiverpodGenerator -// ************************************************************************** - -String _$linksRequestHash() => r'2bc6cb36d7c7090f5328c48e1f71acd46df5303b'; - -/// See also [linksRequest]. -@ProviderFor(linksRequest) -final linksRequestProvider = - AutoDisposeFutureProvider>.internal( - linksRequest, - name: r'linksRequestProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') ? null : _$linksRequestHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef LinksRequestRef = AutoDisposeFutureProviderRef>; -String _$linksHash() => r'a609009ca33885b1efd0d7c1122bee8299b98af3'; - -/// See also [Links]. -@ProviderFor(Links) -final linksProvider = AutoDisposeNotifierProvider.internal( - Links.new, - name: r'linksProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') ? null : _$linksHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef _$Links = AutoDisposeNotifier; -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/screens/search/provider/search.provider.dart b/lib/screens/search/provider/search.provider.dart index 5f2c00e..74c3b44 100644 --- a/lib/screens/search/provider/search.provider.dart +++ b/lib/screens/search/provider/search.provider.dart @@ -11,14 +11,14 @@ import 'package:linkdy/providers/api_client_provider.dart'; part 'search.provider.g.dart'; @riverpod -FutureOr?> searchBookmarks(SearchBookmarksRef ref) async { +FutureOr?> searchBookmarks(SearchBookmarksRef ref) async { if (ref.watch(searchProvider).searchTerm == "") return null; final result = await ref.read(apiClientProvider)!.fetchBookmarks(q: ref.watch(searchProvider).searchTerm); return result; } @riverpod -FutureOr?> searchTags(SearchTagsRef ref) async { +FutureOr?> searchTags(SearchTagsRef ref) async { if (ref.watch(searchProvider).searchTerm == "") return null; final result = await ref.read(apiClientProvider)!.fetchTags(q: ref.watch(searchProvider).searchTerm); return result; diff --git a/lib/screens/search/provider/search.provider.g.dart b/lib/screens/search/provider/search.provider.g.dart index e3716cc..48f334e 100644 --- a/lib/screens/search/provider/search.provider.g.dart +++ b/lib/screens/search/provider/search.provider.g.dart @@ -6,12 +6,12 @@ part of 'search.provider.dart'; // RiverpodGenerator // ************************************************************************** -String _$searchBookmarksHash() => r'c8d0bfb69cc6c295649a8e2d90f57352689cdab7'; +String _$searchBookmarksHash() => r'301f5c0355044978b6ddcfa13478b8729773f290'; /// See also [searchBookmarks]. @ProviderFor(searchBookmarks) final searchBookmarksProvider = - AutoDisposeFutureProvider?>.internal( + AutoDisposeFutureProvider?>.internal( searchBookmarks, name: r'searchBookmarksProvider', debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') @@ -22,13 +22,13 @@ final searchBookmarksProvider = ); typedef SearchBookmarksRef - = AutoDisposeFutureProviderRef?>; -String _$searchTagsHash() => r'6af31fef1a5020612f098550d54939852d88e187'; + = AutoDisposeFutureProviderRef?>; +String _$searchTagsHash() => r'1fc8cf44f512490fcf369b843bf3ca137e867bb6'; /// See also [searchTags]. @ProviderFor(searchTags) final searchTagsProvider = - AutoDisposeFutureProvider?>.internal( + AutoDisposeFutureProvider?>.internal( searchTags, name: r'searchTagsProvider', debugGetCreateSourceHash: @@ -37,7 +37,8 @@ final searchTagsProvider = allTransitiveDependencies: null, ); -typedef SearchTagsRef = AutoDisposeFutureProviderRef?>; +typedef SearchTagsRef + = AutoDisposeFutureProviderRef?>; String _$searchHash() => r'bdb992f3343d912d9422fa5da14ad0d5704f18e7'; /// See also [Search]. diff --git a/lib/screens/search/ui/bookmarks_search_list.dart b/lib/screens/search/ui/bookmarks_search_list.dart index da48b48..e03f2ff 100644 --- a/lib/screens/search/ui/bookmarks_search_list.dart +++ b/lib/screens/search/ui/bookmarks_search_list.dart @@ -3,7 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:linkdy/screens/search/ui/error_search_list.dart'; import 'package:linkdy/screens/search/ui/input_search_term.dart'; -import 'package:linkdy/screens/links/ui/link_item.dart'; +import 'package:linkdy/screens/bookmarks/ui/bookmark_item.dart'; import 'package:linkdy/screens/search/provider/search.provider.dart'; import 'package:linkdy/screens/search/ui/search_no_data.dart'; import 'package:linkdy/widgets/sliver_tab_body.dart'; diff --git a/lib/screens/search/ui/search.dart b/lib/screens/search/ui/search.dart index c876e1f..cb23575 100644 --- a/lib/screens/search/ui/search.dart +++ b/lib/screens/search/ui/search.dart @@ -71,7 +71,7 @@ class SearchState extends ConsumerState with TickerProviderStateMixin { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - const Icon(Icons.link_rounded), + const Icon(Icons.bookmarks_rounded), const SizedBox(width: 8), Text(t.search.bookmarks), ], @@ -81,7 +81,7 @@ class SearchState extends ConsumerState with TickerProviderStateMixin { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - const Icon(Icons.tag_rounded), + const Icon(Icons.label_rounded), const SizedBox(width: 8), Text(t.search.tags), ], diff --git a/lib/services/api_client.dart b/lib/services/api_client.dart index 2d210ce..86f6527 100644 --- a/lib/services/api_client.dart +++ b/lib/services/api_client.dart @@ -31,7 +31,7 @@ class ApiClientService { } } - Future> fetchBookmarks({String? q, int? limit, int? offset}) async { + Future> fetchBookmarks({String? q, int? limit, int? offset}) async { try { final response = await dioInstance.get( "/bookmarks", @@ -43,7 +43,7 @@ class ApiClientService { ); return ApiResponse( successful: true, - content: Bookmarks.fromJson(response.data), + content: BookmarksResponse.fromJson(response.data), ); } catch (e, stackTrace) { return const ApiResponse(successful: false); @@ -82,7 +82,7 @@ class ApiClientService { } } - Future> fetchTags({String? q, int? limit, int? offset}) async { + Future> fetchTags({String? q, int? limit, int? offset}) async { try { final response = await dioInstance.get( "/tags/", @@ -94,7 +94,7 @@ class ApiClientService { ); return ApiResponse( successful: true, - content: Tags.fromJson(response.data), + content: TagsResponse.fromJson(response.data), ); } catch (e, stackTrace) { return const ApiResponse(successful: false); diff --git a/lib/utils/date_to_string.dart b/lib/utils/date_to_string.dart index 2ba001e..6ff82d7 100644 --- a/lib/utils/date_to_string.dart +++ b/lib/utils/date_to_string.dart @@ -9,9 +9,9 @@ String dateToString(DateTime date) { final yesterday = DateTime.now().subtract(const Duration(days: 1)); if (date.day == today.day && date.month == today.month && date.year == today.year) { - return t.links.dates.todayAt(time: "${addZeros(date.hour)}:${addZeros(date.minute)}"); + return t.bookmarks.dates.todayAt(time: "${addZeros(date.hour)}:${addZeros(date.minute)}"); } else if (date.day == yesterday.day && date.month == yesterday.month && date.year == yesterday.year) { - return t.links.dates.yesterdayAt(time: "${addZeros(date.hour)}:${addZeros(date.minute)}"); + return t.bookmarks.dates.yesterdayAt(time: "${addZeros(date.hour)}:${addZeros(date.minute)}"); } else { return "${date.day}/${date.month}/${date.year} - ${addZeros(date.hour)}:${addZeros(date.minute)}"; }