feat: Add description (#2237)

* Added dto, logic to insert description and web implementation

* create text field and update on remote database

* Update description and save changes

* styling

* fix web test

* fix server test

* preserve description on metadata extraction job run

* handle exif info is null situation

* pr feedback

* format openapi spec

* update createAssetDto

* refactor logic to service

* move files

* only owner can update description

* Render description correctly in shared album

* Render description correctly in shared link

* disable description edit for not owner of asset on mobile

* localization and clean up

* fix test

* Uses providers for description text (#2244)

* uses providers for description text

* comments

* fixes initial data setting

* fixes notifier

---------

Co-authored-by: martyfuhry <martyfuhry@gmail.com>
This commit is contained in:
Alex
2023-04-13 10:22:06 -05:00
committed by GitHub
parent 561b208508
commit a9859bc029
27 changed files with 843 additions and 178 deletions

View File

@@ -16,6 +16,7 @@ class UpdateAssetDto {
this.tagIds = const [],
this.isFavorite,
this.isArchived,
this.description,
});
List<String> tagIds;
@@ -36,21 +37,31 @@ class UpdateAssetDto {
///
bool? isArchived;
///
/// Please note: This property should have been non-nullable! Since the specification file
/// does not include a default value (using the "default:" property), however, the generated
/// source code must fall back to having a nullable type.
/// Consider adding a "default:" property in the specification file to hide this note.
///
String? description;
@override
bool operator ==(Object other) => identical(this, other) || other is UpdateAssetDto &&
other.tagIds == tagIds &&
other.isFavorite == isFavorite &&
other.isArchived == isArchived;
other.isArchived == isArchived &&
other.description == description;
@override
int get hashCode =>
// ignore: unnecessary_parenthesis
(tagIds.hashCode) +
(isFavorite == null ? 0 : isFavorite!.hashCode) +
(isArchived == null ? 0 : isArchived!.hashCode);
(isArchived == null ? 0 : isArchived!.hashCode) +
(description == null ? 0 : description!.hashCode);
@override
String toString() => 'UpdateAssetDto[tagIds=$tagIds, isFavorite=$isFavorite, isArchived=$isArchived]';
String toString() => 'UpdateAssetDto[tagIds=$tagIds, isFavorite=$isFavorite, isArchived=$isArchived, description=$description]';
Map<String, dynamic> toJson() {
final json = <String, dynamic>{};
@@ -65,6 +76,11 @@ class UpdateAssetDto {
} else {
// json[r'isArchived'] = null;
}
if (this.description != null) {
json[r'description'] = this.description;
} else {
// json[r'description'] = null;
}
return json;
}
@@ -92,6 +108,7 @@ class UpdateAssetDto {
: const [],
isFavorite: mapValueOfType<bool>(json, r'isFavorite'),
isArchived: mapValueOfType<bool>(json, r'isArchived'),
description: mapValueOfType<String>(json, r'description'),
);
}
return null;