123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- import { GraphCacheUpdaters, MyTeamsDocument } 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: {
- deleteTeam: (_r, { teamID }, cache, _info) => {
- cache.updateQuery(
- {
- query: MyTeamsDocument,
- },
- (data) => {
- if (data) {
- data.myTeams = data.myTeams.filter((x) => x.id !== teamID)
- }
- return data
- }
- )
- cache.invalidate({
- __typename: "Team",
- id: teamID,
- })
- },
- leaveTeam: (_r, { teamID }, cache, _info) => {
- cache.updateQuery(
- {
- query: MyTeamsDocument,
- },
- (data) => {
- if (data) {
- data.myTeams = data.myTeams.filter((x) => x.id !== teamID)
- }
- return data
- }
- )
- cache.invalidate({
- __typename: "Team",
- id: teamID,
- })
- },
- createTeam: (result, _args, cache, _info) => {
- cache.updateQuery(
- {
- query: MyTeamsDocument,
- },
- (data) => {
- if (data) data.myTeams.push(result.createTeam as any)
- return data
- }
- )
- },
- removeTeamMember: (_result, { teamID, userUid }, cache) => {
- const newMembers = (
- (cache.resolve(
- {
- __typename: "Team",
- id: teamID,
- },
- "teamMembers"
- ) as string[]) ?? []
- )
- .map((x) => [x, cache.resolve(x, "user") as string])
- .map(([key, userKey]) => [key, cache.resolve(userKey, "uid") as string])
- .filter(([_key, uid]) => uid !== userUid)
- .map(([key]) => key)
- cache.link({ __typename: "Team", id: teamID }, "teamMembers", newMembers)
- },
- 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
- )
- }
- },
- },
- }
|