feat: Add debug output, run app in guarded zone

This commit is contained in:
Anton Stubenbord
2023-06-14 11:53:37 +02:00
parent 2eca84cb30
commit 8b7bbae00b
9 changed files with 315 additions and 111 deletions

View File

@@ -19,11 +19,15 @@ class DioHttpErrorInterceptor extends Interceptor {
} else if (err.response?.statusCode == 403) {
var data = err.response!.data;
if (data is Map && data.containsKey("detail")) {
handler.reject(DioError(
requestOptions: err.requestOptions,
error: ServerMessageException(data['detail']),
response: err.response,
));
handler.reject(
DioError(
message: data['detail'],
requestOptions: err.requestOptions,
error: ServerMessageException(data['detail']),
response: err.response,
type: DioErrorType.unknown,
),
);
return;
}
} else if (err.error is SocketException) {
@@ -31,6 +35,7 @@ class DioHttpErrorInterceptor extends Interceptor {
if (ex.osError?.errorCode == _OsErrorCodes.serverUnreachable.code) {
return handler.reject(
DioError(
message: "The server could not be reached. Is the device offline?",
error: const PaperlessServerException(ErrorCode.deviceOffline),
requestOptions: err.requestOptions,
type: DioErrorType.connectionTimeout,

View File

@@ -3,6 +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_mobile/core/interceptor/retry_on_connection_change_interceptor.dart';
import 'package:paperless_mobile/features/login/model/client_certificate.dart';
import 'package:pretty_dio_logger/pretty_dio_logger.dart';
@@ -22,13 +23,14 @@ class SessionManager extends ValueNotifier<Dio> {
BaseOptions(contentType: Headers.jsonContentType),
);
dio.options
..receiveTimeout = const Duration(seconds: 20)
..receiveTimeout = const Duration(seconds: 30)
..sendTimeout = const Duration(seconds: 60)
..responseType = ResponseType.json;
(dio.httpClientAdapter as IOHttpClientAdapter).onHttpClientCreate =
(client) => client..badCertificateCallback = (cert, host, port) => true;
dio.interceptors.addAll([
...interceptors,
DioHttpErrorInterceptor(),
PrettyDioLogger(
compact: true,
responseBody: false,