Преглед на файлове

feat(Activities): added socket event for when an activities message is updated

Signed-off-by: Jonathan <theflametrooper@gmail.com>
Jonathan преди 3 години
родител
ревизия
51cdc541d7
променени са 2 файла, в които са добавени 39 реда и са изтрити 2 реда
  1. 33 2
      backend/logic/activities.js
  2. 6 0
      frontend/src/pages/Profile/tabs/RecentActivity.vue

+ 33 - 2
backend/logic/activities.js

@@ -332,7 +332,10 @@ class _ActivitiesModule extends CoreClass {
 						const query = {};
 						query[`payload.${payload.type}`] = payload[payload.type];
 
-						activityModel.find(query, ["_id", "payload.message"]).sort({ createdAt: -1 }).exec(next);
+						activityModel
+							.find(query, ["_id", "userId", "payload.message"])
+							.sort({ createdAt: -1 })
+							.exec(next);
 					},
 
 					(activities, next) => {
@@ -368,7 +371,35 @@ class _ActivitiesModule extends CoreClass {
 										{ _id: activity._id },
 										{ $set: { "payload.message": activity.payload.message } }
 									)
-									.then(() => next())
+									.then(() => {
+										WSModule.runJob("SOCKETS_FROM_USER", { userId: activity.userId })
+											.then(sockets =>
+												sockets.forEach(socket =>
+													socket.dispatch("event:activity.update", {
+														data: {
+															activityId: activity._id,
+															message: activity.payload.message
+														}
+													})
+												)
+											)
+											.catch(next);
+
+										WSModule.runJob("EMIT_TO_ROOM", {
+											room: `profile-${activity.userId}-activities`,
+											args: [
+												"event:activity.update",
+												{
+													data: {
+														activityId: activity._id,
+														message: activity.payload.message
+													}
+												}
+											]
+										});
+
+										return next();
+									})
 									.catch(next);
 							},
 							err => next(err)

+ 6 - 0
frontend/src/pages/Profile/tabs/RecentActivity.vue

@@ -97,6 +97,12 @@ export default {
 			}
 		});
 
+		this.socket.on("event:activity.update", res => {
+			this.activities.find(
+				activity => activity._id === res.data.activityId
+			).payload.message = res.data.message;
+		});
+
 		this.socket.on("event:activity.create", res => {
 			this.activities.unshift(res.data.activity);
 			this.offsettedFromNextSet += 1;