TeamInvitation.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { pipe } from "fp-ts/function"
  2. import * as TE from "fp-ts/TaskEither"
  3. import { runMutation } from "../GQLClient"
  4. import {
  5. AcceptTeamInvitationDocument,
  6. AcceptTeamInvitationMutation,
  7. AcceptTeamInvitationMutationVariables,
  8. CreateTeamInvitationDocument,
  9. CreateTeamInvitationMutation,
  10. CreateTeamInvitationMutationVariables,
  11. RevokeTeamInvitationDocument,
  12. RevokeTeamInvitationMutation,
  13. RevokeTeamInvitationMutationVariables,
  14. TeamMemberRole,
  15. } from "../graphql"
  16. import { Email } from "../types/Email"
  17. export type CreateTeamInvitationErrors =
  18. | "invalid/email"
  19. | "team/invalid_id"
  20. | "team/member_not_found"
  21. | "team_invite/already_member"
  22. | "team_invite/member_has_invite"
  23. | "user/not_found"
  24. type RevokeTeamInvitationErrors =
  25. | "team/not_required_role"
  26. | "team_invite/no_invite_found"
  27. type AcceptTeamInvitationErrors =
  28. | "team_invite/no_invite_found"
  29. | "team_invite/already_member"
  30. | "team_invite/email_do_not_match"
  31. export const createTeamInvitation = (
  32. inviteeEmail: Email,
  33. inviteeRole: TeamMemberRole,
  34. teamID: string
  35. ) =>
  36. pipe(
  37. runMutation<
  38. CreateTeamInvitationMutation,
  39. CreateTeamInvitationMutationVariables,
  40. CreateTeamInvitationErrors
  41. >(CreateTeamInvitationDocument, {
  42. inviteeEmail,
  43. inviteeRole,
  44. teamID,
  45. }),
  46. TE.map((x) => x.createTeamInvitation)
  47. )
  48. export const revokeTeamInvitation = (inviteID: string) =>
  49. runMutation<
  50. RevokeTeamInvitationMutation,
  51. RevokeTeamInvitationMutationVariables,
  52. RevokeTeamInvitationErrors
  53. >(RevokeTeamInvitationDocument, {
  54. inviteID,
  55. })
  56. export const acceptTeamInvitation = (inviteID: string) =>
  57. runMutation<
  58. AcceptTeamInvitationMutation,
  59. AcceptTeamInvitationMutationVariables,
  60. AcceptTeamInvitationErrors
  61. >(AcceptTeamInvitationDocument, {
  62. inviteID,
  63. })