From f52bafc7e2d83ab98aa75e1b2afebd31487fb7a9 Mon Sep 17 00:00:00 2001 From: Alessandro Magionami Date: Tue, 8 Oct 2024 13:00:17 +0200 Subject: [PATCH] chore(activitystream): addStreamPermissionsAddedActivity refactor multi region (#3198) --- .../activitystream/services/streamActivity.ts | 92 ++++++++++--------- .../services/streams/streamAccessService.js | 9 +- 2 files changed, 56 insertions(+), 45 deletions(-) diff --git a/packages/server/modules/activitystream/services/streamActivity.ts b/packages/server/modules/activitystream/services/streamActivity.ts index a6616bfa6..f31223eb9 100644 --- a/packages/server/modules/activitystream/services/streamActivity.ts +++ b/packages/server/modules/activitystream/services/streamActivity.ts @@ -211,48 +211,56 @@ export async function addStreamCreatedActivity(params: { /** * Save "stream permissions granted to user" activity item */ -export async function addStreamPermissionsAddedActivity(params: { - streamId: string - activityUserId: string - targetUserId: string - role: StreamRoles - stream: StreamRecord -}) { - const { streamId, activityUserId, targetUserId, role, stream } = params - await Promise.all([ - saveActivityFactory({ db })({ - streamId, - resourceType: ResourceTypes.Stream, - resourceId: streamId, - actionType: ActionTypes.Stream.PermissionsAdd, - userId: activityUserId, - info: { targetUser: targetUserId, role }, - message: `Permission granted to user ${targetUserId} (${role})` - }), - pubsub.publish(StreamPubsubEvents.UserStreamAdded, { - userStreamAdded: { - id: streamId, - sharedBy: activityUserId - }, - ownerId: targetUserId - }), - publish(UserSubscriptions.UserProjectsUpdated, { - userProjectsUpdated: { - id: streamId, - type: UserProjectsUpdatedMessageType.Added, - project: stream - }, - ownerId: targetUserId - }), - publish(ProjectSubscriptions.ProjectUpdated, { - projectUpdated: { - id: streamId, - type: ProjectUpdatedMessageType.Updated, - project: stream - } - }) - ]) -} +export const addStreamPermissionsAddedActivityFactory = + ({ + saveActivity, + publish + }: { + saveActivity: SaveActivity + publish: PublishSubscription + }) => + async (params: { + streamId: string + activityUserId: string + targetUserId: string + role: StreamRoles + stream: StreamRecord + }) => { + const { streamId, activityUserId, targetUserId, role, stream } = params + await Promise.all([ + saveActivity({ + streamId, + resourceType: ResourceTypes.Stream, + resourceId: streamId, + actionType: ActionTypes.Stream.PermissionsAdd, + userId: activityUserId, + info: { targetUser: targetUserId, role }, + message: `Permission granted to user ${targetUserId} (${role})` + }), + publish(StreamPubsubEvents.UserStreamAdded, { + userStreamAdded: { + id: streamId, + sharedBy: activityUserId + }, + ownerId: targetUserId + }), + publish(UserSubscriptions.UserProjectsUpdated, { + userProjectsUpdated: { + id: streamId, + type: UserProjectsUpdatedMessageType.Added, + project: stream + }, + ownerId: targetUserId + }), + publish(ProjectSubscriptions.ProjectUpdated, { + projectUpdated: { + id: streamId, + type: ProjectUpdatedMessageType.Updated, + project: stream + } + }) + ]) + } /** * Save "user accepted stream invite" activity item diff --git a/packages/server/modules/core/services/streams/streamAccessService.js b/packages/server/modules/core/services/streams/streamAccessService.js index 43c70fa87..88525adc8 100644 --- a/packages/server/modules/core/services/streams/streamAccessService.js +++ b/packages/server/modules/core/services/streams/streamAccessService.js @@ -11,9 +11,9 @@ const { StreamAccessUpdateError } = require('@/modules/core/errors/stream') const { - addStreamPermissionsAddedActivity, addStreamPermissionsRevokedActivityFactory, - addStreamInviteAcceptedActivityFactory + addStreamInviteAcceptedActivityFactory, + addStreamPermissionsAddedActivityFactory } = require('@/modules/activitystream/services/streamActivity') const { getStream, @@ -200,7 +200,10 @@ async function addOrUpdateStreamCollaborator( stream }) } else { - await addStreamPermissionsAddedActivity({ + await addStreamPermissionsAddedActivityFactory({ + saveActivity: saveActivityFactory({ db }), + publish + })({ streamId, activityUserId: addedById, targetUserId: userId,