Merge branch 'main' into fabians/core-ioc-41

This commit is contained in:
Kristaps Fabians Geikins
2024-10-14 11:47:12 +03:00
6 changed files with 85 additions and 54 deletions
@@ -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<void>
export type AddCommitUpdatedActivity = (params: {
commitId: string
streamId: string
userId: string
originalCommit: CommitRecord
update: CommitUpdateInput | UpdateVersionInput
newCommit: CommitRecord
}) => Promise<void>
@@ -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
@@ -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 })
})
@@ -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 })
})
@@ -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 =>
@@ -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 })
})