diff --git a/packages/server/modules/activitystream/domain/operations.ts b/packages/server/modules/activitystream/domain/operations.ts index 0a11fdf57..67e9d0e99 100644 --- a/packages/server/modules/activitystream/domain/operations.ts +++ b/packages/server/modules/activitystream/domain/operations.ts @@ -9,8 +9,10 @@ import { } from '@/modules/activitystream/helpers/types' import { CommitCreateInput, + CommitUpdateInput, ProjectUpdateInput, - StreamUpdateInput + StreamUpdateInput, + UpdateVersionInput } from '@/modules/core/graph/generated/graphql' import { CommitRecord, @@ -212,3 +214,12 @@ export type AddCommitCreatedActivity = (params: { modelId: string commit: CommitRecord }) => Promise + +export type AddCommitUpdatedActivity = (params: { + commitId: string + streamId: string + userId: string + originalCommit: CommitRecord + update: CommitUpdateInput | UpdateVersionInput + newCommit: CommitRecord +}) => Promise diff --git a/packages/server/modules/activitystream/services/commitActivity.ts b/packages/server/modules/activitystream/services/commitActivity.ts index 82def7a7d..766926b9c 100644 --- a/packages/server/modules/activitystream/services/commitActivity.ts +++ b/packages/server/modules/activitystream/services/commitActivity.ts @@ -18,6 +18,7 @@ import { saveActivityFactory } from '@/modules/activitystream/repositories' import { db } from '@/db/knex' import { AddCommitCreatedActivity, + AddCommitUpdatedActivity, SaveActivity } from '@/modules/activitystream/domain/operations' @@ -80,49 +81,57 @@ const isOldVersionUpdateInput = ( i: CommitUpdateInput | UpdateVersionInput ): i is CommitUpdateInput => has(i, 'streamId') -export async function addCommitUpdatedActivity(params: { - commitId: string - streamId: string - userId: string - originalCommit: CommitRecord - update: CommitUpdateInput | UpdateVersionInput - newCommit: CommitRecord -}) { - const { commitId, streamId, userId, originalCommit, update, newCommit } = params - const legacyUpdateStruct: CommitUpdateInput = isOldVersionUpdateInput(update) - ? update - : { - id: update.versionId, - message: update.message, - streamId - } +export const addCommitUpdatedActivityFactory = + ({ + saveActivity, + publish + }: { + saveActivity: SaveActivity + publish: PublishSubscription + }): AddCommitUpdatedActivity => + async (params: { + commitId: string + streamId: string + userId: string + originalCommit: CommitRecord + update: CommitUpdateInput | UpdateVersionInput + newCommit: CommitRecord + }) => { + const { commitId, streamId, userId, originalCommit, update, newCommit } = params + const legacyUpdateStruct: CommitUpdateInput = isOldVersionUpdateInput(update) + ? update + : { + id: update.versionId, + message: update.message, + streamId + } - await Promise.all([ - saveActivityFactory({ db })({ - streamId, - resourceType: ResourceTypes.Commit, - resourceId: commitId, - actionType: ActionTypes.Commit.Update, - userId, - info: { old: originalCommit, new: update }, - message: `Commit updated: ${commitId}` - }), - pubsub.publish(CommitPubsubEvents.CommitUpdated, { - commitUpdated: { ...legacyUpdateStruct }, - streamId, - commitId - }), - publish(ProjectSubscriptions.ProjectVersionsUpdated, { - projectId: streamId, - projectVersionsUpdated: { - id: commitId, - version: newCommit, - type: ProjectVersionsUpdatedMessageType.Updated, - modelId: null - } - }) - ]) -} + await Promise.all([ + saveActivity({ + streamId, + resourceType: ResourceTypes.Commit, + resourceId: commitId, + actionType: ActionTypes.Commit.Update, + userId, + info: { old: originalCommit, new: update }, + message: `Commit updated: ${commitId}` + }), + publish(CommitPubsubEvents.CommitUpdated, { + commitUpdated: { ...legacyUpdateStruct }, + streamId, + commitId + }), + publish(ProjectSubscriptions.ProjectVersionsUpdated, { + projectId: streamId, + projectVersionsUpdated: { + id: commitId, + version: newCommit, + type: ProjectVersionsUpdatedMessageType.Updated, + modelId: null + } + }) + ]) + } export async function addCommitMovedActivity(params: { commitId: string diff --git a/packages/server/modules/core/graph/resolvers/commits.js b/packages/server/modules/core/graph/resolvers/commits.js index ba522bd5d..485276c54 100644 --- a/packages/server/modules/core/graph/resolvers/commits.js +++ b/packages/server/modules/core/graph/resolvers/commits.js @@ -67,9 +67,9 @@ const { } = require('@/modules/core/repositories/branches') const { addCommitDeletedActivity, - addCommitUpdatedActivity, addCommitMovedActivity, - addCommitCreatedActivityFactory + addCommitCreatedActivityFactory, + addCommitUpdatedActivityFactory } = require('@/modules/activitystream/services/commitActivity') const { VersionsEmitter } = require('@/modules/core/events/versionsEmitter') const { getObjectFactory } = require('@/modules/core/repositories/objects') @@ -124,7 +124,10 @@ const updateCommitAndNotify = updateCommitAndNotifyFactory({ getCommitBranch: getCommitBranchFactory({ db }), switchCommitBranch: switchCommitBranchFactory({ db }), updateCommit: updateCommitFactory({ db }), - addCommitUpdatedActivity, + addCommitUpdatedActivity: addCommitUpdatedActivityFactory({ + saveActivity: saveActivityFactory({ db }), + publish + }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }) }) diff --git a/packages/server/modules/core/graph/resolvers/versions.ts b/packages/server/modules/core/graph/resolvers/versions.ts index 94bcf4dd9..0c6ed901d 100644 --- a/packages/server/modules/core/graph/resolvers/versions.ts +++ b/packages/server/modules/core/graph/resolvers/versions.ts @@ -50,7 +50,7 @@ import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { addCommitCreatedActivityFactory, addCommitMovedActivity, - addCommitUpdatedActivity + addCommitUpdatedActivityFactory } from '@/modules/activitystream/services/commitActivity' import { getObjectFactory } from '@/modules/core/repositories/objects' import { saveActivityFactory } from '@/modules/activitystream/repositories' @@ -82,7 +82,10 @@ const updateCommitAndNotify = updateCommitAndNotifyFactory({ getCommitBranch: getCommitBranchFactory({ db }), switchCommitBranch: switchCommitBranchFactory({ db }), updateCommit: updateCommitFactory({ db }), - addCommitUpdatedActivity, + addCommitUpdatedActivity: addCommitUpdatedActivityFactory({ + saveActivity: saveActivityFactory({ db }), + publish + }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }) }) diff --git a/packages/server/modules/core/services/commit/management.ts b/packages/server/modules/core/services/commit/management.ts index 2d4e35ba9..95a226446 100644 --- a/packages/server/modules/core/services/commit/management.ts +++ b/packages/server/modules/core/services/commit/management.ts @@ -1,9 +1,11 @@ import { db } from '@/db/knex' -import { AddCommitCreatedActivity } from '@/modules/activitystream/domain/operations' +import { + AddCommitCreatedActivity, + AddCommitUpdatedActivity +} from '@/modules/activitystream/domain/operations' import { addCommitDeletedActivity, - addCommitReceivedActivity, - addCommitUpdatedActivity + addCommitReceivedActivity } from '@/modules/activitystream/services/commitActivity' import { GetBranchById, @@ -256,7 +258,7 @@ export const updateCommitAndNotifyFactory = getCommitBranch: GetCommitBranch switchCommitBranch: SwitchCommitBranch updateCommit: UpdateCommit - addCommitUpdatedActivity: typeof addCommitUpdatedActivity + addCommitUpdatedActivity: AddCommitUpdatedActivity markCommitStreamUpdated: typeof markCommitStreamUpdated markCommitBranchUpdated: MarkCommitBranchUpdated }): UpdateCommitAndNotify => diff --git a/packages/server/modules/core/tests/commits.spec.js b/packages/server/modules/core/tests/commits.spec.js index d516d5694..4deb4f457 100644 --- a/packages/server/modules/core/tests/commits.spec.js +++ b/packages/server/modules/core/tests/commits.spec.js @@ -51,7 +51,7 @@ const { } = require('@/modules/core/repositories/streams') const { addCommitDeletedActivity, - addCommitUpdatedActivity + addCommitUpdatedActivityFactory } = require('@/modules/activitystream/services/commitActivity') const { VersionsEmitter } = require('@/modules/core/events/versionsEmitter') const { getObjectFactory } = require('@/modules/core/repositories/objects') @@ -131,7 +131,10 @@ const updateCommitAndNotify = updateCommitAndNotifyFactory({ getCommitBranch: getCommitBranchFactory({ db }), switchCommitBranch: switchCommitBranchFactory({ db }), updateCommit: updateCommitFactory({ db }), - addCommitUpdatedActivity, + addCommitUpdatedActivity: addCommitUpdatedActivityFactory({ + saveActivity: saveActivityFactory({ db }), + publish + }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }) })