From 64d288850643f7286f0d7093038a39e33bc82e1c Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Fri, 25 Oct 2024 13:55:26 +0300 Subject: [PATCH] branchUpdated sub --- .../activitystream/services/branchActivity.ts | 3 +-- .../modules/core/graph/resolvers/branches.js | 22 ------------------- .../core/graph/resolvers/branchesNew.ts | 20 +++++++++++++++++ .../modules/shared/utils/subscriptions.ts | 13 ++++++++++- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/packages/server/modules/activitystream/services/branchActivity.ts b/packages/server/modules/activitystream/services/branchActivity.ts index bc5106deb3..0cfcc8bed3 100644 --- a/packages/server/modules/activitystream/services/branchActivity.ts +++ b/packages/server/modules/activitystream/services/branchActivity.ts @@ -75,8 +75,7 @@ export const addBranchUpdatedActivityFactory = info: { old: oldBranch, new: update }, message: `Branch metadata changed for branch ${update.id}` }), - // @deprecated - pubsub.publish(BranchPubsubEvents.BranchUpdated, { + publish(BranchPubsubEvents.BranchUpdated, { branchUpdated: { ...update }, streamId, branchId: update.id diff --git a/packages/server/modules/core/graph/resolvers/branches.js b/packages/server/modules/core/graph/resolvers/branches.js index 5e081dfa3a..d5404ace4f 100644 --- a/packages/server/modules/core/graph/resolvers/branches.js +++ b/packages/server/modules/core/graph/resolvers/branches.js @@ -11,33 +11,11 @@ const { Roles } = require('@speckle/shared') */ // subscription events -const BRANCH_UPDATED = BranchPubsubEvents.BranchUpdated const BRANCH_DELETED = BranchPubsubEvents.BranchDeleted /** @type {import('@/modules/core/graph/generated/graphql').Resolvers} */ module.exports = { Subscription: { - branchUpdated: { - subscribe: withFilter( - () => pubsub.asyncIterator([BRANCH_UPDATED]), - async (payload, variables, context) => { - await authorizeResolver( - context.userId, - payload.streamId, - Roles.Stream.Reviewer, - context.resourceAccessRules - ) - - const streamMatch = payload.streamId === variables.streamId - if (streamMatch && variables.branchId) { - return payload.branchId === variables.branchId - } - - return streamMatch - } - ) - }, - branchDeleted: { subscribe: withFilter( () => pubsub.asyncIterator([BRANCH_DELETED]), diff --git a/packages/server/modules/core/graph/resolvers/branchesNew.ts b/packages/server/modules/core/graph/resolvers/branchesNew.ts index ecf7108a18..5997e6f5b3 100644 --- a/packages/server/modules/core/graph/resolvers/branchesNew.ts +++ b/packages/server/modules/core/graph/resolvers/branchesNew.ts @@ -153,6 +153,26 @@ export = { return payload.streamId === variables.streamId } ) + }, + branchUpdated: { + subscribe: filteredSubscribe( + BranchPubsubEvents.BranchUpdated, + async (payload, variables, context) => { + await authorizeResolver( + context.userId, + payload.streamId, + Roles.Stream.Reviewer, + context.resourceAccessRules + ) + + const streamMatch = payload.streamId === variables.streamId + if (streamMatch && variables.branchId) { + return payload.branchId === variables.branchId + } + + return streamMatch + } + ) } } } as Resolvers diff --git a/packages/server/modules/shared/utils/subscriptions.ts b/packages/server/modules/shared/utils/subscriptions.ts index fd4f99a85f..660a762db2 100644 --- a/packages/server/modules/shared/utils/subscriptions.ts +++ b/packages/server/modules/shared/utils/subscriptions.ts @@ -40,7 +40,10 @@ import { ProjectUpdateInput, SubscriptionStreamUpdatedArgs, SubscriptionStreamDeletedArgs, - SubscriptionBranchCreatedArgs + SubscriptionBranchCreatedArgs, + SubscriptionBranchUpdatedArgs, + BranchUpdateInput, + UpdateModelInput } from '@/modules/core/graph/generated/graphql' import { Merge } from 'type-fest' import { @@ -307,6 +310,14 @@ type SubscriptionTypeMap = { payload: { branchCreated: BranchRecord; streamId: string } variables: SubscriptionBranchCreatedArgs } + [BranchSubscriptions.BranchUpdated]: { + payload: { + branchUpdated: BranchUpdateInput | UpdateModelInput + streamId: string + branchId: string + } + variables: SubscriptionBranchUpdatedArgs + } } & { [k in SubscriptionEvent]: { payload: unknown; variables: unknown } } type SubscriptionEvent =