frontend client for gemstone. decentralised workplace app
1import type { AtUri } from "@/lib/types/atproto";
2import { getInviteFromPds } from "@/queries/get-invite-from-pds";
3import { useQuery } from "@tanstack/react-query";
4
5export const useInviteQuery = (atUri: Required<AtUri>) => {
6 const queryKey = ["invite", atUri.authority, atUri.rKey];
7 return {
8 queryKey,
9 useQuery: () =>
10 useQuery({
11 queryKey,
12 queryFn: async () => {
13 return await pdsInviteQueryFn(atUri);
14 },
15 }),
16 };
17};
18
19const pdsInviteQueryFn = async (atUri: Required<AtUri>) => {
20 const invites = await getInviteFromPds(atUri);
21
22 if (!invites.ok) {
23 console.error("pdsInviteQueryFn error.", invites.error);
24 throw new Error(
25 `Something went wrong while getting the user's invite record directly.}`,
26 );
27 }
28
29 return invites.data;
30};