Files
hoppscotch/packages/hoppscotch-app/helpers/backend/mutations/TeamInvitation.ts
2021-11-02 19:32:48 +05:30

55 lines
1.8 KiB
TypeScript

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
}
)