@xyo-network/react-archivist 2.26.56 → 2.26.59

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.
@@ -1,20 +1,17 @@
1
1
  /// <reference types="react" />
2
- import { WithChildren } from '@xylabs/react-shared';
3
2
  import { XyoRemoteArchivistConfig } from '@xyo-network/api';
4
3
  import { XyoArchivist, XyoArchivistConfig } from '@xyo-network/archivist';
5
- export interface ArchivistProviderProps {
6
- required?: boolean;
4
+ import { ContextExProviderProps } from '@xyo-network/react-shared';
5
+ export declare type ArchivistProviderProps = ContextExProviderProps<{
7
6
  archivist?: XyoArchivist;
8
- }
9
- export declare const ArchivistProvider: React.FC<WithChildren<ArchivistProviderProps>>;
10
- export interface MemoryArchivistProviderProps {
11
- required?: boolean;
7
+ }>;
8
+ export declare const ArchivistProvider: React.FC<ArchivistProviderProps>;
9
+ export declare type MemoryArchivistProviderProps = ContextExProviderProps<{
12
10
  config?: XyoArchivistConfig;
13
- }
14
- export declare const MemoryArchivistProvider: React.FC<WithChildren<MemoryArchivistProviderProps>>;
15
- export interface ApiArchivistProviderProps {
16
- required?: boolean;
11
+ }>;
12
+ export declare const MemoryArchivistProvider: React.FC<MemoryArchivistProviderProps>;
13
+ export declare type ApiArchivistProviderProps = ContextExProviderProps<{
17
14
  config?: XyoRemoteArchivistConfig;
18
- }
19
- export declare const RemoteArchivistProvider: React.FC<WithChildren<ApiArchivistProviderProps>>;
15
+ }>;
16
+ export declare const RemoteArchivistProvider: React.FC<ApiArchivistProviderProps>;
20
17
  //# sourceMappingURL=Provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/contexts/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAsB,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAsB,MAAM,wBAAwB,CAAA;AAM7F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,YAAY,CAAA;CACzB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAc5E,CAAA;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAQxF,CAAA;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,wBAAwB,CAAA;CAClC;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAIrF,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/contexts/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAsB,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAsB,MAAM,wBAAwB,CAAA;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAMlE,oBAAY,sBAAsB,GAAG,sBAAsB,CAAC;IAC1D,SAAS,CAAC,EAAE,YAAY,CAAA;CACzB,CAAC,CAAA;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAc9D,CAAA;AAED,oBAAY,4BAA4B,GAAG,sBAAsB,CAAC;IAChE,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B,CAAC,CAAA;AAEF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAI1E,CAAA;AAED,oBAAY,yBAAyB,GAAG,sBAAsB,CAAC;IAC7D,MAAM,CAAC,EAAE,wBAAwB,CAAA;CAClC,CAAC,CAAA;AAEF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAIvE,CAAA"}
@@ -12,10 +12,10 @@ export const ArchivistProvider = ({ archivist: archivistProp, required = false,
12
12
  setArchivist,
13
13
  }, children: archivist ? children : required ? null : children }));
14
14
  };
