mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-15 08:12:28 -06:00
chore+fix+feat: Apply dart fixes after upgrade to flutter 3.10, add permission checks, make most api calls work again
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
import 'package:paperless_api/src/models/user_model.dart';
|
||||
|
||||
class PaperlessApiHiveTypeIds {
|
||||
PaperlessApiHiveTypeIds._();
|
||||
@@ -56,7 +55,6 @@ void registerPaperlessApiHiveTypeAdapters() {
|
||||
// Users and permissions
|
||||
Hive.registerAdapter(UserModelV3Adapter());
|
||||
Hive.registerAdapter(UserModelV2Adapter());
|
||||
Hive.registerAdapter(UserPermissionsAdapter());
|
||||
Hive.registerAdapter(InheritedPermissionsAdapter());
|
||||
Hive.registerAdapter(GroupModelAdapter());
|
||||
Hive.registerAdapter(PermissionsAdapter());
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:paperless_api/src/models/models.dart';
|
||||
import 'package:paperless_api/src/models/query_parameters/date_range_queries/absolute_date_range_query.dart';
|
||||
import 'package:paperless_api/src/models/query_parameters/date_range_queries/relative_date_range_query.dart';
|
||||
|
||||
class DateRangeQueryJsonConverter
|
||||
extends JsonConverter<DateRangeQuery, Map<String, dynamic>> {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
// ignore_for_file: unused_field
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
import 'package:paperless_api/src/constants.dart';
|
||||
import 'package:paperless_api/src/converters/local_date_time_json_converter.dart';
|
||||
import 'package:paperless_api/src/models/query_parameters/tags_query/tags_query.dart';
|
||||
|
||||
part 'filter_rule_model.g.dart';
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ class GroupModel with _$GroupModel {
|
||||
const factory GroupModel({
|
||||
@HiveField(0) required int id,
|
||||
@HiveField(1) required String name,
|
||||
@HiveField(2) required List<UserPermissions> permissions,
|
||||
@HiveField(2) required List<String> permissions,
|
||||
}) = _GroupModel;
|
||||
|
||||
factory GroupModel.fromJson(Map<String, dynamic> json) => _$GroupModelFromJson(json);
|
||||
|
||||
@@ -25,7 +25,7 @@ mixin _$GroupModel {
|
||||
@HiveField(1)
|
||||
String get name => throw _privateConstructorUsedError;
|
||||
@HiveField(2)
|
||||
List<UserPermissions> get permissions => throw _privateConstructorUsedError;
|
||||
List<String> get permissions => throw _privateConstructorUsedError;
|
||||
|
||||
Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
|
||||
@JsonKey(ignore: true)
|
||||
@@ -42,7 +42,7 @@ abstract class $GroupModelCopyWith<$Res> {
|
||||
$Res call(
|
||||
{@HiveField(0) int id,
|
||||
@HiveField(1) String name,
|
||||
@HiveField(2) List<UserPermissions> permissions});
|
||||
@HiveField(2) List<String> permissions});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@@ -74,7 +74,7 @@ class _$GroupModelCopyWithImpl<$Res, $Val extends GroupModel>
|
||||
permissions: null == permissions
|
||||
? _value.permissions
|
||||
: permissions // ignore: cast_nullable_to_non_nullable
|
||||
as List<UserPermissions>,
|
||||
as List<String>,
|
||||
) as $Val);
|
||||
}
|
||||
}
|
||||
@@ -90,7 +90,7 @@ abstract class _$$_GroupModelCopyWith<$Res>
|
||||
$Res call(
|
||||
{@HiveField(0) int id,
|
||||
@HiveField(1) String name,
|
||||
@HiveField(2) List<UserPermissions> permissions});
|
||||
@HiveField(2) List<String> permissions});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
@@ -120,7 +120,7 @@ class __$$_GroupModelCopyWithImpl<$Res>
|
||||
permissions: null == permissions
|
||||
? _value._permissions
|
||||
: permissions // ignore: cast_nullable_to_non_nullable
|
||||
as List<UserPermissions>,
|
||||
as List<String>,
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -131,7 +131,7 @@ class _$_GroupModel implements _GroupModel {
|
||||
const _$_GroupModel(
|
||||
{@HiveField(0) required this.id,
|
||||
@HiveField(1) required this.name,
|
||||
@HiveField(2) required final List<UserPermissions> permissions})
|
||||
@HiveField(2) required final List<String> permissions})
|
||||
: _permissions = permissions;
|
||||
|
||||
factory _$_GroupModel.fromJson(Map<String, dynamic> json) =>
|
||||
@@ -143,10 +143,10 @@ class _$_GroupModel implements _GroupModel {
|
||||
@override
|
||||
@HiveField(1)
|
||||
final String name;
|
||||
final List<UserPermissions> _permissions;
|
||||
final List<String> _permissions;
|
||||
@override
|
||||
@HiveField(2)
|
||||
List<UserPermissions> get permissions {
|
||||
List<String> get permissions {
|
||||
if (_permissions is EqualUnmodifiableListView) return _permissions;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableListView(_permissions);
|
||||
@@ -189,10 +189,9 @@ class _$_GroupModel implements _GroupModel {
|
||||
|
||||
abstract class _GroupModel implements GroupModel {
|
||||
const factory _GroupModel(
|
||||
{@HiveField(0) required final int id,
|
||||
@HiveField(1) required final String name,
|
||||
@HiveField(2) required final List<UserPermissions> permissions}) =
|
||||
_$_GroupModel;
|
||||
{@HiveField(0) required final int id,
|
||||
@HiveField(1) required final String name,
|
||||
@HiveField(2) required final List<String> permissions}) = _$_GroupModel;
|
||||
|
||||
factory _GroupModel.fromJson(Map<String, dynamic> json) =
|
||||
_$_GroupModel.fromJson;
|
||||
@@ -205,7 +204,7 @@ abstract class _GroupModel implements GroupModel {
|
||||
String get name;
|
||||
@override
|
||||
@HiveField(2)
|
||||
List<UserPermissions> get permissions;
|
||||
List<String> get permissions;
|
||||
@override
|
||||
@JsonKey(ignore: true)
|
||||
_$$_GroupModelCopyWith<_$_GroupModel> get copyWith =>
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import 'dart:developer';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:paperless_api/src/converters/hex_color_json_converter.dart';
|
||||
import 'package:paperless_api/src/models/labels/label_model.dart';
|
||||
@@ -24,7 +22,7 @@ class Tag extends Label {
|
||||
|
||||
final bool isInboxTag;
|
||||
|
||||
Tag({
|
||||
const Tag({
|
||||
super.id,
|
||||
required super.name,
|
||||
super.documentCount,
|
||||
|
||||
@@ -53,6 +53,5 @@ enum ErrorCode {
|
||||
requestTimedOut,
|
||||
unsupportedFileFormat,
|
||||
missingClientCertificate,
|
||||
acknowledgeTasksError,
|
||||
notAuthorized;
|
||||
acknowledgeTasksError;
|
||||
}
|
||||
|
||||
@@ -1,117 +1,30 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:paperless_api/config/hive/hive_type_ids.dart';
|
||||
part 'user_permissions.g.dart';
|
||||
|
||||
@HiveType(typeId: PaperlessApiHiveTypeIds.userPermissions)
|
||||
@JsonEnum(valueField: "value")
|
||||
enum UserPermissions {
|
||||
@HiveField(0)
|
||||
addCorrespondent("add_correspondent"),
|
||||
@HiveField(1)
|
||||
addDocument("add_document"),
|
||||
@HiveField(2)
|
||||
addDocumenttype("add_documenttype"),
|
||||
@HiveField(3)
|
||||
addGroup("add_group"),
|
||||
@HiveField(4)
|
||||
addMailaccount("add_mailaccount"),
|
||||
@HiveField(5)
|
||||
addMailrule("add_mailrule"),
|
||||
@HiveField(6)
|
||||
addNote("add_note"),
|
||||
@HiveField(7)
|
||||
addPaperlesstask("add_paperlesstask"),
|
||||
@HiveField(8)
|
||||
addSavedview("add_savedview"),
|
||||
@HiveField(9)
|
||||
addStoragepath("add_storagepath"),
|
||||
@HiveField(10)
|
||||
addTag("add_tag"),
|
||||
@HiveField(11)
|
||||
addUisettings("add_uisettings"),
|
||||
@HiveField(12)
|
||||
addUser("add_user"),
|
||||
@HiveField(13)
|
||||
changeCorrespondent("change_correspondent"),
|
||||
@HiveField(14)
|
||||
changeDocument("change_document"),
|
||||
@HiveField(15)
|
||||
changeDocumenttype("change_documenttype"),
|
||||
@HiveField(16)
|
||||
changeGroup("change_group"),
|
||||
@HiveField(17)
|
||||
changeMailaccount("change_mailaccount"),
|
||||
@HiveField(18)
|
||||
changeMailrule("change_mailrule"),
|
||||
@HiveField(19)
|
||||
changeNote("change_note"),
|
||||
@HiveField(20)
|
||||
changePaperlesstask("change_paperlesstask"),
|
||||
@HiveField(21)
|
||||
changeSavedview("change_savedview"),
|
||||
@HiveField(22)
|
||||
changeStoragepath("change_storagepath"),
|
||||
@HiveField(23)
|
||||
changeTag("change_tag"),
|
||||
@HiveField(24)
|
||||
changeUisettings("change_uisettings"),
|
||||
@HiveField(25)
|
||||
changeUser("change_user"),
|
||||
@HiveField(26)
|
||||
deleteCorrespondent("delete_correspondent"),
|
||||
@HiveField(27)
|
||||
deleteDocument("delete_document"),
|
||||
@HiveField(28)
|
||||
deleteDocumenttype("delete_documenttype"),
|
||||
@HiveField(29)
|
||||
deleteGroup("delete_group"),
|
||||
@HiveField(30)
|
||||
deleteMailaccount("delete_mailaccount"),
|
||||
@HiveField(31)
|
||||
deleteMailrule("delete_mailrule"),
|
||||
@HiveField(32)
|
||||
deleteNote("delete_note"),
|
||||
@HiveField(33)
|
||||
deletePaperlesstask("delete_paperlesstask"),
|
||||
@HiveField(34)
|
||||
deleteSavedview("delete_savedview"),
|
||||
@HiveField(35)
|
||||
deleteStoragepath("delete_storagepath"),
|
||||
@HiveField(36)
|
||||
deleteTag("delete_tag"),
|
||||
@HiveField(37)
|
||||
deleteUisettings("delete_uisettings"),
|
||||
@HiveField(38)
|
||||
deleteUser("delete_user"),
|
||||
@HiveField(39)
|
||||
viewCorrespondent("view_correspondent"),
|
||||
@HiveField(40)
|
||||
viewDocument("view_document"),
|
||||
@HiveField(41)
|
||||
viewDocumenttype("view_documenttype"),
|
||||
@HiveField(42)
|
||||
viewGroup("view_group"),
|
||||
@HiveField(43)
|
||||
viewMailaccount("view_mailaccount"),
|
||||
@HiveField(44)
|
||||
viewMailrule("view_mailrule"),
|
||||
@HiveField(45)
|
||||
viewNote("view_note"),
|
||||
@HiveField(46)
|
||||
viewPaperlesstask("view_paperlesstask"),
|
||||
@HiveField(47)
|
||||
viewSavedview("view_savedview"),
|
||||
@HiveField(48)
|
||||
viewStoragepath("view_storagepath"),
|
||||
@HiveField(49)
|
||||
viewTag("view_tag"),
|
||||
@HiveField(50)
|
||||
viewUisettings("view_uisettings"),
|
||||
@HiveField(51)
|
||||
viewUser("view_user");
|
||||
|
||||
const UserPermissions(this.value);
|
||||
enum PermissionAction {
|
||||
add("add"),
|
||||
change("change"),
|
||||
delete("delete"),
|
||||
view("view");
|
||||
|
||||
final String value;
|
||||
const PermissionAction(this.value);
|
||||
}
|
||||
|
||||
enum PermissionTarget {
|
||||
correspondent("correspondent"),
|
||||
document("document"),
|
||||
documentType("documenttype"),
|
||||
group("group"),
|
||||
mailAccount("mailaccount"),
|
||||
mailrule("mailrule"),
|
||||
note("note"),
|
||||
paperlesstask("paperlesstask"),
|
||||
savedView("savedview"),
|
||||
storagePath("storagepath"),
|
||||
tag("tag"),
|
||||
uiSettings("uisettings"),
|
||||
user("user"),
|
||||
logentry("logentry"),
|
||||
permission("permission");
|
||||
|
||||
final String value;
|
||||
const PermissionTarget(this.value);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:paperless_api/config/hive/hive_type_ids.dart';
|
||||
import 'package:paperless_api/src/models/query_parameters/date_range_queries/date_range_query_field.dart';
|
||||
|
||||
import 'date_range_query.dart';
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:paperless_api/config/hive/hive_type_ids.dart';
|
||||
|
||||
@@ -16,17 +16,33 @@ class UserModel with _$UserModel {
|
||||
@JsonSerializable(fieldRename: FieldRename.snake)
|
||||
@HiveType(typeId: PaperlessApiHiveTypeIds.userModelv3)
|
||||
const factory UserModel.v3({
|
||||
@HiveField(0) required int id,
|
||||
@HiveField(1) required String username,
|
||||
@HiveField(2) required String email,
|
||||
@HiveField(3) String? firstName,
|
||||
@HiveField(4) String? lastName,
|
||||
@HiveField(5) DateTime? dateJoined,
|
||||
@HiveField(6) @Default(true) bool isStaff,
|
||||
@HiveField(7) @Default(true) bool isActive,
|
||||
@HiveField(8) @Default(true) bool isSuperuser,
|
||||
@HiveField(9) @Default([]) List<int> groups,
|
||||
@HiveField(10) @Default(UserPermissions.values) List<UserPermissions> userPermissions,
|
||||
@HiveField(0)
|
||||
required int id,
|
||||
@HiveField(1)
|
||||
required String username,
|
||||
@HiveField(2)
|
||||
required String email,
|
||||
@HiveField(3)
|
||||
String? firstName,
|
||||
@HiveField(4)
|
||||
String? lastName,
|
||||
@HiveField(5)
|
||||
DateTime? dateJoined,
|
||||
@HiveField(6)
|
||||
@Default(true)
|
||||
bool isStaff,
|
||||
@HiveField(7)
|
||||
@Default(true)
|
||||
bool isActive,
|
||||
@HiveField(8)
|
||||
@Default(true)
|
||||
bool isSuperuser,
|
||||
@HiveField(9)
|
||||
@Default([])
|
||||
List<int> groups,
|
||||
@HiveField(10)
|
||||
@Default([])
|
||||
List<String> userPermissions,
|
||||
@HiveField(11)
|
||||
@Default(InheritedPermissions.values)
|
||||
List<InheritedPermissions> inheritedPermissions,
|
||||
@@ -55,13 +71,14 @@ class UserModel with _$UserModel {
|
||||
},
|
||||
);
|
||||
|
||||
bool hasPermission(UserPermissions permission) {
|
||||
bool hasPermission(PermissionAction action, PermissionTarget target) {
|
||||
return map(
|
||||
v3: (value) {
|
||||
if (value.isSuperuser) {
|
||||
return true;
|
||||
}
|
||||
return value.userPermissions.contains(permission);
|
||||
final permissionIdentifier = "${action.value}_${target.value}";
|
||||
return value.userPermissions.contains(permissionIdentifier);
|
||||
},
|
||||
v2: (value) {
|
||||
// In previous versions, all users have all permissions.
|
||||
|
||||
@@ -46,7 +46,7 @@ mixin _$UserModel {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)
|
||||
v3,
|
||||
required TResult Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
@@ -67,7 +67,7 @@ mixin _$UserModel {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)?
|
||||
v3,
|
||||
TResult? Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
@@ -88,7 +88,7 @@ mixin _$UserModel {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)?
|
||||
v3,
|
||||
TResult Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
@@ -178,7 +178,7 @@ abstract class _$$UserModelV3CopyWith<$Res>
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions});
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ class __$$UserModelV3CopyWithImpl<$Res>
|
||||
userPermissions: null == userPermissions
|
||||
? _value._userPermissions
|
||||
: userPermissions // ignore: cast_nullable_to_non_nullable
|
||||
as List<UserPermissions>,
|
||||
as List<String>,
|
||||
inheritedPermissions: null == inheritedPermissions
|
||||
? _value._inheritedPermissions
|
||||
: inheritedPermissions // ignore: cast_nullable_to_non_nullable
|
||||
@@ -275,8 +275,7 @@ class _$UserModelV3 extends UserModelV3 {
|
||||
@HiveField(7) this.isActive = true,
|
||||
@HiveField(8) this.isSuperuser = true,
|
||||
@HiveField(9) final List<int> groups = const [],
|
||||
@HiveField(10) final List<UserPermissions> userPermissions =
|
||||
UserPermissions.values,
|
||||
@HiveField(10) final List<String> userPermissions = const [],
|
||||
@HiveField(11) final List<InheritedPermissions> inheritedPermissions =
|
||||
InheritedPermissions.values,
|
||||
final String? $type})
|
||||
@@ -329,11 +328,11 @@ class _$UserModelV3 extends UserModelV3 {
|
||||
return EqualUnmodifiableListView(_groups);
|
||||
}
|
||||
|
||||
final List<UserPermissions> _userPermissions;
|
||||
final List<String> _userPermissions;
|
||||
@override
|
||||
@JsonKey()
|
||||
@HiveField(10)
|
||||
List<UserPermissions> get userPermissions {
|
||||
List<String> get userPermissions {
|
||||
if (_userPermissions is EqualUnmodifiableListView) return _userPermissions;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableListView(_userPermissions);
|
||||
@@ -422,7 +421,7 @@ class _$UserModelV3 extends UserModelV3 {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)
|
||||
v3,
|
||||
required TResult Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
@@ -447,7 +446,7 @@ class _$UserModelV3 extends UserModelV3 {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)?
|
||||
v3,
|
||||
TResult? Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
@@ -483,7 +482,7 @@ class _$UserModelV3 extends UserModelV3 {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)?
|
||||
v3,
|
||||
TResult Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
@@ -560,7 +559,7 @@ abstract class UserModelV3 extends UserModel {
|
||||
@HiveField(9)
|
||||
final List<int> groups,
|
||||
@HiveField(10)
|
||||
final List<UserPermissions> userPermissions,
|
||||
final List<String> userPermissions,
|
||||
@HiveField(11)
|
||||
final List<InheritedPermissions> inheritedPermissions}) =
|
||||
_$UserModelV3;
|
||||
@@ -592,7 +591,7 @@ abstract class UserModelV3 extends UserModel {
|
||||
@HiveField(9)
|
||||
List<int> get groups;
|
||||
@HiveField(10)
|
||||
List<UserPermissions> get userPermissions;
|
||||
List<String> get userPermissions;
|
||||
@HiveField(11)
|
||||
List<InheritedPermissions> get inheritedPermissions;
|
||||
@override
|
||||
@@ -718,7 +717,7 @@ class _$UserModelV2 extends UserModelV2 {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)
|
||||
v3,
|
||||
required TResult Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
@@ -742,7 +741,7 @@ class _$UserModelV2 extends UserModelV2 {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)?
|
||||
v3,
|
||||
TResult? Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
@@ -766,7 +765,7 @@ class _$UserModelV2 extends UserModelV2 {
|
||||
@HiveField(7) bool isActive,
|
||||
@HiveField(8) bool isSuperuser,
|
||||
@HiveField(9) List<int> groups,
|
||||
@HiveField(10) List<UserPermissions> userPermissions,
|
||||
@HiveField(10) List<String> userPermissions,
|
||||
@HiveField(11) List<InheritedPermissions> inheritedPermissions)?
|
||||
v3,
|
||||
TResult Function(@HiveField(0) @JsonKey(name: "user_id") int id,
|
||||
|
||||
@@ -154,10 +154,10 @@ class PaperlessDocumentsApiImpl implements PaperlessDocumentsApi {
|
||||
|
||||
@override
|
||||
Future<int> findNextAsn() async {
|
||||
final DocumentFilter asnQueryFilter = DocumentFilter(
|
||||
const DocumentFilter asnQueryFilter = DocumentFilter(
|
||||
sortField: SortField.archiveSerialNumber,
|
||||
sortOrder: SortOrder.descending,
|
||||
asnQuery: const IdQueryParameter.anyAssigned(),
|
||||
asnQuery: IdQueryParameter.anyAssigned(),
|
||||
page: 1,
|
||||
pageSize: 1,
|
||||
);
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'dart:developer';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
import 'package:paperless_api/src/request_utils.dart';
|
||||
|
||||
class PaperlessTasksApiImpl implements PaperlessTasksApi {
|
||||
final Dio _client;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:paperless_api/paperless_api.dart';
|
||||
import 'package:paperless_api/src/models/query_parameters/text_query.dart';
|
||||
|
||||
void main() {
|
||||
group('Validate parsing logic from [SavedView] to [DocumentFilter]:', () {
|
||||
@@ -202,16 +201,16 @@ void main() {
|
||||
test('Values are correctly parsed if unset.', () {
|
||||
expect(
|
||||
SavedView.fromDocumentFilter(
|
||||
DocumentFilter(
|
||||
correspondent: const IdQueryParameter.unset(),
|
||||
documentType: const IdQueryParameter.unset(),
|
||||
storagePath: const IdQueryParameter.unset(),
|
||||
tags: const IdsTagsQuery(),
|
||||
const DocumentFilter(
|
||||
correspondent: IdQueryParameter.unset(),
|
||||
documentType: IdQueryParameter.unset(),
|
||||
storagePath: IdQueryParameter.unset(),
|
||||
tags: IdsTagsQuery(),
|
||||
sortField: SortField.created,
|
||||
sortOrder: SortOrder.descending,
|
||||
added: const UnsetDateRangeQuery(),
|
||||
created: const UnsetDateRangeQuery(),
|
||||
query: const TextQuery(),
|
||||
added: UnsetDateRangeQuery(),
|
||||
created: UnsetDateRangeQuery(),
|
||||
query: TextQuery(),
|
||||
),
|
||||
name: "test_name",
|
||||
showInSidebar: false,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class AnimatedTouchBubblePart extends StatefulWidget {
|
||||
AnimatedTouchBubblePart({
|
||||
const AnimatedTouchBubblePart({super.key,
|
||||
required this.dragging,
|
||||
required this.size,
|
||||
});
|
||||
@@ -35,7 +35,7 @@ class _AnimatedTouchBubblePartState extends State<AnimatedTouchBubblePart>
|
||||
).animate(
|
||||
CurvedAnimation(
|
||||
parent: _controller,
|
||||
curve: Interval(0.5, 1.0),
|
||||
curve: const Interval(0.5, 1.0),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import 'dart:math';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:paperless_document_scanner/paperless_document_scanner.dart';
|
||||
import 'package:paperless_document_scanner/types/edge_detection_result.dart';
|
||||
|
||||
import 'edge_painter.dart';
|
||||
|
||||
@@ -47,18 +47,11 @@ class _MagnifierState extends State<Magnifier> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Stack(
|
||||
children: [
|
||||
widget.child,
|
||||
if (widget.visible && widget.position != null) _getMagnifier(context)
|
||||
],
|
||||
children: [widget.child, if (widget.visible) _getMagnifier(context)],
|
||||
);
|
||||
}
|
||||
|
||||
void _calculateMatrix() {
|
||||
if (widget.position == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
setState(() {
|
||||
double newX = widget.position.dx - (_magnifierSize.width / 2 / _scale);
|
||||
double newY = widget.position.dy - (_magnifierSize.height / 2 / _scale);
|
||||
@@ -78,8 +71,7 @@ class _MagnifierState extends State<Magnifier> {
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.matrix(_matrix.storage),
|
||||
child: CustomPaint(
|
||||
painter: MagnifierPainter(
|
||||
color: Theme.of(context).colorScheme.secondary),
|
||||
painter: MagnifierPainter(color: Theme.of(context).colorScheme.secondary),
|
||||
size: _magnifierSize,
|
||||
),
|
||||
),
|
||||
@@ -96,6 +88,5 @@ class _MagnifierState extends State<Magnifier> {
|
||||
}
|
||||
|
||||
bool _bubbleCrossesMagnifier() =>
|
||||
widget.position.dx < widget.size.width &&
|
||||
widget.position.dy < widget.size.height;
|
||||
widget.position.dx < widget.size.width && widget.position.dy < widget.size.height;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ class MagnifierPainter extends CustomPainter {
|
||||
..color = color;
|
||||
|
||||
canvas.drawCircle(
|
||||
size.center(Offset(0, 0)), size.longestSide / 2, paintObject);
|
||||
size.center(const Offset(0, 0)), size.longestSide / 2, paintObject);
|
||||
}
|
||||
|
||||
void _drawCrosshair(Canvas canvas, Size size) {
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:camera/camera.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:image/image.dart' as imglib;
|
||||
import 'scan.dart';
|
||||
|
||||
late final List<CameraDescription> cameras;
|
||||
void main() async {
|
||||
@@ -58,8 +56,8 @@ class _EdgeDetectionAppState extends State<EdgeDetectionApp> {
|
||||
final int uvRowStride = image.planes[1].bytesPerRow;
|
||||
final int uvPixelStride = image.planes[1].bytesPerPixel!;
|
||||
|
||||
print("uvRowStride: " + uvRowStride.toString());
|
||||
print("uvPixelStride: " + uvPixelStride.toString());
|
||||
print("uvRowStride: $uvRowStride");
|
||||
print("uvPixelStride: $uvPixelStride");
|
||||
|
||||
// imgLib -> Image package from https://pub.dartlang.org/packages/image
|
||||
var img = imglib.Image(
|
||||
@@ -89,7 +87,7 @@ class _EdgeDetectionAppState extends State<EdgeDetectionApp> {
|
||||
}
|
||||
}
|
||||
|
||||
imglib.PngEncoder pngEncoder = new imglib.PngEncoder(level: 0);
|
||||
imglib.PngEncoder pngEncoder = imglib.PngEncoder(level: 0);
|
||||
final png = pngEncoder.encode(img);
|
||||
return Image.memory(png);
|
||||
}
|
||||
@@ -105,7 +103,7 @@ class _EdgeDetectionAppState extends State<EdgeDetectionApp> {
|
||||
body: Center(
|
||||
child: _image != null
|
||||
? convertYUV420toImageColor(_image!)
|
||||
: Placeholder(),
|
||||
: const Placeholder(),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -80,7 +80,7 @@ class _ScanState extends State<Scan> {
|
||||
return Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: FloatingActionButton(
|
||||
child: Icon(Icons.check),
|
||||
child: const Icon(Icons.check),
|
||||
onPressed: () async {
|
||||
if (croppedImagePath == null) {
|
||||
return _processImage(imagePath!, edgeDetectionResult!);
|
||||
@@ -101,8 +101,8 @@ class _ScanState extends State<Scan> {
|
||||
children: [
|
||||
FloatingActionButton(
|
||||
foregroundColor: Colors.white,
|
||||
child: Icon(Icons.camera_alt),
|
||||
onPressed: onTakePictureButtonPressed,
|
||||
child: const Icon(Icons.camera_alt),
|
||||
),
|
||||
],
|
||||
);
|
||||
@@ -167,7 +167,7 @@ class _ScanState extends State<Scan> {
|
||||
|
||||
Padding _getBottomBar() {
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(bottom: 32),
|
||||
padding: const EdgeInsets.only(bottom: 32),
|
||||
child: Align(alignment: Alignment.bottomCenter, child: _getButtonRow()),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -5,18 +5,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: archive
|
||||
sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d
|
||||
sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.6"
|
||||
version: "3.3.7"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.10.0"
|
||||
version: "2.11.0"
|
||||
boolean_selector:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -29,50 +29,50 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: camera
|
||||
sha256: e7ac55af24a890d20276821eb3c95857074d03b7de6f9892b99a205ee30bd179
|
||||
sha256: "309b823e61f15ff6b5b2e4c0ff2e1512ea661cad5355f71fc581e510ae5b26bb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.10.3"
|
||||
version: "0.10.5"
|
||||
camera_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: camera_android
|
||||
sha256: e491c836147f60dd8a54cf3895fd2960e13b21b78a9d15b563a1b6c70894f142
|
||||
sha256: e0f9b7eea2d1f4d4f5460f178522f0d02c095d2ae00b01a77419ce61c4184bfe
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.10.4"
|
||||
version: "0.10.7"
|
||||
camera_avfoundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: camera_avfoundation
|
||||
sha256: "6a68c20593d4cd58974d555f74a48b244f9db28cc9156de57781122d11b8754b"
|
||||
sha256: "7ac8b950672716722af235eed7a7c37896853669800b7da706bb0a9fd41d3737"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.11"
|
||||
version: "0.9.13+1"
|
||||
camera_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: camera_platform_interface
|
||||
sha256: b632be28e61d00a233f67d98ea90fd7041956f27a1c65500188ee459be60e15f
|
||||
sha256: "525017018d116c5db8c4c43ec2d9b1663216b369c9f75149158280168a7ce472"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.5.0"
|
||||
camera_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: camera_web
|
||||
sha256: "496de93c5d462738ce991dbfe91fb19026f115ed36406700a20a380fb0018299"
|
||||
sha256: d77965f32479ee6d8f48205dcf10f845d7210595c6c00faa51eab265d1cae993
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.1+1"
|
||||
version: "0.3.1+3"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: characters
|
||||
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "1.3.0"
|
||||
clock:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -85,10 +85,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: collection
|
||||
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
|
||||
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.17.0"
|
||||
version: "1.17.1"
|
||||
convert:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -109,10 +109,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: crypto
|
||||
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
|
||||
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.0.3"
|
||||
cupertino_icons:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -133,10 +133,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
|
||||
sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "2.0.2"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -162,10 +162,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "60fc7b78455b94e6de2333d2f95196d32cf5c22f4b0b0520a628804cb463503b"
|
||||
sha256: "96af49aa6b57c10a312106ad6f71deed5a754029c24789bbf620ba784f0bd0b0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.7"
|
||||
version: "2.0.14"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
@@ -180,34 +180,34 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: image
|
||||
sha256: "483a389d6ccb292b570c31b3a193779b1b0178e7eb571986d9a49904b6861227"
|
||||
sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.15"
|
||||
version: "4.0.17"
|
||||
js:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: js
|
||||
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
|
||||
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.5"
|
||||
version: "0.6.7"
|
||||
lints:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: lints
|
||||
sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
|
||||
sha256: "6b0206b0bf4f04961fc5438198ccb3a885685cd67d4d4a32cc20ad7f8adbe015"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "2.1.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
||||
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.13"
|
||||
version: "0.12.15"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -220,10 +220,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
|
||||
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.0"
|
||||
version: "1.9.1"
|
||||
paperless_document_scanner:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -235,66 +235,66 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.2"
|
||||
version: "1.8.3"
|
||||
path_provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: path_provider
|
||||
sha256: dcea5feb97d8abf90cab9e9030b497fb7c3cbf26b7a1fe9e3ef7dcb0a1ddec95
|
||||
sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.12"
|
||||
version: "2.0.15"
|
||||
path_provider_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: a776c088d671b27f6e3aa8881d64b87b3e80201c64e8869b811325de7a76c15e
|
||||
sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.22"
|
||||
version: "2.0.27"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: "62a68e7e1c6c459f9289859e2fae58290c981ce21d1697faf54910fe1faa4c74"
|
||||
sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.2.3"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_linux
|
||||
sha256: "2e32f1640f07caef0d3cb993680f181c79e54a3827b997d5ee221490d131fbd9"
|
||||
sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.8"
|
||||
version: "2.1.10"
|
||||
path_provider_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_platform_interface
|
||||
sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76
|
||||
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.5"
|
||||
version: "2.0.6"
|
||||
path_provider_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_windows
|
||||
sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c
|
||||
sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
version: "2.1.6"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: petitparser
|
||||
sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4"
|
||||
sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.1.0"
|
||||
version: "5.4.0"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -307,18 +307,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: plugin_platform_interface
|
||||
sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a
|
||||
sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
version: "2.1.4"
|
||||
pointycastle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pointycastle
|
||||
sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346
|
||||
sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.6.2"
|
||||
version: "3.7.3"
|
||||
process:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -392,18 +392,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
|
||||
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.16"
|
||||
version: "0.5.1"
|
||||
typed_data:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: typed_data
|
||||
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
|
||||
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
version: "1.3.2"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -416,10 +416,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
|
||||
sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.3"
|
||||
version: "4.1.4"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -432,10 +432,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xml
|
||||
sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5"
|
||||
sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.2"
|
||||
version: "6.3.0"
|
||||
sdks:
|
||||
dart: ">=2.19.2 <3.0.0"
|
||||
flutter: ">=3.0.0"
|
||||
dart: ">=3.0.0-417 <4.0.0"
|
||||
flutter: ">=3.3.0"
|
||||
|
||||
Reference in New Issue
Block a user