Add link improvements
This commit is contained in:
@@ -4,9 +4,9 @@
|
|||||||
/// To regenerate, run: `dart run slang`
|
/// To regenerate, run: `dart run slang`
|
||||||
///
|
///
|
||||||
/// Locales: 2
|
/// Locales: 2
|
||||||
/// Strings: 150 (75 per locale)
|
/// Strings: 162 (81 per locale)
|
||||||
///
|
///
|
||||||
/// Built on 2024-02-23 at 14:24 UTC
|
/// Built on 2024-02-23 at 17:01 UTC
|
||||||
|
|
||||||
// coverage:ignore-file
|
// coverage:ignore-file
|
||||||
// ignore_for_file: type=lint
|
// ignore_for_file: type=lint
|
||||||
@@ -168,6 +168,8 @@ class _StringsGenericEn {
|
|||||||
String get cancel => 'Cancel';
|
String get cancel => 'Cancel';
|
||||||
String get next => 'Next';
|
String get next => 'Next';
|
||||||
String get save => 'Save';
|
String get save => 'Save';
|
||||||
|
String get close => 'Close';
|
||||||
|
String get error => 'Error';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Path: onboarding
|
// Path: onboarding
|
||||||
@@ -302,6 +304,10 @@ class _StringsLinksAddLinkEn {
|
|||||||
String get markAsUnread => 'Mark as unread';
|
String get markAsUnread => 'Mark as unread';
|
||||||
String get notes => 'Notes';
|
String get notes => 'Notes';
|
||||||
String get addNotes => 'Add notes';
|
String get addNotes => 'Add notes';
|
||||||
|
String get savingLink => 'Saving link...';
|
||||||
|
String get errorSavingLink => 'An error occured when saving the new link.';
|
||||||
|
String get leaveEmptyUseWebsiteTitle => 'Leave empty to use the website\'s title.';
|
||||||
|
String get leaveEmptyUseWebsiteDescription => 'Leave empty to use the website\'s description.';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Path: settings.customization
|
// Path: settings.customization
|
||||||
@@ -389,6 +395,8 @@ class _StringsGenericEs implements _StringsGenericEn {
|
|||||||
@override String get cancel => 'Cancelar';
|
@override String get cancel => 'Cancelar';
|
||||||
@override String get next => 'Siguiente';
|
@override String get next => 'Siguiente';
|
||||||
@override String get save => 'Guardar';
|
@override String get save => 'Guardar';
|
||||||
|
@override String get close => 'Cerrar';
|
||||||
|
@override String get error => 'Error';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Path: onboarding
|
// Path: onboarding
|
||||||
@@ -523,6 +531,10 @@ class _StringsLinksAddLinkEs implements _StringsLinksAddLinkEn {
|
|||||||
@override String get markAsUnread => 'Marcar como no leído';
|
@override String get markAsUnread => 'Marcar como no leído';
|
||||||
@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 savingLink => 'Guardando enlace...';
|
||||||
|
@override String get errorSavingLink => 'Ocurrió un error al guardar el nuevo enlace.';
|
||||||
|
@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.';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Path: settings.customization
|
// Path: settings.customization
|
||||||
@@ -576,6 +588,8 @@ extension on Translations {
|
|||||||
case 'generic.cancel': return 'Cancel';
|
case 'generic.cancel': return 'Cancel';
|
||||||
case 'generic.next': return 'Next';
|
case 'generic.next': return 'Next';
|
||||||
case 'generic.save': return 'Save';
|
case 'generic.save': return 'Save';
|
||||||
|
case 'generic.close': return 'Close';
|
||||||
|
case 'generic.error': return 'Error';
|
||||||
case 'onboarding.title': return 'Welcome to Linkdy';
|
case 'onboarding.title': return 'Welcome to Linkdy';
|
||||||
case 'onboarding.subtitle': return 'An application to manage your bookmarks.';
|
case 'onboarding.subtitle': return 'An application to manage your bookmarks.';
|
||||||
case 'onboarding.start': return 'Start';
|
case 'onboarding.start': return 'Start';
|
||||||
@@ -608,6 +622,10 @@ extension on Translations {
|
|||||||
case 'links.addLink.markAsUnread': return 'Mark as unread';
|
case 'links.addLink.markAsUnread': return 'Mark as unread';
|
||||||
case 'links.addLink.notes': return 'Notes';
|
case 'links.addLink.notes': return 'Notes';
|
||||||
case 'links.addLink.addNotes': return 'Add notes';
|
case 'links.addLink.addNotes': return 'Add notes';
|
||||||
|
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 'search.search': return 'Search';
|
case 'search.search': return 'Search';
|
||||||
case 'settings.settings': return 'Settings';
|
case 'settings.settings': return 'Settings';
|
||||||
case 'settings.appSettings': return 'App settings';
|
case 'settings.appSettings': return 'App settings';
|
||||||
@@ -659,6 +677,8 @@ extension on _StringsEs {
|
|||||||
case 'generic.cancel': return 'Cancelar';
|
case 'generic.cancel': return 'Cancelar';
|
||||||
case 'generic.next': return 'Siguiente';
|
case 'generic.next': return 'Siguiente';
|
||||||
case 'generic.save': return 'Guardar';
|
case 'generic.save': return 'Guardar';
|
||||||
|
case 'generic.close': return 'Cerrar';
|
||||||
|
case 'generic.error': return 'Error';
|
||||||
case 'onboarding.title': return 'Bienvenido a Linkdy';
|
case 'onboarding.title': return 'Bienvenido a Linkdy';
|
||||||
case 'onboarding.subtitle': return 'Una aplicación para gestionar tus enlaces favoritos.';
|
case 'onboarding.subtitle': return 'Una aplicación para gestionar tus enlaces favoritos.';
|
||||||
case 'onboarding.start': return 'Comenzar';
|
case 'onboarding.start': return 'Comenzar';
|
||||||
@@ -691,6 +711,10 @@ extension on _StringsEs {
|
|||||||
case 'links.addLink.markAsUnread': return 'Marcar como no leído';
|
case 'links.addLink.markAsUnread': return 'Marcar como no leído';
|
||||||
case 'links.addLink.notes': return 'Notas';
|
case 'links.addLink.notes': return 'Notas';
|
||||||
case 'links.addLink.addNotes': return 'Añadir notas';
|
case 'links.addLink.addNotes': return 'Añadir notas';
|
||||||
|
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 'search.search': return 'Buscar';
|
case 'search.search': return 'Buscar';
|
||||||
case 'settings.settings': return 'Ajustes';
|
case 'settings.settings': return 'Ajustes';
|
||||||
case 'settings.appSettings': return 'Ajustes de la aplicación';
|
case 'settings.appSettings': return 'Ajustes de la aplicación';
|
||||||
|
|||||||
@@ -3,7 +3,9 @@
|
|||||||
"confirm": "Confirm",
|
"confirm": "Confirm",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"next": "Next",
|
"next": "Next",
|
||||||
"save": "Save"
|
"save": "Save",
|
||||||
|
"close": "Close",
|
||||||
|
"error": "Error"
|
||||||
},
|
},
|
||||||
"onboarding": {
|
"onboarding": {
|
||||||
"title": "Welcome to Linkdy",
|
"title": "Welcome to Linkdy",
|
||||||
@@ -42,7 +44,11 @@
|
|||||||
"description": "Description",
|
"description": "Description",
|
||||||
"markAsUnread": "Mark as unread",
|
"markAsUnread": "Mark as unread",
|
||||||
"notes": "Notes",
|
"notes": "Notes",
|
||||||
"addNotes": "Add notes"
|
"addNotes": "Add notes",
|
||||||
|
"savingLink": "Saving link...",
|
||||||
|
"errorSavingLink": "An error occured when saving the new link.",
|
||||||
|
"leaveEmptyUseWebsiteTitle": "Leave empty to use the website's title.",
|
||||||
|
"leaveEmptyUseWebsiteDescription": "Leave empty to use the website's description."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
|
|||||||
@@ -3,7 +3,9 @@
|
|||||||
"confirm": "Confirmar",
|
"confirm": "Confirmar",
|
||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"next": "Siguiente",
|
"next": "Siguiente",
|
||||||
"save": "Guardar"
|
"save": "Guardar",
|
||||||
|
"close": "Cerrar",
|
||||||
|
"error": "Error"
|
||||||
},
|
},
|
||||||
"onboarding": {
|
"onboarding": {
|
||||||
"title": "Bienvenido a Linkdy",
|
"title": "Bienvenido a Linkdy",
|
||||||
@@ -42,7 +44,11 @@
|
|||||||
"description": "Description",
|
"description": "Description",
|
||||||
"markAsUnread": "Marcar como no leído",
|
"markAsUnread": "Marcar como no leído",
|
||||||
"notes": "Notas",
|
"notes": "Notas",
|
||||||
"addNotes": "Añadir notas"
|
"addNotes": "Añadir notas",
|
||||||
|
"savingLink": "Guardando enlace...",
|
||||||
|
"errorSavingLink": "Ocurrió un error al guardar el nuevo enlace.",
|
||||||
|
"leaveEmptyUseWebsiteTitle": "Dejar vacío para usar el título del sitio web.",
|
||||||
|
"leaveEmptyUseWebsiteDescription": "Dejar vacío para usar la descripción del sitio web."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
import 'package:expandable/expandable.dart';
|
import 'package:expandable/expandable.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:linkdy/utils/snackbar.dart';
|
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
|
|
||||||
|
import 'package:linkdy/screens/links/ui/error_save_link.dart';
|
||||||
import 'package:linkdy/screens/links/provider/links.provider.dart';
|
import 'package:linkdy/screens/links/provider/links.provider.dart';
|
||||||
import 'package:linkdy/screens/links/model/add_link.model.dart';
|
import 'package:linkdy/screens/links/model/add_link.model.dart';
|
||||||
|
|
||||||
|
import 'package:linkdy/i18n/strings.g.dart';
|
||||||
|
import 'package:linkdy/router/routes.dart';
|
||||||
|
import 'package:linkdy/utils/process_modal.dart';
|
||||||
import 'package:linkdy/models/data/post_bookmark.dart';
|
import 'package:linkdy/models/data/post_bookmark.dart';
|
||||||
import 'package:linkdy/providers/router_provider.dart';
|
import 'package:linkdy/providers/router_provider.dart';
|
||||||
import 'package:linkdy/models/data/bookmarks.dart';
|
import 'package:linkdy/models/data/bookmarks.dart';
|
||||||
@@ -87,16 +90,21 @@ class AddLink extends _$AddLink {
|
|||||||
shared: false,
|
shared: false,
|
||||||
tagNames: [],
|
tagNames: [],
|
||||||
);
|
);
|
||||||
print(newBookmark.toJson());
|
|
||||||
|
final processModal = ProcessModal();
|
||||||
|
processModal.open(t.links.addLink.savingLink);
|
||||||
|
|
||||||
final result = await ref.watch(addBookmarkProvider(newBookmark).future);
|
final result = await ref.watch(addBookmarkProvider(newBookmark).future);
|
||||||
print(result.content);
|
|
||||||
|
processModal.close();
|
||||||
|
|
||||||
if (result.successful == true) {
|
if (result.successful == true) {
|
||||||
ref.invalidate(linksRequestProvider);
|
ref.invalidate(linksRequestProvider);
|
||||||
ref.watch(routerProvider).pop();
|
ref.watch(routerProvider).pop();
|
||||||
} else {
|
} else {
|
||||||
showSnacbkar(
|
showDialog(
|
||||||
label: "Add bookmark failed",
|
context: rootNavigatorKey.currentContext!,
|
||||||
color: Colors.red,
|
builder: (context) => const ErrorSaveLink(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,7 +107,10 @@ class AddLinkModalState extends ConsumerState<AddLinkModal> with SingleTickerPro
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (provider.checkBookmark != null) ...[
|
if (provider.checkBookmark != null) ...[
|
||||||
const SizedBox(height: 24),
|
const Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 24, vertical: 16),
|
||||||
|
child: Divider(),
|
||||||
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 24),
|
padding: const EdgeInsets.symmetric(horizontal: 24),
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
@@ -125,6 +128,7 @@ class AddLinkModalState extends ConsumerState<AddLinkModal> with SingleTickerPro
|
|||||||
labelText: t.links.addLink.title,
|
labelText: t.links.addLink.title,
|
||||||
hintText: provider.checkBookmark?.metadata?.title,
|
hintText: provider.checkBookmark?.metadata?.title,
|
||||||
floatingLabelBehavior: FloatingLabelBehavior.always,
|
floatingLabelBehavior: FloatingLabelBehavior.always,
|
||||||
|
helperText: t.links.addLink.leaveEmptyUseWebsiteTitle,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -146,6 +150,7 @@ class AddLinkModalState extends ConsumerState<AddLinkModal> with SingleTickerPro
|
|||||||
labelText: t.links.addLink.description,
|
labelText: t.links.addLink.description,
|
||||||
hintText: provider.checkBookmark?.metadata?.description,
|
hintText: provider.checkBookmark?.metadata?.description,
|
||||||
floatingLabelBehavior: FloatingLabelBehavior.always,
|
floatingLabelBehavior: FloatingLabelBehavior.always,
|
||||||
|
helperText: t.links.addLink.leaveEmptyUseWebsiteDescription,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
26
lib/screens/links/ui/error_save_link.dart
Normal file
26
lib/screens/links/ui/error_save_link.dart
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'package:linkdy/i18n/strings.g.dart';
|
||||||
|
|
||||||
|
class ErrorSaveLink extends StatelessWidget {
|
||||||
|
const ErrorSaveLink({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return AlertDialog(
|
||||||
|
title: Text(t.generic.error),
|
||||||
|
content: Text(t.links.addLink.errorSavingLink),
|
||||||
|
actions: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
TextButton(
|
||||||
|
onPressed: () => Navigator.pop(context),
|
||||||
|
child: Text(t.generic.close),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user