Skip to content

Instantly share code, notes, and snippets.

@David-Melo
Last active October 15, 2021 09:08
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save David-Melo/c01b77528c2d1fd00d040e1b917c0beb to your computer and use it in GitHub Desktop.
Save David-Melo/c01b77528c2d1fd00d040e1b917c0beb to your computer and use it in GitHub Desktop.
Overmind GraphQL Effects
import { graphql } from 'overmind-graphql';
import { SubscriptionClient } from 'subscriptions-transport-ws';
// Query & Mutation GQL Tags
import * as queries from './queries';
import * as mutations from './mutations';
// Subscription GQL Tags
import { UsersUpdatedQuery } from './generated/api';
// overmind-graphql
export const gql = graphql({
queries,
mutations
});
type Subscriptions = {
[index: string]: {
unsubscribe: () => void;
}
}
// Custom Subscriptions Effect
export const subscriptions = (() => {
let client: SubscriptionClient;
let subscriptions: Subscriptions = {};
return {
initialize() {
client = new SubscriptionClient('ws://localhost:8080/v1/graphql', {
reconnect: true,
connectionParams: {
headers: {
'x-hasura-admin-secret': '12343545'
}
}
});
},
usersUpdated(action: any, variables: Object = {}) {
let observable = client.request({
query: UsersUpdatedQuery,
variables
});
subscriptions['usersUpdated'] = observable.subscribe({
next: ({data}) => action(data)
});
},
unsubscribe(subscriptionName: string) {
subscriptions[subscriptionName].unsubscribe();
}
}
})()
@Varal7
Copy link

Varal7 commented May 28, 2021

Thank you! This is the only way I could get graphql subscriptions working with overmind!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment