fix:friends filtering
This commit is contained in:
@@ -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':
|
||||||
|
|||||||
@@ -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)
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user