serviceResolution function
Implementation
Future<bool> serviceResolution(
BuildContext context, {
required Map<String, dynamic> response,
required VoidCallback resolution,
VoidCallback? actionForStatusFalse,
}) async {
final InterfaceProvider interfaceProvider = Provider.of(
context,
listen: false,
);
bool success = false;
if (response.containsKey('generic_error')) {
interfaceProvider.loading = false;
utils.showSnackbar(
context,
message: response['generic_error'],
);
} else if (response.containsKey('no_network')) {
interfaceProvider.loading = false;
utils.showSnackbar(
context,
message: 'No hay internet',
);
} else if (response.containsKey('error')) {
interfaceProvider.loading = false;
await showDialog(
barrierDismissible: false,
context: context,
builder: (context) => ErrorDialog(
supportSubject: AppMailMessages.tokenExpiration,
onTap: () => utils.logout(context),
iconPath: 'assets/icons/dialogs/danger.svg',
iconColor: ApplicationTheme.red,
title: 'El token no es válido',
text: const <String>[
'La sesión en su dispositivo caducó',
'Vuelva a iniciar sesión',
],
buttonText: 'Iniciar Sesión',
),
);
} else if (response.containsKey('status')) {
if (response['status']) {
success = true;
resolution.call();
} else {
interfaceProvider.loading = false;
if (response.containsKey('errors')) {
if (actionForStatusFalse != null) {
actionForStatusFalse.call();
} else {
await showDialog(
context: context,
builder: (context) => ErrorDialog(
supportSubject: AppMailMessages.genericError,
iconPath: 'assets/icons/dialogs/danger.svg',
iconColor: Colors.orange,
title: response['message'],
text: (response['errors'] as List)
.map(
(element) => element.toString(),
)
.toList(),
buttonText: 'Aceptar',
onTap: actionForStatusFalse,
),
);
}
} else {
interfaceProvider.loading = false;
utils.showSnackbar(
context,
message: response['message'],
);
}
}
} else {
interfaceProvider.loading = false;
utils.showSnackbar(
context,
message: GlobalMessagesEnvironment.genericError,
);
}
return success;
}