feat(mobile): shared album activities (#4833)

* fix(server): global activity like duplicate search

* mobile: user_circle_avatar - fallback to text icon if no profile pic available

* mobile: use favourite icon in search "your activity"

* feat(mobile): shared album activities

* mobile: align hearts with user profile icon

* styling

* replace bottom sheet with dismissible

* add auto focus to the input

---------

Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
shenlong
2023-11-06 15:46:26 +00:00
committed by GitHub
parent c74ea7282a
commit 26fd9d7e5f
20 changed files with 890 additions and 15 deletions

View File

@@ -58,6 +58,7 @@ export class ActivityService {
delete dto.comment;
[activity] = await this.repository.search({
...common,
isGlobal: !dto.assetId,
isLiked: true,
});
duplicate = !!activity;

View File

@@ -1,7 +1,7 @@
import { IActivityRepository } from '@app/domain';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { IsNull, Repository } from 'typeorm';
import { ActivityEntity } from '../entities/activity.entity';
export interface ActivitySearch {
@@ -9,6 +9,7 @@ export interface ActivitySearch {
assetId?: string;
userId?: string;
isLiked?: boolean;
isGlobal?: boolean;
}
@Injectable()
@@ -16,11 +17,11 @@ export class ActivityRepository implements IActivityRepository {
constructor(@InjectRepository(ActivityEntity) private repository: Repository<ActivityEntity>) {}
search(options: ActivitySearch): Promise<ActivityEntity[]> {
const { userId, assetId, albumId, isLiked } = options;
const { userId, assetId, albumId, isLiked, isGlobal } = options;
return this.repository.find({
where: {
userId,
assetId,
assetId: isGlobal ? IsNull() : assetId,
albumId,
isLiked,
},