15
- export const MemoryArchivistProvider = ({ config = {}, children, ...props }) => {
15
+ export const MemoryArchivistProvider = ({ config = {}, ...props }) => {
16
16
  const { archivist } = useArchivist();
17
17
  config.parent = config.parent ?? archivist;
18
- return (_jsx(ArchivistProvider, { archivist: new XyoMemoryArchivist(config), ...props, children: children }));
18
+ return _jsx(ArchivistProvider, { archivist: new XyoMemoryArchivist(config), ...props });
19
19
  };
20
20
  export const RemoteArchivistProvider = ({ config = {}, ...props }) => {
21
21
  const { archivist } = useArchivist();
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../src/contexts/Provider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAA4B,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAoC,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAOpC,MAAM,CAAC,MAAM,iBAAiB,GAAmD,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5I,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA2B,aAAa,CAAC,CAAA;IAEnF,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IACxB,KAAK,EAAE;YACL,SAAS;YACT,QAAQ,EAAE,IAAI;YACd,YAAY;SACb,YAEA,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GACxB,CAC7B,CAAA;AACH,CAAC,CAAA;AAOD,MAAM,CAAC,MAAM,uBAAuB,GAAyD,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACnI,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAA;IACpC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1C,OAAO,CACL,KAAC,iBAAiB,IAAC,SAAS,EAAE,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAM,KAAK,YACpE,QAAQ,GACS,CACrB,CAAA;AACH,CAAC,CAAA;AAOD,MAAM,CAAC,MAAM,uBAAuB,GAAsD,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACtH,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAA;IACpC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1C,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAE,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAM,KAAK,GAAI,CAAA;AACpF,CAAC,CAAA"}
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../src/contexts/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAA4B,MAAM,kBAAkB,CAAA;AAC/E,OAAO,EAAoC,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE7F,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAMpC,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9H,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA2B,aAAa,CAAC,CAAA;IAEnF,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IACxB,KAAK,EAAE;YACL,SAAS;YACT,QAAQ,EAAE,IAAI;YACd,YAAY;SACb,YAEA,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GACxB,CAC7B,CAAA;AACH,CAAC,CAAA;AAMD,MAAM,CAAC,MAAM,uBAAuB,GAA2C,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC3G,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAA;IACpC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1C,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAE,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAM,KAAK,GAAI,CAAA;AACpF,CAAC,CAAA;AAMD,MAAM,CAAC,MAAM,uBAAuB,GAAwC,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACxG,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAA;IACpC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1C,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAE,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAM,KAAK,GAAI,CAAA;AACpF,CAAC,CAAA"}
@@ -1,2 +1,6 @@
1
+ import { XyoPayloadFindQuery } from '@xyo-network/archivist';
2
+ import { XyoPayload } from '@xyo-network/payload';
1
3
  export declare const useArchivist: (required?: boolean) => Omit<import("./State").ArchivistState & import("@xyo-network/react-shared").ContextExState, "provided">;
4
+ export declare const useArchivistGet: (ids?: string[], required?: boolean) => [(XyoPayload | null)[]?, Error?];
5
+ export declare const useArchivistFind: <TQuery extends XyoPayloadFindQuery>(query?: TQuery | undefined, required?: boolean) => [(XyoPayload | null)[]?, Error?];
2
6
  //# sourceMappingURL=use.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,iIAExB,CAAA"}
1
+ {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMjD,eAAO,MAAM,YAAY,iIAExB,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,MAAM,EAAE,yBAAqB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAoBjG,CAAA;AAED,eAAO,MAAM,gBAAgB,0FAA2E,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAoBtI,CAAA"}
@@ -1,6 +1,48 @@
1
+ import { useAsyncEffect } from '@xylabs/react-shared';
1
2
  import { useContextEx } from '@xyo-network/react-shared';
3
+ import { useState } from 'react';
2
4
  import { ArchivistContext } from './Context';
3
5
  export const useArchivist = (required = false) => {
4
6
  return useContextEx(ArchivistContext, 'Archivist', required);
5
7
  };
8
+ export const useArchivistGet = (ids, required = false) => {
9
+ const { archivist } = useArchivist(required);
10
+ const [payloads, setPayloads] = useState();
11
+ const [error, setError] = useState();
12
+ useAsyncEffect(
13
+ // eslint-disable-next-line react-hooks/exhaustive-deps
14
+ async (mounted) => {
15
+ try {
16
+ const result = archivist ? await archivist.get(ids ?? []) : undefined;
17
+ if (mounted()) {
18
+ setError(undefined);
19
+ setPayloads(result);
20
+ }
21
+ }
22
+ catch (ex) {
23
+ setError(ex);
24
+ }
25
+ }, [archivist, ids]);
26
+ return [payloads, error];
27
+ };
28
+ export const useArchivistFind = (query, required = false) => {
29
+ const { archivist } = useArchivist(required);
30
+ const [payloads, setPayloads] = useState();
31
+ const [error, setError] = useState();
32
+ useAsyncEffect(
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ async (mounted) => {
35
+ try {
36
+ const result = archivist && query ? await archivist.find(query) : undefined;
37
+ if (mounted()) {
38
+ setError(undefined);
39
+ setPayloads(result);
40
+ }
41
+ }
42
+ catch (ex) {
43
+ setError(ex);
44
+ }
45
+ }, [archivist, query]);
46
+ return [payloads, error];
47
+ };
6
48
  //# sourceMappingURL=use.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,EAAE;IAC/C,OAAO,YAAY,CAAC,gBAAgB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;AAC9D,CAAC,CAAA"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,EAAE;IAC/C,OAAO,YAAY,CAAC,gBAAgB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAc,EAAE,QAAQ,GAAG,KAAK,EAAoC,EAAE;IACpG,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAyB,CAAA;IACjE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAA;IAC3C,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI;YACF,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACrE,IAAI,OAAO,EAAE,EAAE;gBACb,QAAQ,CAAC,SAAS,CAAC,CAAA;gBACnB,WAAW,CAAC,MAAM,CAAC,CAAA;aACpB;SACF;QAAC,OAAO,EAAE,EAAE;YACX,QAAQ,CAAC,EAAW,CAAC,CAAA;SACtB;IACH,CAAC,EACD,CAAC,SAAS,EAAE,GAAG,CAAC,CACjB,CAAA;IACD,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAqC,KAAc,EAAE,QAAQ,GAAG,KAAK,EAAoC,EAAE;IACzI,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAyB,CAAA;IACjE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAA;IAC3C,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI;YACF,MAAM,MAAM,GAAG,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC3E,IAAI,OAAO,EAAE,EAAE;gBACb,QAAQ,CAAC,SAAS,CAAC,CAAA;gBACnB,WAAW,CAAC,MAAM,CAAC,CAAA;aACpB;SACF;QAAC,OAAO,EAAE,EAAE;YACX,QAAQ,CAAC,EAAW,CAAC,CAAA;SACtB;IACH,CAAC,EACD,CAAC,SAAS,EAAE,KAAK,CAAC,CACnB,CAAA;IACD,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC1B,CAAC,CAAA"}
package/package.json CHANGED
@@ -17,10 +17,10 @@
17
17
  "@xylabs/react-flexbox": "^2.14.10",
18
18
  "@xylabs/react-shared": "^2.14.10",
19
19
  "@xylabs/sdk-js": "2.6.2",
20
- "@xyo-network/api": "^2.22.26",
21
- "@xyo-network/archivist": "^2.22.26",
22
- "@xyo-network/payload": "^2.22.26",
23
- "@xyo-network/react-shared": "^2.26.56",
20
+ "@xyo-network/api": "^2.23.0",
21
+ "@xyo-network/archivist": "^2.23.0",
22
+ "@xyo-network/payload": "^2.23.0",
23
+ "@xyo-network/react-shared": "^2.26.59",
24
24
  "react": "^18.2.0",
25
25
  "react-dom": "^18.2.0"
26
26
  },
@@ -28,7 +28,7 @@
28
28
  "devDependencies": {
29
29
  "@storybook/react": "^6.5.9",
30
30
  "@xylabs/tsconfig-dom": "^2.5.11",
31
- "@xyo-network/react-storybook": "^2.26.56"
31
+ "@xyo-network/react-storybook": "^2.26.59"
32
32
  },
33
33
  "browser": "dist/esm/index.js",
34
34
  "docs": "dist/docs.json",
@@ -79,5 +79,5 @@
79
79
  },
80
80
  "sideEffects": false,
81
81
  "types": "dist/esm/index.d.ts",
82
- "version": "2.26.56"
82
+ "version": "2.26.59"
83
83
  }
