mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
feat(web): display number of likes in asset viewer (#18911)
* feat: display number of likes * fix: properly decrement like count on unlike Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> * chore: pr feedback * chore: updated related test * chore: formatter run * chore: force numberOfLikes to null in album context to pass lint * chore: open-api updated * fix: use undefined, not null * styling tweaks * chore: updated sql --------- Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
This commit is contained in:
parent
5d0ad853f4
commit
a26d703335
13 changed files with 77 additions and 29 deletions
|
|
@ -17,6 +17,7 @@ class ActivityManager {
|
|||
#assetId = $state<string | undefined>();
|
||||
#activities = $state<ActivityResponseDto[]>([]);
|
||||
#commentCount = $state(0);
|
||||
#likeCount = $state(0);
|
||||
#isLiked = $state<ActivityResponseDto | null>(null);
|
||||
|
||||
get activities() {
|
||||
|
|
@ -27,6 +28,10 @@ class ActivityManager {
|
|||
return this.#commentCount;
|
||||
}
|
||||
|
||||
get likeCount() {
|
||||
return this.#likeCount;
|
||||
}
|
||||
|
||||
get isLiked() {
|
||||
return this.#isLiked;
|
||||
}
|
||||
|
|
@ -48,6 +53,10 @@ class ActivityManager {
|
|||
this.#commentCount++;
|
||||
}
|
||||
|
||||
if (activity.type === ReactionType.Like) {
|
||||
this.#likeCount++;
|
||||
}
|
||||
|
||||
handlePromiseError(this.refreshActivities(this.#albumId, this.#assetId));
|
||||
return activity;
|
||||
}
|
||||
|
|
@ -61,6 +70,10 @@ class ActivityManager {
|
|||
this.#commentCount--;
|
||||
}
|
||||
|
||||
if (activity.type === ReactionType.Like) {
|
||||
this.#likeCount--;
|
||||
}
|
||||
|
||||
this.#activities = index
|
||||
? this.#activities.splice(index, 1)
|
||||
: this.#activities.filter(({ id }) => id !== activity.id);
|
||||
|
|
@ -98,8 +111,9 @@ class ActivityManager {
|
|||
});
|
||||
this.#isLiked = liked ?? null;
|
||||
|
||||
const { comments } = await getActivityStatistics({ albumId, assetId });
|
||||
const { comments, likes } = await getActivityStatistics({ albumId, assetId });
|
||||
this.#commentCount = comments;
|
||||
this.#likeCount = likes;
|
||||
}
|
||||
|
||||
reset() {
|
||||
|
|
@ -107,6 +121,7 @@ class ActivityManager {
|
|||
this.#assetId = undefined;
|
||||
this.#activities = [];
|
||||
this.#commentCount = 0;
|
||||
this.#likeCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue