notificaciones al pedir servicio y al enviar mensaje de chat

This commit is contained in:
Felipe
2024-04-25 11:15:33 -05:00
parent 76be1f1f1a
commit e1049f7281
15 changed files with 411 additions and 304 deletions
+23 -5
View File
@@ -13,9 +13,11 @@ import 'package:injector/injector.dart';
import 'package:intl/intl.dart';
import 'package:professional_repository/professional_repository.dart';
import 'package:prosappco/blocs/my_user_bloc/my_user_bloc.dart';
import 'package:prosappco/blocs/notification_bloc/notification_bloc.dart';
import 'package:prosappco/blocs/professional_list_bloc/professional_list_bloc.dart';
import 'package:prosappco/blocs/service_bloc/service_bloc.dart';
import 'package:prosappco/constansts.dart';
import 'package:prosappco/local_notifications/local_notifications.dart';
import 'package:prosappco/screens/lists/professional_list_screen.dart';
import 'package:prosappco/screens/user/user_service_screen.dart';
import 'package:prosappco/utils/time_of_day_extension.dart';
@@ -86,6 +88,10 @@ class _UserMapScreenState extends State<UserMapScreen> {
}
}
// void requestNotificationPermission() async {
// context.read<NotificationBloc>().requestPermission();
// }
void _loadSettings() {
settingRepository.getSettings().then(
(value) => setState(() {
@@ -172,10 +178,13 @@ class _UserMapScreenState extends State<UserMapScreen> {
elevation: 3,
minimumSize: const Size(50, 50),
),
child: const Icon(
child: Icon(
Icons.menu,
color: Colors.black,
size: 35,
size: context.select(
(NotificationBloc bloc) =>
bloc.state.status.index > 0 ? 35 : 35,
),
),
onPressed: () {
Scaffold.of(context).openDrawer();
@@ -318,6 +327,9 @@ class _UserMapScreenState extends State<UserMapScreen> {
decoration: const InputDecoration(
prefixIcon: Icon(Icons.assignment_ind_rounded),
suffixIcon: Icon(Icons.arrow_drop_down),
// hintText: context.select(
// (NotificationBloc bloc) => '${bloc.state.status}',
// ),
hintText: 'Selecciona un profesional',
),
),
@@ -386,7 +398,7 @@ class _UserMapScreenState extends State<UserMapScreen> {
onPressed: isLoading
? null
: () {
// tODO: Crear servicio
if (profesionalSeleccionado == null) return;
if (serviceLocationPreference ==
ServiceLocationPreferences.office) {
if (settings?.tarifas == true) {
@@ -487,7 +499,14 @@ class _UserMapScreenState extends State<UserMapScreen> {
// TODO: error inesperado
}
// clear inputs
if (profesionalSeleccionado!.myUser.token != null) {
LocalNotifications.sendPushNotification(
profesionalSeleccionado!.myUser.token!,
'Nuevo servicio',
'Tienes una nueva solicitud de servicio pendiente',
);
}
fechaSeleccionada = null;
horaSeleccionada = null;
profesionalSeleccionado = null;
@@ -538,7 +557,6 @@ class _UserMapScreenState extends State<UserMapScreen> {
borderRadius: BorderRadius.circular(10),
),
),
//x
child: const Icon(
CupertinoIcons.xmark,
color: Colors.white,