2
0
Files
bot/apps/builder/services/workspace/member.ts
2022-09-27 08:30:42 +02:00

42 lines
1.1 KiB
TypeScript

import { MemberInWorkspace, WorkspaceInvitation } from 'db'
import { fetcher } from 'services/utils'
import useSWR from 'swr'
import { env, sendRequest } from 'utils'
export type Member = MemberInWorkspace & {
name: string | null
image: string | null
email: string | null
}
export const useMembers = ({ workspaceId }: { workspaceId?: string }) => {
const { data, error, mutate } = useSWR<
{ members: Member[]; invitations: WorkspaceInvitation[] },
Error
>(workspaceId ? `/api/workspaces/${workspaceId}/members` : null, fetcher, {
dedupingInterval: env('E2E_TEST') === 'true' ? 0 : undefined,
})
return {
members: data?.members ?? [],
invitations: data?.invitations ?? [],
isLoading: !error && !data,
mutate,
}
}
export const updateMember = (
workspaceId: string,
member: Partial<MemberInWorkspace>
) =>
sendRequest({
method: 'PATCH',
url: `/api/workspaces/${workspaceId}/members/${member.userId}`,
body: member,
})
export const deleteMember = (workspaceId: string, userId: string) =>
sendRequest({
method: 'DELETE',
url: `/api/workspaces/${workspaceId}/members/${userId}`,
})