diff --git a/package.json b/package.json index acbbbae..c983370 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "harmony-back", - "version": "0.12.14", + "version": "0.12.15", "private": true, "description": "A Strapi application", "scripts": { diff --git a/src/api/contact/content-types/contact/lifecycles.ts b/src/api/contact/content-types/contact/lifecycles.ts index 08b8b8b..d75e61a 100644 --- a/src/api/contact/content-types/contact/lifecycles.ts +++ b/src/api/contact/content-types/contact/lifecycles.ts @@ -22,6 +22,12 @@ module.exports = { // On s'assure que le receiver et le sender existent bien if (user && owner) { try { + await strapi.service("api::notification.notification")?.addActivity({ + userId: owner.id, + activityMessage: `${owner.username} a invité ${user.username} à être ami avec lui.`, + activityUser: user.username, + activityType: "user", + }); // Appel du service de notification await strapi .service("api::notification.notification") diff --git a/src/api/notification/services/notification.ts b/src/api/notification/services/notification.ts index d188d8c..6776b3b 100644 --- a/src/api/notification/services/notification.ts +++ b/src/api/notification/services/notification.ts @@ -20,6 +20,14 @@ interface NotificationEntity { updatedAt: string; } +interface ActivityPayload { + userId: number; + activityMessage: string; + activityUser: string; + activityType: string; + activityAvatar?: number; +} + /** * notification service */ @@ -47,5 +55,40 @@ export default factories.createCoreService( strapi.log.info(`🔔 Notification créée: ${title}`); return notification; }, + async addActivity({ + userId, + activityMessage, + activityUser, + activityType, + }: ActivityPayload): Promise { + const user = await strapi.entityService.findOne( + "plugin::users-permissions.user", + userId, + { populate: ["activities", "avatar"] } + ); + + const existingActivities = user?.activities || []; + const newActivity = { + activityMessage, + activityUser, + activityDate: new Date(), + activityType, + activityAvatar: user.avatar?.id, + }; + + await strapi.entityService.update( + "plugin::users-permissions.user", + userId, + { + data: { + activities: [...existingActivities, newActivity], + }, + } + ); + + strapi.log.info( + `✅ Activity added for user ${activityUser}: ${activityMessage}` + ); + }, }) ); diff --git a/src/extensions/documentation/documentation/1.0.0/full_documentation.json b/src/extensions/documentation/documentation/1.0.0/full_documentation.json index f0076d6..9c799b2 100644 --- a/src/extensions/documentation/documentation/1.0.0/full_documentation.json +++ b/src/extensions/documentation/documentation/1.0.0/full_documentation.json @@ -14,7 +14,7 @@ "name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html" }, - "x-generation-date": "2025-12-11T14:30:17.431Z" + "x-generation-date": "2025-12-11T16:29:12.158Z" }, "x-strapi-config": { "plugins": [ diff --git a/src/extensions/users-permissions/strapi-server.ts b/src/extensions/users-permissions/strapi-server.ts index d67e43a..08d1f5d 100644 --- a/src/extensions/users-permissions/strapi-server.ts +++ b/src/extensions/users-permissions/strapi-server.ts @@ -531,24 +531,16 @@ module.exports = (plugin) => { async afterCreate(event) { const { result } = event; - const newActivity = { - activityMessage: `Bienvenue ${result.username}, Ton compte est maintenant activé.`, - activityUser: result.username, - activityDate: new Date(), - activityType: "user" as const, - }; - await sendConfirmationEmail(result); - await strapi.entityService.update( - "plugin::users-permissions.user", - result.id, - { - data: { - activities: [newActivity], - }, - } - ); + await strapi + .service("api::notification.notification") + ?.addActivity({ + userId: result.id, + activityMessage: `Bienvenue ${result.username}, Ton compte est maintenant activé.`, + activityUser: result.username, + activityType: "user", + }); // Appel du service de notification await strapi