feat: fix subscription auth refresh issues

This commit is contained in:
Andrew Bastin
2021-10-31 17:40:03 +05:30
committed by liyasthomas
parent d9e5d4aec5
commit e31c0a9d02
3 changed files with 30 additions and 6 deletions

View File

@@ -357,14 +357,14 @@ const pendingInvites = useGQLQuery<
? [] ? []
: [ : [
{ {
key: 3, key: 4,
query: TeamInvitationAddedDocument, query: TeamInvitationAddedDocument,
variables: { variables: {
teamID: props.editingTeamID, teamID: props.editingTeamID,
}, },
}, },
{ {
key: 4, key: 5,
query: TeamInvitationRemovedDocument, query: TeamInvitationRemovedDocument,
variables: { variables: {
teamID: props.editingTeamID, teamID: props.editingTeamID,

View File

@@ -57,12 +57,18 @@ const subscriptionClient = new SubscriptionClient(
: "wss://api.hoppscotch.io/graphql", : "wss://api.hoppscotch.io/graphql",
{ {
reconnect: true, reconnect: true,
connectionParams: () => ({ connectionParams: () => {
authorization: `Bearer ${authIdToken$.value}`, return {
}), authorization: `Bearer ${authIdToken$.value}`,
}
},
} }
) )
authIdToken$.subscribe(() => {
subscriptionClient.client.close()
})
export const client = createClient({ export const client = createClient({
url: BACKEND_GQL_URL, url: BACKEND_GQL_URL,
exchanges: [ exchanges: [
@@ -113,6 +119,7 @@ export const client = createClient({
}), }),
fetchExchange, fetchExchange,
subscriptionExchange({ subscriptionExchange({
// @ts-expect-error: An issue with the Urql typing
forwardSubscription: (operation) => subscriptionClient.request(operation), forwardSubscription: (operation) => subscriptionClient.request(operation),
}), }),
], ],

View File

@@ -3,7 +3,6 @@ import { GraphCacheUpdaters, MyTeamsDocument } from "../graphql"
export const updatesDef: GraphCacheUpdaters = { export const updatesDef: GraphCacheUpdaters = {
Subscription: { Subscription: {
teamMemberAdded: (_r, { teamID }, cache, _info) => { teamMemberAdded: (_r, { teamID }, cache, _info) => {
debugger
cache.invalidate( cache.invalidate(
{ {
__typename: "Team", __typename: "Team",
@@ -38,6 +37,24 @@ export const updatesDef: GraphCacheUpdaters = {
"teamMembers" "teamMembers"
) )
}, },
teamInvitationAdded: (_r, { teamID }, cache, _info) => {
cache.invalidate(
{
__typename: "Team",
id: teamID,
},
"teamInvitations"
)
},
teamInvitationRemoved: (_r, { teamID }, cache, _info) => {
cache.invalidate(
{
__typename: "Team",
id: teamID,
},
"teamInvitations"
)
},
}, },
Mutation: { Mutation: {
deleteTeam: (_r, { teamID }, cache, _info) => { deleteTeam: (_r, { teamID }, cache, _info) => {