mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-14 22:12:18 -06:00
feat: Add tests, update notes implementation
This commit is contained in:
@@ -1,61 +0,0 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
|
||||
class DioHttpErrorInterceptor extends Interceptor {
|
||||
@override
|
||||
void onError(DioException err, ErrorInterceptorHandler handler) {
|
||||
if (err.response?.statusCode == 400) {
|
||||
final data = err.response!.data;
|
||||
if (PaperlessServerMessageException.canParse(data)) {
|
||||
final exception = PaperlessServerMessageException.fromJson(data);
|
||||
final message = exception.detail;
|
||||
handler.reject(
|
||||
DioException(
|
||||
message: message,
|
||||
requestOptions: err.requestOptions,
|
||||
error: exception,
|
||||
response: err.response,
|
||||
type: DioExceptionType.badResponse,
|
||||
),
|
||||
);
|
||||
} else if (PaperlessFormValidationException.canParse(data)) {
|
||||
final exception = PaperlessFormValidationException.fromJson(data);
|
||||
handler.reject(
|
||||
DioException(
|
||||
requestOptions: err.requestOptions,
|
||||
error: exception,
|
||||
response: err.response,
|
||||
type: DioExceptionType.badResponse,
|
||||
),
|
||||
);
|
||||
} else if (data is String) {
|
||||
if (data.contains("No required SSL certificate was sent")) {
|
||||
handler.reject(
|
||||
DioException(
|
||||
requestOptions: err.requestOptions,
|
||||
type: DioExceptionType.badResponse,
|
||||
error: const PaperlessApiException(
|
||||
ErrorCode.missingClientCertificate),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
handler.reject(
|
||||
DioException(
|
||||
requestOptions: err.requestOptions,
|
||||
message: data,
|
||||
error: PaperlessApiException(
|
||||
ErrorCode.documentLoadFailed,
|
||||
details: data,
|
||||
),
|
||||
response: err.response,
|
||||
stackTrace: err.stackTrace,
|
||||
type: DioExceptionType.badResponse,
|
||||
),
|
||||
);
|
||||
}
|
||||
} else {
|
||||
handler.reject(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,4 +9,9 @@ class InfoMessageException implements Exception {
|
||||
this.message,
|
||||
this.stackTrace,
|
||||
});
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'InfoMessageException(code: $code, message: $message, stackTrace: $stackTrace)';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'dart:io';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:dio/io.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:paperless_mobile/core/interceptor/dio_http_error_interceptor.dart';
|
||||
import 'package:paperless_api/src/interceptor/dio_http_error_interceptor.dart';
|
||||
import 'package:paperless_mobile/core/interceptor/dio_offline_interceptor.dart';
|
||||
import 'package:paperless_mobile/core/interceptor/dio_unauthorized_interceptor.dart';
|
||||
import 'package:paperless_mobile/core/interceptor/retry_on_connection_change_interceptor.dart';
|
||||
|
||||
@@ -82,5 +82,7 @@ String translateError(BuildContext context, ErrorCode code) {
|
||||
'Could not load custom field.', //TODO: INTL
|
||||
ErrorCode.customFieldDeleteFailed =>
|
||||
'Could not delete custom field, please try again.', //TODO: INTL
|
||||
ErrorCode.deleteNoteFailed => 'Could not delete note, please try again.',
|
||||
ErrorCode.addNoteFailed => 'Could not create note, please try again.',
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user