TeamInvitation.ts 1.8 KB

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