Files
umbrix/lib/domain/failures.dart
problematicconsumer ef1846e553 Refactor preferences
2023-09-06 12:56:30 +03:30

32 lines
882 B
Dart

import 'package:dio/dio.dart';
import 'package:hiddify/core/prefs/prefs.dart';
mixin Failure {
({String type, String? message}) present(TranslationsEn t);
}
extension ErrorPresenter on TranslationsEn {
String? _errorToMessage(Object error) {
switch (error) {
case Failure():
final err = error.present(this);
return err.type + (err.message == null ? "" : ": ${err.message}");
case DioException():
return error.toString();
default:
return null;
}
}
String printError(Object error) =>
_errorToMessage(error) ?? failure.unexpected;
String? mayPrintError(Object? error) =>
error != null ? _errorToMessage(error) : null;
({String type, String? message}) presentError(Object error) {
if (error case Failure()) return error.present(this);
return (type: failure.unexpected, message: null);
}
}