0.11.10 : add link post
This commit is contained in:
@@ -207,7 +207,26 @@ export default ({ strapi }: { strapi: Core.Strapi }) =>
|
||||
}
|
||||
});
|
||||
|
||||
// 7️⃣ Enrichir le feed avec les propriétés friend, member, contactFollow, group et registered participants
|
||||
// 7️⃣ Récupérer les PostOwnership pour vérifier si les events sont déjà partagés
|
||||
const eventPostOwnerships = await strapi.db
|
||||
.query("api::post-ownership.post-ownership")
|
||||
.findMany({
|
||||
where: {
|
||||
contextId: eventIds,
|
||||
contextType: "event",
|
||||
relation: "link",
|
||||
},
|
||||
populate: ["author"],
|
||||
});
|
||||
|
||||
// Créer une map des events partagés par userId et eventId
|
||||
const sharedEventsByUserAndEvent = new Map<string, boolean>();
|
||||
eventPostOwnerships.forEach((po) => {
|
||||
const key = `${po.author?.id}-${po.contextId}`;
|
||||
sharedEventsByUserAndEvent.set(key, true);
|
||||
});
|
||||
|
||||
// 8️⃣ Enrichir le feed avec les propriétés friend, member, contactFollow, group, registered participants et isShared
|
||||
const enrichedFeed = feed.map((eventRelationship) => {
|
||||
const authorId = eventRelationship.author?.id;
|
||||
const contextType = eventRelationship.contextType;
|
||||
@@ -235,6 +254,12 @@ export default ({ strapi }: { strapi: Core.Strapi }) =>
|
||||
? participantsByEventId.get(eventId) || []
|
||||
: [];
|
||||
|
||||
// Vérifier si l'event est déjà partagé par l'auteur
|
||||
const isShared =
|
||||
authorId && eventId
|
||||
? sharedEventsByUserAndEvent.has(`${authorId}-${eventId}`)
|
||||
: false;
|
||||
|
||||
return {
|
||||
...eventRelationship,
|
||||
friend: isFriend,
|
||||
@@ -242,6 +267,7 @@ export default ({ strapi }: { strapi: Core.Strapi }) =>
|
||||
member: isMember,
|
||||
...(group && { group }), // Ajouter group seulement s'il existe
|
||||
registered, // Ajouter les participants enregistrés
|
||||
isShared, // Indiquer si l'event est partagé par l'auteur
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -34,7 +35,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {
|
||||
|
||||
@@ -19,7 +19,12 @@
|
||||
"type": "media",
|
||||
"multiple": true,
|
||||
"required": false,
|
||||
"allowedTypes": ["images", "files", "videos", "audios"]
|
||||
"allowedTypes": [
|
||||
"images",
|
||||
"files",
|
||||
"videos",
|
||||
"audios"
|
||||
]
|
||||
},
|
||||
"likes": {
|
||||
"type": "relation",
|
||||
@@ -28,7 +33,11 @@
|
||||
},
|
||||
"category": {
|
||||
"type": "enumeration",
|
||||
"enum": ["photo", "video", "event"]
|
||||
"enum": [
|
||||
"photo",
|
||||
"video",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"comments": {
|
||||
"type": "relation",
|
||||
|
||||
@@ -720,5 +720,57 @@ export default factories.createCoreController(
|
||||
return ctx.internalServerError("Failed to add comment");
|
||||
}
|
||||
},
|
||||
|
||||
async link(ctx) {
|
||||
const user = ctx.state.user;
|
||||
if (!user) {
|
||||
return ctx.unauthorized("You must be logged in to link events");
|
||||
}
|
||||
|
||||
const { contextType, contextId, relation } = ctx.request.body;
|
||||
|
||||
if (!contextType || contextId === undefined || !relation) {
|
||||
return ctx.badRequest(
|
||||
"contextType, contextId, and relation are required"
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
// Check if link already exists
|
||||
const existingLink = await strapi.db
|
||||
.query("api::post-ownership.post-ownership")
|
||||
.findOne({
|
||||
where: {
|
||||
author: user.id,
|
||||
contextType,
|
||||
contextId,
|
||||
relation,
|
||||
},
|
||||
});
|
||||
|
||||
if (existingLink) {
|
||||
return ctx.badRequest("This event is already linked");
|
||||
}
|
||||
|
||||
const postOwnership = await strapi.db
|
||||
.query("api::post-ownership.post-ownership")
|
||||
.create({
|
||||
data: {
|
||||
author: user.id,
|
||||
contextType,
|
||||
contextId,
|
||||
relation,
|
||||
},
|
||||
});
|
||||
|
||||
return ctx.send({
|
||||
message: "Event linked successfully",
|
||||
postOwnership,
|
||||
});
|
||||
} catch (error: any) {
|
||||
console.error("Error linking event:", error);
|
||||
return ctx.internalServerError("Failed to link event");
|
||||
}
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
@@ -39,5 +39,10 @@ export default {
|
||||
path: "/posts/:id/comment",
|
||||
handler: "post.addComment",
|
||||
},
|
||||
{
|
||||
method: "POST",
|
||||
path: "/posts/link",
|
||||
handler: "post.link",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"name": "Apache 2.0",
|
||||
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
|
||||
},
|
||||
"x-generation-date": "2025-10-24T10:39:51.987Z"
|
||||
"x-generation-date": "2025-10-29T21:53:00.271Z"
|
||||
},
|
||||
"x-strapi-config": {
|
||||
"plugins": [
|
||||
@@ -16968,7 +16968,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -16979,7 +16980,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -20417,7 +20419,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -20428,7 +20431,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -24351,7 +24355,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -24362,7 +24367,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -27844,7 +27850,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -27855,7 +27862,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -31785,7 +31793,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -31796,7 +31805,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -35977,7 +35987,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -35988,7 +35999,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -40618,7 +40630,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -40629,7 +40642,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -44549,7 +44563,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -44560,7 +44575,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -48382,7 +48398,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -48393,7 +48410,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -52202,7 +52220,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -52213,7 +52232,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -56058,7 +56078,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -56069,7 +56090,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -59914,7 +59936,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -59925,7 +59948,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -63731,7 +63755,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -63742,7 +63767,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -67729,7 +67755,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -67740,7 +67767,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -71216,7 +71244,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -71227,7 +71256,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -75632,7 +75662,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -75643,7 +75674,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -79448,7 +79480,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -79459,7 +79492,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -83581,7 +83615,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -83592,7 +83627,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -87417,7 +87453,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -87428,7 +87465,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -91359,7 +91397,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -91370,7 +91409,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -94638,7 +94678,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -94649,7 +94690,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -99195,7 +99237,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -99206,7 +99249,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -99797,7 +99841,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -99808,7 +99853,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -103076,7 +103122,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -103087,7 +103134,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -103528,7 +103576,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -103539,7 +103588,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
@@ -106917,7 +106967,8 @@
|
||||
"enum": [
|
||||
"user",
|
||||
"group",
|
||||
"system"
|
||||
"system",
|
||||
"event"
|
||||
]
|
||||
},
|
||||
"contextId": {
|
||||
@@ -106928,7 +106979,8 @@
|
||||
"enum": [
|
||||
"owner",
|
||||
"saved",
|
||||
"hidden"
|
||||
"hidden",
|
||||
"link"
|
||||
]
|
||||
},
|
||||
"metas": {},
|
||||
|
||||
Reference in New Issue
Block a user