fix:friends filtering

This commit is contained in:
2025-10-21 14:11:28 +02:00
parent 634ce8adf8
commit e1c5846fa4
2 changed files with 15 additions and 3 deletions

View File

@@ -24,6 +24,7 @@
profilePictureUrl?: string | null; profilePictureUrl?: string | null;
likeCount?: number; likeCount?: number;
isLikedByUser?: boolean; isLikedByUser?: boolean;
isFromFriend?: boolean;
media: Array<{ media: Array<{
id: string; id: string;
findId: string; findId: string;
@@ -53,6 +54,7 @@
}; };
likeCount?: number; likeCount?: number;
isLiked?: boolean; isLiked?: boolean;
isFromFriend?: boolean;
media?: Array<{ media?: Array<{
type: string; type: string;
url: string; url: string;
@@ -102,6 +104,7 @@
}, },
likeCount: serverFind.likeCount, likeCount: serverFind.likeCount,
isLiked: serverFind.isLikedByUser, isLiked: serverFind.isLikedByUser,
isFromFriend: serverFind.isFromFriend,
media: serverFind.media?.map( media: serverFind.media?.map(
(m: { type: string; url: string; thumbnailUrl: string | null }) => ({ (m: { type: string; url: string; thumbnailUrl: string | null }) => ({
type: m.type, type: m.type,
@@ -120,7 +123,7 @@
case 'public': case 'public':
return allFinds.filter((find) => find.isPublic === 1); return allFinds.filter((find) => find.isPublic === 1);
case 'friends': case 'friends':
return allFinds.filter((find) => find.isPublic === 0 && find.userId !== data.user!.id); return allFinds.filter((find) => find.isFromFriend === true);
case 'mine': case 'mine':
return allFinds.filter((find) => find.userId === data.user!.id); return allFinds.filter((find) => find.userId === data.user!.id);
case 'all': case 'all':

View File

@@ -107,7 +107,15 @@ export const GET: RequestHandler = async ({ url, locals }) => {
SELECT 1 FROM ${findLike} SELECT 1 FROM ${findLike}
WHERE ${findLike.findId} = ${find.id} WHERE ${findLike.findId} = ${find.id}
AND ${findLike.userId} = ${locals.user.id} AND ${findLike.userId} = ${locals.user.id}
) THEN 1 ELSE 0 END` ) THEN 1 ELSE 0 END`,
isFromFriend: sql<boolean>`CASE WHEN ${
friendIds.length > 0
? sql`${find.userId} IN (${sql.join(
friendIds.map((id) => sql`${id}`),
sql`, `
)})`
: sql`FALSE`
} THEN 1 ELSE 0 END`
}) })
.from(find) .from(find)
.innerJoin(user, eq(find.userId, user.id)) .innerJoin(user, eq(find.userId, user.id))
@@ -199,7 +207,8 @@ export const GET: RequestHandler = async ({ url, locals }) => {
...findItem, ...findItem,
profilePictureUrl: userProfilePictureUrl, profilePictureUrl: userProfilePictureUrl,
media: mediaWithSignedUrls, media: mediaWithSignedUrls,
isLikedByUser: Boolean(findItem.isLikedByUser) isLikedByUser: Boolean(findItem.isLikedByUser),
isFromFriend: Boolean(findItem.isFromFriend)
}; };
}) })
); );