123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import { gql } from "@urql/core"
- import { GraphCacheUpdaters } from "../graphql"
- export const updatesDef: GraphCacheUpdaters = {
- Subscription: {
- teamMemberAdded: (_r, { teamID }, cache, _info) => {
- cache.invalidate(
- {
- __typename: "Team",
- id: teamID,
- },
- "teamMembers"
- )
- },
- teamMemberUpdated: (_r, { teamID }, cache, _info) => {
- cache.invalidate(
- {
- __typename: "Team",
- id: teamID,
- },
- "teamMembers"
- )
- cache.invalidate(
- {
- __typename: "Team",
- id: teamID,
- },
- "myRole"
- )
- },
- teamMemberRemoved: (_r, { teamID }, cache, _info) => {
- cache.invalidate(
- {
- __typename: "Team",
- id: teamID,
- },
- "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: {
- createTeamInvitation: (result, _args, cache, _info) => {
- cache.invalidate(
- {
- __typename: "Team",
- id: result.createTeamInvitation.teamID!,
- },
- "teamInvitations"
- )
- },
- acceptTeamInvitation: (_result, _args, cache, _info) => {
- cache.invalidate({ __typename: "Query" }, "myTeams")
- },
- revokeTeamInvitation: (_result, args, cache, _info) => {
- const targetTeamID = cache.resolve(
- {
- __typename: "TeamInvitation",
- id: args.inviteID,
- },
- "teamID"
- )
- if (typeof targetTeamID === "string") {
- const newInvites = (
- cache.resolve(
- {
- __typename: "Team",
- id: targetTeamID,
- },
- "teamInvitations"
- ) as string[]
- ).filter(
- (inviteKey) =>
- inviteKey !==
- cache.keyOfEntity({
- __typename: "TeamInvitation",
- id: args.inviteID,
- })
- )
- cache.link(
- { __typename: "Team", id: targetTeamID },
- "teamInvitations",
- newInvites
- )
- }
- },
- createShortcode: (result, _args, cache, _info) => {
- cache.writeFragment(
- gql`
- fragment _ on Shortcode {
- id
- request
- }
- `,
- {
- id: result.createShortcode.id,
- request: result.createShortcode.request,
- }
- )
- },
- },
- }
|