@@ -1,17 +1,16 @@
1
- import { WithChildren } from '@xylabs/react-shared'
2
1
  import { XyoRemoteArchivist, XyoRemoteArchivistConfig } from '@xyo-network/api'
3
2
  import { XyoArchivist, XyoArchivistConfig, XyoMemoryArchivist } from '@xyo-network/archivist'
3
+ import { ContextExProviderProps } from '@xyo-network/react-shared'
4
4
  import { useState } from 'react'
5
5
 
6
6
  import { ArchivistContext } from './Context'
7
7
  import { useArchivist } from './use'
8
8
 
9
- export interface ArchivistProviderProps {
10
- required?: boolean
9
+ export type ArchivistProviderProps = ContextExProviderProps<{
11
10
  archivist?: XyoArchivist
12
- }
11
+ }>
13
12
 
14
- export const ArchivistProvider: React.FC<WithChildren<ArchivistProviderProps>> = ({ archivist: archivistProp, required = false, children }) => {
13
+ export const ArchivistProvider: React.FC<ArchivistProviderProps> = ({ archivist: archivistProp, required = false, children }) => {
15
14
  const [archivist, setArchivist] = useState<XyoArchivist | undefined>(archivistProp)
16
15
 
17
16
  return (
@@ -27,27 +26,21 @@ export const ArchivistProvider: React.FC<WithChildren<ArchivistProviderProps>> =
27
26
  )
28
27
  }
29
28
 
30
- export interface MemoryArchivistProviderProps {
31
- required?: boolean
29
+ export type MemoryArchivistProviderProps = ContextExProviderProps<{
32
30
  config?: XyoArchivistConfig
33
- }
31
+ }>
34
32
 
35
- export const MemoryArchivistProvider: React.FC<WithChildren<MemoryArchivistProviderProps>> = ({ config = {}, children, ...props }) => {
33
+ export const MemoryArchivistProvider: React.FC<MemoryArchivistProviderProps> = ({ config = {}, ...props }) => {
36
34
  const { archivist } = useArchivist()
37
35
  config.parent = config.parent ?? archivist
38
- return (
39
- <ArchivistProvider archivist={new XyoMemoryArchivist(config)} {...props}>
40
- {children}
41
- </ArchivistProvider>
42
- )
36
+ return <ArchivistProvider archivist={new XyoMemoryArchivist(config)} {...props} />
43
37
  }
44
38
 
45
- export interface ApiArchivistProviderProps {
46
- required?: boolean
39
+ export type ApiArchivistProviderProps = ContextExProviderProps<{
47
40
  config?: XyoRemoteArchivistConfig
48
- }
41
+ }>
49
42
 
50
- export const RemoteArchivistProvider: React.FC<WithChildren<ApiArchivistProviderProps>> = ({ config = {}, ...props }) => {
43
+ export const RemoteArchivistProvider: React.FC<ApiArchivistProviderProps> = ({ config = {}, ...props }) => {
51
44
  const { archivist } = useArchivist()
52
45
  config.parent = config.parent ?? archivist
53
46
  return <ArchivistProvider archivist={new XyoRemoteArchivist(config)} {...props} />
@@ -1,7 +1,55 @@
1
+ import { useAsyncEffect } from '@xylabs/react-shared'
2
+ import { XyoPayloadFindQuery } from '@xyo-network/archivist'
3
+ import { XyoPayload } from '@xyo-network/payload'
1
4
  import { useContextEx } from '@xyo-network/react-shared'
5
+ import { useState } from 'react'
2
6
 
3
7
  import { ArchivistContext } from './Context'
4
8
 
5
9
  export const useArchivist = (required = false) => {
6
10
  return useContextEx(ArchivistContext, 'Archivist', required)
7
11
  }
12
+
13
+ export const useArchivistGet = (ids?: string[], required = false): [(XyoPayload | null)[]?, Error?] => {
14
+ const { archivist } = useArchivist(required)
15
+ const [payloads, setPayloads] = useState<(XyoPayload | null)[]>()
16
+ const [error, setError] = useState<Error>()
17
+ useAsyncEffect(
18
+ // eslint-disable-next-line react-hooks/exhaustive-deps
19
+ async (mounted) => {
20
+ try {
21
+ const result = archivist ? await archivist.get(ids ?? []) : undefined
22
+ if (mounted()) {
23
+ setError(undefined)
24
+ setPayloads(result)
25
+ }
26
+ } catch (ex) {
27
+ setError(ex as Error)
28
+ }
29
+ },
30
+ [archivist, ids]
31
+ )
32
+ return [payloads, error]
33
+ }
34
+
35
+ export const useArchivistFind = <TQuery extends XyoPayloadFindQuery>(query?: TQuery, required = false): [(XyoPayload | null)[]?, Error?] => {
36
+ const { archivist } = useArchivist(required)
37
+ const [payloads, setPayloads] = useState<(XyoPayload | null)[]>()
38
+ const [error, setError] = useState<Error>()
39
+ useAsyncEffect(
40
+ // eslint-disable-next-line react-hooks/exhaustive-deps
41
+ async (mounted) => {
42
+ try {
43
+ const result = archivist && query ? await archivist.find(query) : undefined
44
+ if (mounted()) {
45
+ setError(undefined)
46
+ setPayloads(result)
47
+ }
48
+ } catch (ex) {
49
+ setError(ex as Error)
50
+ }
51
+ },
52
+ [archivist, query]
53
+ )
54
+ return [payloads, error]
55
+ }