updates.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import { UpdatesConfig } from "@urql/exchange-graphcache"
  2. import gql from "graphql-tag"
  3. export const updatesDef: Partial<UpdatesConfig> = {
  4. Mutation: {
  5. deleteTeam: (_r, { teamID }, cache, _info) => {
  6. cache.updateQuery(
  7. {
  8. query: gql`
  9. query {
  10. myTeams {
  11. id
  12. }
  13. }
  14. `,
  15. },
  16. (data: any) => {
  17. data.myTeams = (data as any).myTeams.filter(
  18. (x: any) => x.id !== teamID
  19. )
  20. return data
  21. }
  22. )
  23. cache.invalidate({
  24. __typename: "Team",
  25. id: teamID as any,
  26. })
  27. },
  28. leaveTeam: (_r, { teamID }, cache, _info) => {
  29. cache.updateQuery(
  30. {
  31. query: gql`
  32. query {
  33. myTeams {
  34. id
  35. }
  36. }
  37. `,
  38. },
  39. (data: any) => {
  40. data.myTeams = (data as any).myTeams.filter(
  41. (x: any) => x.id !== teamID
  42. )
  43. return data
  44. }
  45. )
  46. cache.invalidate({
  47. __typename: "Team",
  48. id: teamID as any,
  49. })
  50. },
  51. createTeam: (result, _args, cache, _info) => {
  52. cache.updateQuery(
  53. {
  54. query: gql`
  55. {
  56. myTeams {
  57. id
  58. }
  59. }
  60. `,
  61. },
  62. (data: any) => {
  63. data.myTeams.push(result.createTeam)
  64. return data
  65. }
  66. )
  67. },
  68. renameTeam: (_result, { teamID, newName }, cache, _info) => {
  69. cache.updateQuery(
  70. {
  71. query: gql`
  72. query GetTeam($teamID: ID!) {
  73. team(teamID: $teamID) {
  74. id
  75. name
  76. }
  77. }
  78. `,
  79. variables: {
  80. teamID,
  81. },
  82. },
  83. (data: any) => {
  84. data.team.name = newName
  85. return data
  86. }
  87. )
  88. },
  89. removeTeamMember: (_result, { userUid, teamID }, cache) => {
  90. cache.updateQuery(
  91. {
  92. query: gql`
  93. query GetTeam($teamID: ID!) {
  94. team(teamID: $teamID) {
  95. members {
  96. user {
  97. uid
  98. }
  99. }
  100. }
  101. }
  102. `,
  103. variables: {
  104. teamID,
  105. },
  106. },
  107. (data: any) => {
  108. data.team.members = data.team.members.filter(
  109. (x: any) => x.user.uid !== userUid
  110. )
  111. return data
  112. }
  113. )
  114. },
  115. updateTeamMemberRole: (result, { userUid, teamID }, cache) => {
  116. cache.updateQuery(
  117. {
  118. query: gql`
  119. query GetTeam($teamID: ID!) {
  120. team(teamID: $teamID) {
  121. members {
  122. user {
  123. uid
  124. }
  125. }
  126. }
  127. }
  128. `,
  129. variables: {
  130. teamID,
  131. },
  132. },
  133. (data: any) => {
  134. data.team.members = data.team.members.map((x: any) =>
  135. x.user.uid !== userUid ? x : result
  136. )
  137. return data
  138. }
  139. )
  140. },
  141. },
  142. }