|
@@ -0,0 +1,55 @@
|
|
|
|
|
+import { runMutation } from "../GQLClient";
|
|
|
|
|
+import { AcceptTeamInvitationDocument, AcceptTeamInvitationMutation, AcceptTeamInvitationMutationVariables, CreateTeamInvitationDocument, CreateTeamInvitationMutation, CreateTeamInvitationMutationVariables, RevokeTeamInvitationDocument, RevokeTeamInvitationMutation, RevokeTeamInvitationMutationVariables, TeamMemberRole } from "../graphql";
|
|
|
|
|
+import { Email } from "../types/Email";
|
|
|
|
|
+import { pipe } from "fp-ts/function";
|
|
|
|
|
+import * as TE from "fp-ts/TaskEither";
|
|
|
|
|
+
|
|
|
|
|
+type CreateTeamInvitationErrors
|
|
|
|
|
+ = "invalid/email" | "team/invalid_id" | "team/member_not_found" | "team_invite/already_member" | "team_invite/member_has_invite"
|
|
|
|
|
+
|
|
|
|
|
+type RevokeTeamInvitationErrors
|
|
|
|
|
+ = "team/not_required_role" | "team_invite/no_invite_found"
|
|
|
|
|
+
|
|
|
|
|
+type AcceptTeamInvitationErrors
|
|
|
|
|
+ = "team_invite/no_invite_found" | "team_invitee/not_invitee" | "team_invite/already_member" | "team_invite/email_do_not_match"
|
|
|
|
|
+
|
|
|
|
|
+export const createTeamInvitation = (inviteeEmail: Email, inviteeRole: TeamMemberRole, teamID: string) =>
|
|
|
|
|
+ pipe(
|
|
|
|
|
+ runMutation<
|
|
|
|
|
+ CreateTeamInvitationMutation,
|
|
|
|
|
+ CreateTeamInvitationMutationVariables,
|
|
|
|
|
+ CreateTeamInvitationErrors
|
|
|
|
|
+ >(
|
|
|
|
|
+ CreateTeamInvitationDocument,
|
|
|
|
|
+ {
|
|
|
|
|
+ inviteeEmail,
|
|
|
|
|
+ inviteeRole,
|
|
|
|
|
+ teamID
|
|
|
|
|
+ }
|
|
|
|
|
+ ),
|
|
|
|
|
+ TE.map((x) => x.createTeamInvitation)
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+export const revokeTeamInvitation = (inviteID: string) =>
|
|
|
|
|
+ runMutation<
|
|
|
|
|
+ RevokeTeamInvitationMutation,
|
|
|
|
|
+ RevokeTeamInvitationMutationVariables,
|
|
|
|
|
+ RevokeTeamInvitationErrors
|
|
|
|
|
+ >(
|
|
|
|
|
+ RevokeTeamInvitationDocument,
|
|
|
|
|
+ {
|
|
|
|
|
+ inviteID
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+export const acceptTeamInvitation = (inviteID: string) =>
|
|
|
|
|
+ runMutation<
|
|
|
|
|
+ AcceptTeamInvitationMutation,
|
|
|
|
|
+ AcceptTeamInvitationMutationVariables,
|
|
|
|
|
+ AcceptTeamInvitationErrors
|
|
|
|
|
+ >(
|
|
|
|
|
+ AcceptTeamInvitationDocument,
|
|
|
|
|
+ {
|
|
|
|
|
+ inviteID
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|