feat: Externalize settings into LocalUserAppState, fix bugs

This commit is contained in:
Anton Stubenbord
2023-04-26 01:29:14 +02:00
parent 8c2a6928b4
commit 37c9559888
41 changed files with 340 additions and 316 deletions

View File

@@ -14,7 +14,7 @@ class IdQueryParameter with _$IdQueryParameter {
@HiveType(typeId: PaperlessApiHiveTypeIds.anyAssignedIdQueryParameter)
const factory IdQueryParameter.anyAssigned() = AnyAssignedIdQueryParameter;
@HiveType(typeId: PaperlessApiHiveTypeIds.setIdQueryParameter)
const factory IdQueryParameter.fromId(@HiveField(0) int? id) = SetIdQueryParameter;
const factory IdQueryParameter.fromId(@HiveField(0) int id) = SetIdQueryParameter;
Map<String, String> toQueryParameter(String field) {
return when(

View File

@@ -38,7 +38,7 @@ mixin _$IdQueryParameter {
required TResult Function() unset,
required TResult Function() notAssigned,
required TResult Function() anyAssigned,
required TResult Function(@HiveField(0) int? id) fromId,
required TResult Function(@HiveField(0) int id) fromId,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
@@ -46,7 +46,7 @@ mixin _$IdQueryParameter {
TResult? Function()? unset,
TResult? Function()? notAssigned,
TResult? Function()? anyAssigned,
TResult? Function(@HiveField(0) int? id)? fromId,
TResult? Function(@HiveField(0) int id)? fromId,
}) =>
throw _privateConstructorUsedError;
@optionalTypeArgs
@@ -54,7 +54,7 @@ mixin _$IdQueryParameter {
TResult Function()? unset,
TResult Function()? notAssigned,
TResult Function()? anyAssigned,
TResult Function(@HiveField(0) int? id)? fromId,
TResult Function(@HiveField(0) int id)? fromId,
required TResult orElse(),
}) =>
throw _privateConstructorUsedError;
@@ -155,7 +155,7 @@ class _$UnsetIdQueryParameter extends UnsetIdQueryParameter {
required TResult Function() unset,
required TResult Function() notAssigned,
required TResult Function() anyAssigned,
required TResult Function(@HiveField(0) int? id) fromId,
required TResult Function(@HiveField(0) int id) fromId,
}) {
return unset();
}
@@ -166,7 +166,7 @@ class _$UnsetIdQueryParameter extends UnsetIdQueryParameter {
TResult? Function()? unset,
TResult? Function()? notAssigned,
TResult? Function()? anyAssigned,
TResult? Function(@HiveField(0) int? id)? fromId,
TResult? Function(@HiveField(0) int id)? fromId,
}) {
return unset?.call();
}
@@ -177,7 +177,7 @@ class _$UnsetIdQueryParameter extends UnsetIdQueryParameter {
TResult Function()? unset,
TResult Function()? notAssigned,
TResult Function()? anyAssigned,
TResult Function(@HiveField(0) int? id)? fromId,
TResult Function(@HiveField(0) int id)? fromId,
required TResult orElse(),
}) {
if (unset != null) {
@@ -293,7 +293,7 @@ class _$NotAssignedIdQueryParameter extends NotAssignedIdQueryParameter {
required TResult Function() unset,
required TResult Function() notAssigned,
required TResult Function() anyAssigned,
required TResult Function(@HiveField(0) int? id) fromId,
required TResult Function(@HiveField(0) int id) fromId,
}) {
return notAssigned();
}
@@ -304,7 +304,7 @@ class _$NotAssignedIdQueryParameter extends NotAssignedIdQueryParameter {
TResult? Function()? unset,
TResult? Function()? notAssigned,
TResult? Function()? anyAssigned,
TResult? Function(@HiveField(0) int? id)? fromId,
TResult? Function(@HiveField(0) int id)? fromId,
}) {
return notAssigned?.call();
}
@@ -315,7 +315,7 @@ class _$NotAssignedIdQueryParameter extends NotAssignedIdQueryParameter {
TResult Function()? unset,
TResult Function()? notAssigned,
TResult Function()? anyAssigned,
TResult Function(@HiveField(0) int? id)? fromId,
TResult Function(@HiveField(0) int id)? fromId,
required TResult orElse(),
}) {
if (notAssigned != null) {
@@ -431,7 +431,7 @@ class _$AnyAssignedIdQueryParameter extends AnyAssignedIdQueryParameter {
required TResult Function() unset,
required TResult Function() notAssigned,
required TResult Function() anyAssigned,
required TResult Function(@HiveField(0) int? id) fromId,
required TResult Function(@HiveField(0) int id) fromId,
}) {
return anyAssigned();
}
@@ -442,7 +442,7 @@ class _$AnyAssignedIdQueryParameter extends AnyAssignedIdQueryParameter {
TResult? Function()? unset,
TResult? Function()? notAssigned,
TResult? Function()? anyAssigned,
TResult? Function(@HiveField(0) int? id)? fromId,
TResult? Function(@HiveField(0) int id)? fromId,
}) {
return anyAssigned?.call();
}
@@ -453,7 +453,7 @@ class _$AnyAssignedIdQueryParameter extends AnyAssignedIdQueryParameter {
TResult Function()? unset,
TResult Function()? notAssigned,
TResult Function()? anyAssigned,
TResult Function(@HiveField(0) int? id)? fromId,
TResult Function(@HiveField(0) int id)? fromId,
required TResult orElse(),
}) {
if (anyAssigned != null) {
@@ -521,7 +521,7 @@ abstract class _$$SetIdQueryParameterCopyWith<$Res> {
$Res Function(_$SetIdQueryParameter) then) =
__$$SetIdQueryParameterCopyWithImpl<$Res>;
@useResult
$Res call({@HiveField(0) int? id});
$Res call({@HiveField(0) int id});
}
/// @nodoc
@@ -535,13 +535,13 @@ class __$$SetIdQueryParameterCopyWithImpl<$Res>
@pragma('vm:prefer-inline')
@override
$Res call({
Object? id = freezed,
Object? id = null,
}) {
return _then(_$SetIdQueryParameter(
freezed == id
null == id
? _value.id
: id // ignore: cast_nullable_to_non_nullable
as int?,
as int,
));
}
}
@@ -559,7 +559,7 @@ class _$SetIdQueryParameter extends SetIdQueryParameter {
@override
@HiveField(0)
final int? id;
final int id;
@JsonKey(name: 'runtimeType')
final String $type;
@@ -594,7 +594,7 @@ class _$SetIdQueryParameter extends SetIdQueryParameter {
required TResult Function() unset,
required TResult Function() notAssigned,
required TResult Function() anyAssigned,
required TResult Function(@HiveField(0) int? id) fromId,
required TResult Function(@HiveField(0) int id) fromId,
}) {
return fromId(id);
}
@@ -605,7 +605,7 @@ class _$SetIdQueryParameter extends SetIdQueryParameter {
TResult? Function()? unset,
TResult? Function()? notAssigned,
TResult? Function()? anyAssigned,
TResult? Function(@HiveField(0) int? id)? fromId,
TResult? Function(@HiveField(0) int id)? fromId,
}) {
return fromId?.call(id);
}
@@ -616,7 +616,7 @@ class _$SetIdQueryParameter extends SetIdQueryParameter {
TResult Function()? unset,
TResult Function()? notAssigned,
TResult Function()? anyAssigned,
TResult Function(@HiveField(0) int? id)? fromId,
TResult Function(@HiveField(0) int id)? fromId,
required TResult orElse(),
}) {
if (fromId != null) {
@@ -671,7 +671,7 @@ class _$SetIdQueryParameter extends SetIdQueryParameter {
}
abstract class SetIdQueryParameter extends IdQueryParameter {
const factory SetIdQueryParameter(@HiveField(0) final int? id) =
const factory SetIdQueryParameter(@HiveField(0) final int id) =
_$SetIdQueryParameter;
const SetIdQueryParameter._() : super._();
@@ -679,7 +679,7 @@ abstract class SetIdQueryParameter extends IdQueryParameter {
_$SetIdQueryParameter.fromJson;
@HiveField(0)
int? get id;
int get id;
@JsonKey(ignore: true)
_$$SetIdQueryParameterCopyWith<_$SetIdQueryParameter> get copyWith =>
throw _privateConstructorUsedError;

View File

@@ -7,6 +7,7 @@ import 'query_type.dart';
part 'text_query.g.dart';
//TODO: Realize with freezed...
@HiveType(typeId: PaperlessApiHiveTypeIds.textQuery)
@JsonSerializable()
class TextQuery extends Equatable {

View File

@@ -78,6 +78,7 @@ class PaperlessDocumentsApiImpl implements PaperlessDocumentsApi {
throw const PaperlessServerException(ErrorCode.documentUpdateFailed);
}
} on DioError catch (err) {
//TODO: Handle 403 permission errors for 1.14.0
throw err.error!;
}
}
@@ -86,8 +87,7 @@ class PaperlessDocumentsApiImpl implements PaperlessDocumentsApi {
Future<PagedSearchResult<DocumentModel>> findAll(
DocumentFilter filter,
) async {
final filterParams = filter.toQueryParameters()
..addAll({'truncate_content': "true"});
final filterParams = filter.toQueryParameters()..addAll({'truncate_content': "true"});
try {
final response = await client.get(
"/api/documents/",
@@ -137,9 +137,8 @@ class PaperlessDocumentsApiImpl implements PaperlessDocumentsApi {
try {
final response = await client.get(
getPreviewUrl(documentId),
options: Options(
responseType: ResponseType
.bytes), //TODO: Check if bytes or stream is required
options:
Options(responseType: ResponseType.bytes), //TODO: Check if bytes or stream is required
);
if (response.statusCode == 200) {
return response.data;
@@ -219,8 +218,7 @@ class PaperlessDocumentsApiImpl implements PaperlessDocumentsApi {
final response = await client.download(
"/api/documents/${document.id}/download/",
localFilePath,
onReceiveProgress: (count, total) =>
onProgressChanged?.call(count / total),
onReceiveProgress: (count, total) => onProgressChanged?.call(count / total),
queryParameters: {'original': original},
);
return response.data;
@@ -232,8 +230,7 @@ class PaperlessDocumentsApiImpl implements PaperlessDocumentsApi {
@override
Future<DocumentMetaData> getMetaData(DocumentModel document) async {
try {
final response =
await client.get("/api/documents/${document.id}/metadata/");
final response = await client.get("/api/documents/${document.id}/metadata/");
return compute(
DocumentMetaData.fromJson,
response.data as Map<String, dynamic>,
@@ -265,11 +262,9 @@ class PaperlessDocumentsApiImpl implements PaperlessDocumentsApi {
@override
Future<FieldSuggestions> findSuggestions(DocumentModel document) async {
try {
final response =
await client.get("/api/documents/${document.id}/suggestions/");
final response = await client.get("/api/documents/${document.id}/suggestions/");
if (response.statusCode == 200) {
return FieldSuggestions.fromJson(response.data)
.forDocumentId(document.id);
return FieldSuggestions.fromJson(response.data).forDocumentId(document.id);
}
throw const PaperlessServerException(ErrorCode.suggestionsQueryError);
} on DioError catch (err) {

View File

@@ -1,7 +1,4 @@
import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:http/http.dart';
import 'package:paperless_api/src/models/paperless_server_exception.dart';
import 'package:paperless_api/src/models/paperless_server_information_model.dart';
import 'package:paperless_api/src/models/paperless_server_statistics_model.dart';
@@ -21,20 +18,14 @@ class PaperlessServerStatsApiImpl implements PaperlessServerStatsApi {
@override
Future<PaperlessServerInformationModel> getServerInformation() async {
final response = await client.get("/api/ui_settings/");
final response = await client.get("/api/");
final version =
response.headers[PaperlessServerInformationModel.versionHeader]?.first ?? 'unknown';
final apiVersion = int.tryParse(
response.headers[PaperlessServerInformationModel.apiVersionHeader]?.first ?? '1');
final String username = response.data['username'];
final String host = response.headers[PaperlessServerInformationModel.hostHeader]?.first ??
response.headers[PaperlessServerInformationModel.hostHeader]?.first ??
('${response.requestOptions.uri.host}:${response.requestOptions.uri.port}');
return PaperlessServerInformationModel(
username: username,
version: version,
apiVersion: apiVersion,
host: host,
);
}