Front end:
export const ADD_PROJECT_SUBSCRIPTION = gql`
subscription projectAddedSubscription {
projectAdded {
id
projectName
accountId
...
}
}
`
subscribeToNewProject={() =>
subscribeToMore({
document: ADD_PROJECT_SUBSCRIPTION,
variables: {},
updateQuery: (prev, { subscriptionData }) => {
if (!subscriptionData.data) return prev
const newProject = subscriptionData.data.projectAdded
console.log(newProject)
return Object.assign({}, prev, {
projectsOfSat: [newProject, ...prev.projectsOfSat]
})
}
})
}
==
Resolver:
Mutation: {
addProject: combineResolvers(
isAuthenticated,
async (parent, { projectInput }, { models, me, pubsub }) => {
const { projectName, clientId } = projectInput
const project = await Project.create({
accountId: me.accountId,
projectName: projectName || 'default project',
clientId: clientId || 0
})
pubsub.publish('PROJECT_CHANNEL', { projectAdded: project })
return project
}
),
Subscription: {
projectAdded: {
subscribe: (parent, args, { pubsub }) => {
return pubsub.asyncIterator(PROJECT_CHANNEL)
}
}
}
Comments
Post a Comment