WIP - Replaced get_it + injectable with Provider

This commit is contained in:
Anton Stubenbord
2022-12-21 01:14:06 +01:00
parent 10149fb7c1
commit 60aecb549d
59 changed files with 1099 additions and 1362 deletions

View File

@@ -0,0 +1,75 @@
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:paperless_api/src/models/paperless_server_exception.dart';
Future<T> getSingleResult<T>(
String url,
T Function(Map<String, dynamic>) fromJson,
ErrorCode errorCode, {
required Dio client,
int minRequiredApiVersion = 1,
}) async {
final response = await client.get(
url,
options: Options(
headers: {'accept': 'application/json; version=$minRequiredApiVersion'},
),
);
if (response.statusCode == HttpStatus.ok) {
return compute(
fromJson,
response.data as Map<String, dynamic>,
);
}
throw PaperlessServerException(
errorCode,
httpStatusCode: response.statusCode,
);
}
Future<List<T>> getCollection<T>(
String url,
T Function(Map<String, dynamic>) fromJson,
ErrorCode errorCode, {
required Dio client,
int minRequiredApiVersion = 1,
}) async {
final response = await client.get(
url,
options: Options(headers: {
'accept': 'application/json; version=$minRequiredApiVersion'
}),
);
if (response.statusCode == HttpStatus.ok) {
final Map<String, dynamic> body = response.data;
if (body.containsKey('count')) {
if (body['count'] == 0) {
return <T>[];
} else {
return compute(
_collectionFromJson,
_CollectionFromJsonSerializationParams(
fromJson, (body['results'] as List).cast<Map<String, dynamic>>()),
);
}
}
}
throw PaperlessServerException(
errorCode,
httpStatusCode: response.statusCode,
);
}
List<T> _collectionFromJson<T>(
_CollectionFromJsonSerializationParams<T> params) {
return params.list.map<T>((result) => params.fromJson(result)).toList();
}
class _CollectionFromJsonSerializationParams<T> {
final T Function(Map<String, dynamic>) fromJson;
final List<Map<String, dynamic>> list;
_CollectionFromJsonSerializationParams(this.fromJson, this.list);
}