@zeroin.earth/appwrite-graphql 0.14.1 → 0.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -320,6 +320,15 @@ function useCreateEmailToken() {
320
320
  return { ...queryResult };
321
321
  }
322
322
 
323
+ // src/useSuspenseQuery.ts
324
+ import {
325
+ useSuspenseQuery as useSuspenseReactQuery
326
+ } from "@tanstack/react-query";
327
+ function useSuspenseQuery(options) {
328
+ const queryClient2 = useQueryClient();
329
+ return useSuspenseReactQuery(options, queryClient2);
330
+ }
331
+
323
332
  // src/account/useCreateJWT.ts
324
333
  var accountCreateJWT = gql(
325
334
  /* GraphQL */
@@ -331,9 +340,12 @@ var accountCreateJWT = gql(
331
340
  }
332
341
  `
333
342
  );
334
- function useCreateJWT() {
343
+ function useCreateJWT({ gcTime = 6e5 } = {}) {
335
344
  const { graphql: graphql2 } = useAppwrite();
345
+ const queryClient2 = useQueryClient();
336
346
  const queryResult = useMutation({
347
+ gcTime,
348
+ mutationKey: ["appwrite", "jwt"],
337
349
  mutationFn: async () => {
338
350
  const { data, errors } = await graphql2.mutation({
339
351
  query: accountCreateJWT
@@ -342,6 +354,26 @@ function useCreateJWT() {
342
354
  throw errors;
343
355
  }
344
356
  return data.accountCreateJWT;
357
+ },
358
+ onSuccess: (data) => {
359
+ queryClient2.setQueryData(["appwrite", "jwt"], data.jwt, { updatedAt: Date.now() });
360
+ }
361
+ });
362
+ return { ...queryResult };
363
+ }
364
+ function useSuspenseCreateJWT({ gcTime = 6e5 } = {}) {
365
+ const { graphql: graphql2 } = useAppwrite();
366
+ const queryResult = useSuspenseQuery({
367
+ gcTime,
368
+ queryKey: ["appwrite", "jwt"],
369
+ queryFn: async () => {
370
+ const { data, errors } = await graphql2.mutation({
371
+ query: accountCreateJWT
372
+ });
373
+ if (errors) {
374
+ throw errors;
375
+ }
376
+ return data.accountCreateJWT;
345
377
  }
346
378
  });
347
379
  return { ...queryResult };
@@ -934,8 +966,9 @@ function useLogout() {
934
966
  return data?.accountDeleteSession;
935
967
  },
936
968
  onSuccess: async () => {
937
- queryClient2.setQueryData(["appwrite", "account"], null);
938
- queryClient2.removeQueries({ queryKey: ["appwrite", "account"] });
969
+ queryClient2.setQueryData(["appwrite"], null);
970
+ queryClient2.removeQueries({ queryKey: ["appwrite"] });
971
+ queryClient2.clear();
939
972
  }
940
973
  });
941
974
  return { ...queryResult, mutate: queryResult.mutate };
@@ -1654,6 +1687,67 @@ function useCollection({
1654
1687
  total: collection.data?.total
1655
1688
  };
1656
1689
  }
1690
+ function useSuspenseCollection({
1691
+ databaseId,
1692
+ collectionId,
1693
+ queries
1694
+ }) {
1695
+ const { graphql: graphql2 } = useAppwrite();
1696
+ const queryClient2 = useQueryClient();
1697
+ const collection = useSuspenseQuery({
1698
+ queryKey: ["appwrite", "databases", databaseId, collectionId, { queries }],
1699
+ queryFn: async () => {
1700
+ const { data, errors } = await graphql2.query({
1701
+ query: listDocuments,
1702
+ variables: {
1703
+ databaseId,
1704
+ collectionId,
1705
+ queries
1706
+ }
1707
+ });
1708
+ if (errors) {
1709
+ throw errors;
1710
+ }
1711
+ const documents2 = data.databasesListDocuments?.documents?.map((document) => ({
1712
+ ...document,
1713
+ ...document ? JSON.parse(document.data) : {}
1714
+ })) ?? [];
1715
+ return {
1716
+ total: data.databasesListDocuments?.total ?? 0,
1717
+ documents: documents2
1718
+ };
1719
+ }
1720
+ });
1721
+ useEffect2(() => {
1722
+ const unsubscribe = graphql2.client.subscribe(
1723
+ `databases.${databaseId}.collections.${collectionId}.documents`,
1724
+ (response) => {
1725
+ const [, operation] = response.events[0].match(/\.(\w+)$/);
1726
+ const document = response.payload;
1727
+ switch (operation) {
1728
+ case "create":
1729
+ case "update":
1730
+ case "delete":
1731
+ queryClient2.setQueryData(
1732
+ ["appwrite", "databases", databaseId, collectionId, "documents", document.$id],
1733
+ document
1734
+ );
1735
+ queryClient2.invalidateQueries({
1736
+ queryKey: ["appwrite", "databases", databaseId, collectionId, { queries }],
1737
+ exact: true
1738
+ });
1739
+ break;
1740
+ }
1741
+ }
1742
+ );
1743
+ return unsubscribe;
1744
+ }, [databaseId, collectionId, graphql2.client, queryClient2, queries]);
1745
+ return {
1746
+ ...collection,
1747
+ documents: collection.data?.documents,
1748
+ total: collection.data?.total
1749
+ };
1750
+ }
1657
1751
 
1658
1752
  // src/databases/useCreateDocument.ts
1659
1753
  var createDocument = gql(
@@ -2055,6 +2149,8 @@ export {
2055
2149
  useQueryClient,
2056
2150
  useResetPassword,
2057
2151
  useSignUp,
2152
+ useSuspenseCollection,
2153
+ useSuspenseCreateJWT,
2058
2154
  useUpdateDocument,
2059
2155
  useUpdateEmail,
2060
2156
  useUpdateMagicURLSession,