diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index 637874f..968c888 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -4,9 +4,9 @@ /// To regenerate, run: `dart run slang` /// /// Locales: 2 -/// Strings: 208 (104 per locale) +/// Strings: 212 (106 per locale) /// -/// Built on 2024-02-24 at 00:45 UTC +/// Built on 2024-02-24 at 00:56 UTC // coverage:ignore-file // ignore_for_file: type=lint @@ -212,6 +212,8 @@ class _StringsBookmarksEn { // Translations String get bookmarks => 'Bookmarks'; + String get noBookmarksAdded => 'No bookmarks added'; + String get cannotLoadBookmarks => 'Cannot load the bookmarks'; late final _StringsBookmarksDatesEn dates = _StringsBookmarksDatesEn._(_root); late final _StringsBookmarksAddBookmarkEn addBookmark = _StringsBookmarksAddBookmarkEn._(_root); } @@ -462,6 +464,8 @@ class _StringsBookmarksEs implements _StringsBookmarksEn { // Translations @override String get bookmarks => 'Marcadores'; + @override String get noBookmarksAdded => 'No hay marcadores añadidos'; + @override String get cannotLoadBookmarks => 'No se pueden cargar los marcadores'; @override late final _StringsBookmarksDatesEs dates = _StringsBookmarksDatesEs._(_root); @override late final _StringsBookmarksAddBookmarkEs addBookmark = _StringsBookmarksAddBookmarkEs._(_root); } @@ -660,6 +664,8 @@ extension on Translations { case 'onboarding.cannotConnectToServer': return 'Cannot connect to the server.'; case 'onboarding.invalidToken': return 'Invalid token.'; case 'bookmarks.bookmarks': return 'Bookmarks'; + case 'bookmarks.noBookmarksAdded': return 'No bookmarks added'; + case 'bookmarks.cannotLoadBookmarks': return 'Cannot load the 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'; @@ -772,6 +778,8 @@ extension on _StringsEs { case 'onboarding.cannotConnectToServer': return 'No se puede conectar con el servidor.'; case 'onboarding.invalidToken': return 'Token no válido.'; case 'bookmarks.bookmarks': return 'Marcadores'; + case 'bookmarks.noBookmarksAdded': return 'No hay marcadores añadidos'; + case 'bookmarks.cannotLoadBookmarks': return 'No se pueden cargar los 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'; diff --git a/lib/i18n/strings_en.i18n.json b/lib/i18n/strings_en.i18n.json index 40990b9..af9f0ae 100644 --- a/lib/i18n/strings_en.i18n.json +++ b/lib/i18n/strings_en.i18n.json @@ -34,6 +34,8 @@ }, "bookmarks": { "bookmarks": "Bookmarks", + "noBookmarksAdded": "No bookmarks added", + "cannotLoadBookmarks": "Cannot load the bookmarks", "dates": { "todayAt": "Today, $time", "yesterdayAt": "Yesterday, $time" diff --git a/lib/i18n/strings_es.i18n.json b/lib/i18n/strings_es.i18n.json index 54dd51f..e42f0ff 100644 --- a/lib/i18n/strings_es.i18n.json +++ b/lib/i18n/strings_es.i18n.json @@ -34,6 +34,8 @@ }, "bookmarks": { "bookmarks": "Marcadores", + "noBookmarksAdded": "No hay marcadores añadidos", + "cannotLoadBookmarks": "No se pueden cargar los marcadores", "dates": { "todayAt": "Hoy, $time", "yesterdayAt": "Ayer, $time" diff --git a/lib/screens/bookmarks/ui/bookmarks.dart b/lib/screens/bookmarks/ui/bookmarks.dart index c93500e..f5ce5dd 100644 --- a/lib/screens/bookmarks/ui/bookmarks.dart +++ b/lib/screens/bookmarks/ui/bookmarks.dart @@ -6,6 +6,8 @@ import 'package:flutter_riverpod/flutter_riverpod.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/widgets/error_screen.dart'; +import 'package:linkdy/widgets/no_data_screen.dart'; import 'package:linkdy/i18n/strings.g.dart'; @@ -65,17 +67,17 @@ class BookmarksScreen extends ConsumerWidget { child: Center(child: CircularProgressIndicator()), ), if (bookmarks.value != null && bookmarks.value!.successful == false) - const SliverFillRemaining( - child: Center( - child: Icon(Icons.error), + SliverFillRemaining( + child: ErrorScreen( + error: t.bookmarks.cannotLoadBookmarks, ), ), if (bookmarks.value != null && bookmarks.value!.successful == true && bookmarks.value!.content!.results!.isEmpty) - const SliverFillRemaining( - child: Center( - child: Text("No bookmarks"), + SliverFillRemaining( + child: NoDataScreen( + message: t.bookmarks.noBookmarksAdded, ), ), if (bookmarks.value != null && diff --git a/lib/screens/search/ui/bookmarks_search_list.dart b/lib/screens/search/ui/bookmarks_search_list.dart index e03f2ff..8f6d30c 100644 --- a/lib/screens/search/ui/bookmarks_search_list.dart +++ b/lib/screens/search/ui/bookmarks_search_list.dart @@ -1,11 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:linkdy/i18n/strings.g.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/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/error_screen.dart'; +import 'package:linkdy/widgets/no_data_screen.dart'; import 'package:linkdy/widgets/sliver_tab_body.dart'; class BookmarksSearchList extends ConsumerWidget { @@ -26,17 +27,19 @@ class BookmarksSearchList extends ConsumerWidget { return bookmarksSearch.when( data: (data) { if (data!.successful == false) { - return const SliverTabBody( + return SliverTabBody( child: SliverFillRemaining( - child: Center( - child: Icon(Icons.error_rounded), + child: ErrorScreen( + error: t.search.cannotSearchError, ), ), ); } else if (data.content!.results!.isEmpty) { - return const SliverTabBody( + return SliverTabBody( child: SliverFillRemaining( - child: SearchNoData(), + child: NoDataScreen( + message: t.search.inputtedSearchTermNoResults, + ), ), ); } else { @@ -51,10 +54,10 @@ class BookmarksSearchList extends ConsumerWidget { ); } }, - error: (error, stackTrace) => const SliverTabBody( + error: (error, stackTrace) => SliverTabBody( child: SliverFillRemaining( - child: Center( - child: ErrorSearchList(), + child: ErrorScreen( + error: t.search.cannotSearchError, ), ), ), diff --git a/lib/screens/search/ui/tags_search_list.dart b/lib/screens/search/ui/tags_search_list.dart index ded6802..ed15d7c 100644 --- a/lib/screens/search/ui/tags_search_list.dart +++ b/lib/screens/search/ui/tags_search_list.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:linkdy/screens/search/provider/search.provider.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/search/ui/search_no_data.dart'; +import 'package:linkdy/widgets/error_screen.dart'; +import 'package:linkdy/widgets/no_data_screen.dart'; import 'package:linkdy/widgets/sliver_tab_body.dart'; import 'package:linkdy/i18n/strings.g.dart'; @@ -28,17 +28,23 @@ class TagsSearchList extends ConsumerWidget { return bookmarksSearch.when( data: (data) { if (data!.successful == false) { - return const SliverTabBody( + return SliverTabBody( child: SliverFillRemaining( - child: Center( - child: Icon(Icons.error_rounded), + child: SliverTabBody( + child: SliverFillRemaining( + child: ErrorScreen( + error: t.search.cannotSearchError, + ), + ), ), ), ); } else if (data.content!.results!.isEmpty) { - return const SliverTabBody( + return SliverTabBody( child: SliverFillRemaining( - child: SearchNoData(), + child: NoDataScreen( + message: t.search.inputtedSearchTermNoResults, + ), ), ); } else { @@ -65,10 +71,14 @@ class TagsSearchList extends ConsumerWidget { ); } }, - error: (error, stackTrace) => const SliverTabBody( + error: (error, stackTrace) => SliverTabBody( child: SliverFillRemaining( - child: Center( - child: ErrorSearchList(), + child: SliverTabBody( + child: SliverFillRemaining( + child: ErrorScreen( + error: t.search.cannotSearchError, + ), + ), ), ), ), diff --git a/lib/screens/search/ui/error_search_list.dart b/lib/widgets/error_screen.dart similarity index 78% rename from lib/screens/search/ui/error_search_list.dart rename to lib/widgets/error_screen.dart index afd8f3d..0ee0e97 100644 --- a/lib/screens/search/ui/error_search_list.dart +++ b/lib/widgets/error_screen.dart @@ -1,9 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:linkdy/i18n/strings.g.dart'; +class ErrorScreen extends StatelessWidget { + final String error; -class ErrorSearchList extends StatelessWidget { - const ErrorSearchList({Key? key}) : super(key: key); + const ErrorScreen({ + Key? key, + required this.error, + }) : super(key: key); @override Widget build(BuildContext context) { @@ -19,7 +22,7 @@ class ErrorSearchList extends StatelessWidget { ), const SizedBox(height: 30), Text( - t.search.cannotSearchError, + error, textAlign: TextAlign.center, style: TextStyle( fontSize: 24, diff --git a/lib/screens/search/ui/search_no_data.dart b/lib/widgets/no_data_screen.dart similarity index 78% rename from lib/screens/search/ui/search_no_data.dart rename to lib/widgets/no_data_screen.dart index d61e562..9c2001d 100644 --- a/lib/screens/search/ui/search_no_data.dart +++ b/lib/widgets/no_data_screen.dart @@ -1,9 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:linkdy/i18n/strings.g.dart'; +class NoDataScreen extends StatelessWidget { + final String message; -class SearchNoData extends StatelessWidget { - const SearchNoData({Key? key}) : super(key: key); + const NoDataScreen({ + Key? key, + required this.message, + }) : super(key: key); @override Widget build(BuildContext context) { @@ -19,7 +22,7 @@ class SearchNoData extends StatelessWidget { ), const SizedBox(height: 30), Text( - t.search.inputtedSearchTermNoResults, + message, textAlign: TextAlign.center, style: TextStyle( fontSize: 24,