feat(web): add Exif-Rating (#11580)

* Add Exif-Rating

* Integrate star rating as own component

* Add e2e tests for rating and validation

* Rename component and async handleChangeRating

* Display rating can be enabled in app settings

* Correct i18n reference

Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>

* Star rating: change from slider to buttons

* Star rating for clarity

* Design updates.

* Renaming and code optimization

* chore: clean up

* chore: e2e formatting

* light mode border and default value

---------

Co-authored-by: Christoph Suter <christoph@suter-burri.ch>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
This commit is contained in:
Christoph Suter
2024-08-09 19:45:52 +02:00
committed by GitHub
parent b1587a5dee
commit f33dbdfe9a
37 changed files with 599 additions and 18 deletions

View File

@@ -7550,6 +7550,11 @@
"longitude": {
"type": "number"
},
"rating": {
"maximum": 5,
"minimum": 0,
"type": "number"
},
"removeParent": {
"type": "boolean"
},
@@ -8702,6 +8707,11 @@
"nullable": true,
"type": "string"
},
"rating": {
"default": null,
"nullable": true,
"type": "number"
},
"state": {
"default": null,
"nullable": true,
@@ -9905,6 +9915,25 @@
],
"type": "object"
},
"RatingResponse": {
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
],
"type": "object"
},
"RatingUpdate": {
"properties": {
"enabled": {
"type": "boolean"
}
},
"type": "object"
},
"ReactionLevel": {
"enum": [
"album",
@@ -11565,6 +11594,11 @@
},
"longitude": {
"type": "number"
},
"rating": {
"maximum": 5,
"minimum": 0,
"type": "number"
}
},
"type": "object"
@@ -11865,6 +11899,9 @@
},
"purchase": {
"$ref": "#/components/schemas/PurchaseResponse"
},
"rating": {
"$ref": "#/components/schemas/RatingResponse"
}
},
"required": [
@@ -11872,7 +11909,8 @@
"download",
"emailNotifications",
"memories",
"purchase"
"purchase",
"rating"
],
"type": "object"
},
@@ -11892,6 +11930,9 @@
},
"purchase": {
"$ref": "#/components/schemas/PurchaseUpdate"
},
"rating": {
"$ref": "#/components/schemas/RatingUpdate"
}
},
"type": "object"

View File

@@ -99,12 +99,16 @@ export type PurchaseResponse = {
hideBuyButtonUntil: string;
showSupportBadge: boolean;
};
export type RatingResponse = {
enabled: boolean;
};
export type UserPreferencesResponseDto = {
avatar: AvatarResponse;
download: DownloadResponse;
emailNotifications: EmailNotificationsResponse;
memories: MemoryResponse;
purchase: PurchaseResponse;
rating: RatingResponse;
};
export type AvatarUpdate = {
color?: UserAvatarColor;
@@ -124,12 +128,16 @@ export type PurchaseUpdate = {
hideBuyButtonUntil?: string;
showSupportBadge?: boolean;
};
export type RatingUpdate = {
enabled?: boolean;
};
export type UserPreferencesUpdateDto = {
avatar?: AvatarUpdate;
download?: DownloadUpdate;
emailNotifications?: EmailNotificationsUpdate;
memories?: MemoryUpdate;
purchase?: PurchaseUpdate;
rating?: RatingUpdate;
};
export type AlbumUserResponseDto = {
role: AlbumUserRole;
@@ -155,6 +163,7 @@ export type ExifResponseDto = {
modifyDate?: string | null;
orientation?: string | null;
projectionType?: string | null;
rating?: number | null;
state?: string | null;
timeZone?: string | null;
};
@@ -330,6 +339,7 @@ export type AssetBulkUpdateDto = {
isFavorite?: boolean;
latitude?: number;
longitude?: number;
rating?: number;
removeParent?: boolean;
stackParentId?: string;
};
@@ -381,6 +391,7 @@ export type UpdateAssetDto = {
isFavorite?: boolean;
latitude?: number;
longitude?: number;
rating?: number;
};
export type AssetMediaReplaceDto = {
assetData: Blob;