Improved error messages

This commit is contained in:
Juan Gilsanz Polo
2024-02-24 01:57:39 +01:00
parent f11b112f97
commit ac340c108b
8 changed files with 69 additions and 36 deletions

View File

@@ -4,9 +4,9 @@
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 2 /// 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 // coverage:ignore-file
// ignore_for_file: type=lint // ignore_for_file: type=lint
@@ -212,6 +212,8 @@ class _StringsBookmarksEn {
// Translations // Translations
String get bookmarks => 'Bookmarks'; 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 _StringsBookmarksDatesEn dates = _StringsBookmarksDatesEn._(_root);
late final _StringsBookmarksAddBookmarkEn addBookmark = _StringsBookmarksAddBookmarkEn._(_root); late final _StringsBookmarksAddBookmarkEn addBookmark = _StringsBookmarksAddBookmarkEn._(_root);
} }
@@ -462,6 +464,8 @@ class _StringsBookmarksEs implements _StringsBookmarksEn {
// Translations // Translations
@override String get bookmarks => 'Marcadores'; @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 _StringsBookmarksDatesEs dates = _StringsBookmarksDatesEs._(_root);
@override late final _StringsBookmarksAddBookmarkEs addBookmark = _StringsBookmarksAddBookmarkEs._(_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.cannotConnectToServer': return 'Cannot connect to the server.';
case 'onboarding.invalidToken': return 'Invalid token.'; case 'onboarding.invalidToken': return 'Invalid token.';
case 'bookmarks.bookmarks': return 'Bookmarks'; 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.todayAt': return ({required Object time}) => 'Today, ${time}';
case 'bookmarks.dates.yesterdayAt': return ({required Object time}) => 'Yesterday, ${time}'; case 'bookmarks.dates.yesterdayAt': return ({required Object time}) => 'Yesterday, ${time}';
case 'bookmarks.addBookmark.addBookmark': return 'Add new bookmark'; 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.cannotConnectToServer': return 'No se puede conectar con el servidor.';
case 'onboarding.invalidToken': return 'Token no válido.'; case 'onboarding.invalidToken': return 'Token no válido.';
case 'bookmarks.bookmarks': return 'Marcadores'; 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.todayAt': return ({required Object time}) => 'Hoy, ${time}';
case 'bookmarks.dates.yesterdayAt': return ({required Object time}) => 'Ayer, ${time}'; case 'bookmarks.dates.yesterdayAt': return ({required Object time}) => 'Ayer, ${time}';
case 'bookmarks.addBookmark.addBookmark': return 'Añadir nuevo marcador'; case 'bookmarks.addBookmark.addBookmark': return 'Añadir nuevo marcador';

View File

@@ -34,6 +34,8 @@
}, },
"bookmarks": { "bookmarks": {
"bookmarks": "Bookmarks", "bookmarks": "Bookmarks",
"noBookmarksAdded": "No bookmarks added",
"cannotLoadBookmarks": "Cannot load the bookmarks",
"dates": { "dates": {
"todayAt": "Today, $time", "todayAt": "Today, $time",
"yesterdayAt": "Yesterday, $time" "yesterdayAt": "Yesterday, $time"

View File

@@ -34,6 +34,8 @@
}, },
"bookmarks": { "bookmarks": {
"bookmarks": "Marcadores", "bookmarks": "Marcadores",
"noBookmarksAdded": "No hay marcadores añadidos",
"cannotLoadBookmarks": "No se pueden cargar los marcadores",
"dates": { "dates": {
"todayAt": "Hoy, $time", "todayAt": "Hoy, $time",
"yesterdayAt": "Ayer, $time" "yesterdayAt": "Ayer, $time"

View File

@@ -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/provider/bookmarks.provider.dart';
import 'package:linkdy/screens/bookmarks/ui/bookmark_item.dart'; import 'package:linkdy/screens/bookmarks/ui/bookmark_item.dart';
import 'package:linkdy/screens/bookmarks/ui/add_bookmark_modal.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'; import 'package:linkdy/i18n/strings.g.dart';
@@ -65,17 +67,17 @@ class BookmarksScreen extends ConsumerWidget {
child: Center(child: CircularProgressIndicator()), child: Center(child: CircularProgressIndicator()),
), ),
if (bookmarks.value != null && bookmarks.value!.successful == false) if (bookmarks.value != null && bookmarks.value!.successful == false)
const SliverFillRemaining( SliverFillRemaining(
child: Center( child: ErrorScreen(
child: Icon(Icons.error), error: t.bookmarks.cannotLoadBookmarks,
), ),
), ),
if (bookmarks.value != null && if (bookmarks.value != null &&
bookmarks.value!.successful == true && bookmarks.value!.successful == true &&
bookmarks.value!.content!.results!.isEmpty) bookmarks.value!.content!.results!.isEmpty)
const SliverFillRemaining( SliverFillRemaining(
child: Center( child: NoDataScreen(
child: Text("No bookmarks"), message: t.bookmarks.noBookmarksAdded,
), ),
), ),
if (bookmarks.value != null && if (bookmarks.value != null &&

View File

@@ -1,11 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.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/search/ui/input_search_term.dart';
import 'package:linkdy/screens/bookmarks/ui/bookmark_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/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'; import 'package:linkdy/widgets/sliver_tab_body.dart';
class BookmarksSearchList extends ConsumerWidget { class BookmarksSearchList extends ConsumerWidget {
@@ -26,17 +27,19 @@ class BookmarksSearchList extends ConsumerWidget {
return bookmarksSearch.when( return bookmarksSearch.when(
data: (data) { data: (data) {
if (data!.successful == false) { if (data!.successful == false) {
return const SliverTabBody( return SliverTabBody(
child: SliverFillRemaining( child: SliverFillRemaining(
child: Center( child: ErrorScreen(
child: Icon(Icons.error_rounded), error: t.search.cannotSearchError,
), ),
), ),
); );
} else if (data.content!.results!.isEmpty) { } else if (data.content!.results!.isEmpty) {
return const SliverTabBody( return SliverTabBody(
child: SliverFillRemaining( child: SliverFillRemaining(
child: SearchNoData(), child: NoDataScreen(
message: t.search.inputtedSearchTermNoResults,
),
), ),
); );
} else { } else {
@@ -51,10 +54,10 @@ class BookmarksSearchList extends ConsumerWidget {
); );
} }
}, },
error: (error, stackTrace) => const SliverTabBody( error: (error, stackTrace) => SliverTabBody(
child: SliverFillRemaining( child: SliverFillRemaining(
child: Center( child: ErrorScreen(
child: ErrorSearchList(), error: t.search.cannotSearchError,
), ),
), ),
), ),

View File

@@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:linkdy/screens/search/provider/search.provider.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/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/widgets/sliver_tab_body.dart';
import 'package:linkdy/i18n/strings.g.dart'; import 'package:linkdy/i18n/strings.g.dart';
@@ -28,17 +28,23 @@ class TagsSearchList extends ConsumerWidget {
return bookmarksSearch.when( return bookmarksSearch.when(
data: (data) { data: (data) {
if (data!.successful == false) { if (data!.successful == false) {
return const SliverTabBody( return SliverTabBody(
child: SliverFillRemaining( child: SliverFillRemaining(
child: Center( child: SliverTabBody(
child: Icon(Icons.error_rounded), child: SliverFillRemaining(
child: ErrorScreen(
error: t.search.cannotSearchError,
),
),
), ),
), ),
); );
} else if (data.content!.results!.isEmpty) { } else if (data.content!.results!.isEmpty) {
return const SliverTabBody( return SliverTabBody(
child: SliverFillRemaining( child: SliverFillRemaining(
child: SearchNoData(), child: NoDataScreen(
message: t.search.inputtedSearchTermNoResults,
),
), ),
); );
} else { } else {
@@ -65,10 +71,14 @@ class TagsSearchList extends ConsumerWidget {
); );
} }
}, },
error: (error, stackTrace) => const SliverTabBody( error: (error, stackTrace) => SliverTabBody(
child: SliverFillRemaining( child: SliverFillRemaining(
child: Center( child: SliverTabBody(
child: ErrorSearchList(), child: SliverFillRemaining(
child: ErrorScreen(
error: t.search.cannotSearchError,
),
),
), ),
), ),
), ),

View File

@@ -1,9 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:linkdy/i18n/strings.g.dart'; class ErrorScreen extends StatelessWidget {
final String error;
class ErrorSearchList extends StatelessWidget { const ErrorScreen({
const ErrorSearchList({Key? key}) : super(key: key); Key? key,
required this.error,
}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -19,7 +22,7 @@ class ErrorSearchList extends StatelessWidget {
), ),
const SizedBox(height: 30), const SizedBox(height: 30),
Text( Text(
t.search.cannotSearchError, error,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontSize: 24, fontSize: 24,

View File

@@ -1,9 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:linkdy/i18n/strings.g.dart'; class NoDataScreen extends StatelessWidget {
final String message;
class SearchNoData extends StatelessWidget { const NoDataScreen({
const SearchNoData({Key? key}) : super(key: key); Key? key,
required this.message,
}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -19,7 +22,7 @@ class SearchNoData extends StatelessWidget {
), ),
const SizedBox(height: 30), const SizedBox(height: 30),
Text( Text(
t.search.inputtedSearchTermNoResults, message,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontSize: 24, fontSize: 24,