new project modal & seperate playback and music likes

This commit is contained in:
2025-10-24 16:12:07 +02:00
parent 47d5b92a57
commit 2599a25d77
12 changed files with 415 additions and 63 deletions
+34 -9
View File
@@ -339,15 +339,37 @@ exports.createProjectLikeNotification = onDocumentWritten(
return null;
}
const beforeLikes = Array.isArray(before?.likedBy) ? before.likedBy : [];
const afterLikes = Array.isArray(after?.likedBy) ? after.likedBy : [];
const beforeSongLikes = Array.isArray(before?.likes?.song)
? before.likes.song
: [];
const afterSongLikes = Array.isArray(after?.likes?.song)
? after.likes.song
: [];
const beforePlaybackLikes = Array.isArray(before?.likes?.playback)
? before.likes.playback
: [];
const afterPlaybackLikes = Array.isArray(after?.likes?.playback)
? after.likes.playback
: [];
if (afterLikes.length <= beforeLikes.length) {
return null;
}
const beforeSongSet = new Set(beforeSongLikes);
const beforePlaybackSet = new Set(beforePlaybackLikes);
const beforeSet = new Set(beforeLikes);
const newLikers = afterLikes.filter((uid) => !beforeSet.has(uid));
const newSongLikers = afterSongLikes.filter(
(uid) => uid && !beforeSongSet.has(uid)
);
const newPlaybackLikers = afterPlaybackLikes.filter(
(uid) => uid && !beforePlaybackSet.has(uid)
);
const newLikers = [];
newSongLikers.forEach((uid) => {
newLikers.push({ likerId: uid, likeType: "song" });
});
newPlaybackLikers.forEach((uid) => {
newLikers.push({ likerId: uid, likeType: "playback" });
});
if (!newLikers.length) {
return null;
@@ -359,7 +381,7 @@ exports.createProjectLikeNotification = onDocumentWritten(
: "ton projet";
await Promise.all(
newLikers.map(async (likerId) => {
newLikers.map(async ({ likerId, likeType }) => {
if (!likerId || likerId === ownerId) {
return null;
}
@@ -371,7 +393,9 @@ exports.createProjectLikeNotification = onDocumentWritten(
? liker.userName.trim()
: "Un utilisateur";
const message = `${likerName} a aimé ton projet "${projectTitle}"`;
const isPlaybackLike = likeType === "playback";
const assetLabel = isPlaybackLike ? "ton playback" : "ta musique";
const message = `${likerName} a aimé ${assetLabel} "${projectTitle}"`;
await sendNotification({
sender: likerId,
@@ -384,6 +408,7 @@ exports.createProjectLikeNotification = onDocumentWritten(
projectId,
likerId,
likerName,
likeType,
},
});