feat(push_notifications): issue-660, fix: issue-908

This commit is contained in:
misha
2026-10-14 08:16:20 +03:00
parent 98c175df44
commit dcd343e765
29 changed files with 2281 additions and 608 deletions

View File

@@ -0,0 +1,42 @@
import 'package:dio/dio.dart';
const notificationSettingsSaveFailedMessage =
'Не удалось сохранить настройки уведомлений';
String notificationSettingsUpdateAlertMessage(Object error) {
final validationMessage = _validationMessage(error);
if (validationMessage != null) return validationMessage;
return notificationSettingsSaveFailedMessage;
}
String? _validationMessage(Object error) {
if (error is! DioException || error.response?.statusCode != 422) return null;
final data = error.response?.data;
if (data is! Map) return null;
final errors = data['errors'];
if (errors is Map) {
for (final value in errors.values) {
final text = _firstErrorText(value);
if (text != null) return text;
}
}
final message = data['message'];
if (message is String && message.trim().isNotEmpty) return message.trim();
return null;
}
String? _firstErrorText(Object? value) {
if (value is List) {
for (final item in value) {
final text = item.toString().trim();
if (text.isNotEmpty) return text;
}
return null;
}
if (value is String && value.trim().isNotEmpty) return value.trim();
return null;
}