@xyo-network/react-archivist 2.38.0-rc.5 → 2.38.0-rc.7

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,5 +1,10 @@
1
1
  import { XyoPayload, XyoPayloadFindFilter } from '@xyo-network/payload';
2
+ declare type RefreshCallback = () => void;
2
3
  export declare const useArchivist: (required?: boolean) => Omit<import("./State").ArchivistState & import("@xyo-network/react-shared").ContextExState, "provided">;
3
- export declare const useArchivistGet: (ids?: string[], required?: boolean) => [(XyoPayload | null)[]?, Error?];
4
- export declare const useArchivistFind: <TFilter extends XyoPayloadFindFilter>(filter: TFilter, required?: boolean) => [(XyoPayload | null)[]?, Error?];
4
+ export declare const useArchivistGet: (ids?: string[], required?: boolean) => [(XyoPayload | null)[]?, Error?, RefreshCallback?];
5
+ export declare const useArchivistFind: <TFilter extends XyoPayloadFindFilter>(filter: TFilter, required?: boolean) => [(XyoPayload | null)[]?, Error?, RefreshCallback?];
6
+ export declare const useArchivistInsert: (payloads: XyoPayload[], required?: boolean) => [(XyoPayload | null)[]?, Error?];
7
+ export declare const useArchivistAll: (required?: boolean) => [(XyoPayload | null)[]?, Error?];
8
+ export declare const useArchivistClear: (required?: boolean) => [(XyoPayload | null)[]?, Error?];
9
+ export {};
5
10
  //# sourceMappingURL=use.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAe,MAAM,sBAAsB,CAAA;AAMpF,eAAO,MAAM,YAAY,iIAExB,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,MAAM,EAAE,yBAAqB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAqBjG,CAAA;AAED,eAAO,MAAM,gBAAgB,iFAA8E,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAqBzI,CAAA"}
1
+ {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAe,MAAM,sBAAsB,CAAA;AAMpF,aAAK,eAAe,GAAG,MAAM,IAAI,CAAA;AAEjC,eAAO,MAAM,YAAY,iIAExB,CAAA;AAaD,eAAO,MAAM,eAAe,SAAU,MAAM,EAAE,yBAAqB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,eAAe,CAAC,CA0BnH,CAAA;AAED,eAAO,MAAM,gBAAgB,iFAG1B,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,eAAe,CAAC,CAyBnD,CAAA;AAED,eAAO,MAAM,kBAAkB,aAAc,UAAU,EAAE,yBAAqB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAkC5G,CAAA;AAED,eAAO,MAAM,eAAe,0BAAuB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAqBjF,CAAA;AAED,eAAO,MAAM,iBAAiB,0BAAuB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAqBnF,CAAA"}
@@ -1,12 +1,95 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared';
2
2
  import { XyoArchivistWrapper } from '@xyo-network/archivist';
3
- import { useContextEx } from '@xyo-network/react-shared';
3
+ import { useContextEx, useDataState } from '@xyo-network/react-shared';
4
4
  import { useState } from 'react';
5
5
  import { ArchivistContext } from './Context';
6
6
  export const useArchivist = (required = false) => {
7
7
  return useContextEx(ArchivistContext, 'Archivist', required);
8
8
  };
9
+ const useSharedUseArchivistState = (required) => {
10
+ const [payloads, setPayloads] = useState();
11
+ const { archivist } = useArchivist(required);
12
+ const [error, setError] = useState();
13
+ const [refresh, setRefresh] = useState(1);
14
+ const [inFlight, setInFlight] = useState(false);
15
+ const refreshPayloads = () => setRefresh((previous) => previous + 1);
16
+ return { archivist, error, inFlight, payloads, refresh, refreshPayloads, setError, setInFlight, setPayloads };
17
+ };
9
18
  export const useArchivistGet = (ids, required = false) => {
19
+ const [savedIds] = useDataState(ids);
20
+ const { archivist, error, inFlight, payloads, refresh, setError, setInFlight, setPayloads, refreshPayloads } = useSharedUseArchivistState(required);
21
+ useAsyncEffect(
22
+ // eslint-disable-next-line react-hooks/exhaustive-deps
23
+ async (mounted) => {
24
+ try {
25
+ if (archivist && !inFlight && savedIds) {
26
+ const wrapper = new XyoArchivistWrapper(archivist);
27
+ const result = (await wrapper?.get(savedIds ?? [])) ?? [];
28
+ setInFlight(true);
29
+ if (mounted()) {
30
+ setError(undefined);
31
+ setPayloads(result);
32
+ setInFlight(false);
33
+ }
34
+ }
35
+ }
36
+ catch (ex) {
37
+ setError(ex);
38
+ setInFlight(false);
39
+ }
40
+ }, [archivist, savedIds, refresh, inFlight, setInFlight, setError, setPayloads]);
41
+ return [payloads, error, refreshPayloads];
42
+ };
43
+ export const useArchivistFind = (filter, required = false) => {
44
+ const [savedFilter] = useDataState(filter);
45
+ const { archivist, error, inFlight, payloads, refresh, setError, setInFlight, setPayloads, refreshPayloads } = useSharedUseArchivistState(required);
46
+ useAsyncEffect(
47
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48
+ async (mounted) => {
49
+ try {
50
+ if (archivist && !inFlight && savedFilter) {
51
+ const wrapper = new XyoArchivistWrapper(archivist);
52
+ const result = await wrapper?.find(savedFilter);
53
+ setInFlight(true);
54
+ if (mounted()) {
55
+ setError(undefined);
56
+ setPayloads(result);
57
+ setInFlight(false);
58
+ }
59
+ }
60
+ }
61
+ catch (ex) {
62
+ setError(ex);
63
+ setInFlight(false);
64
+ }
65
+ }, [archivist, inFlight, refresh, savedFilter, setError, setInFlight, setPayloads]);
66
+ return [payloads, error, refreshPayloads];
67
+ };
68
+ export const useArchivistInsert = (payloads, required = false) => {
69
+ const [savedPayloads] = useDataState(payloads);
70
+ const { archivist, error, inFlight, payloads: resultPayloads, refresh, setError, setInFlight, setPayloads: setResultPayloads, } = useSharedUseArchivistState(required);
71
+ useAsyncEffect(
72
+ // eslint-disable-next-line react-hooks/exhaustive-deps
73
+ async (mounted) => {
74
+ try {
75
+ if (archivist && !inFlight && savedPayloads) {
76
+ const wrapper = new XyoArchivistWrapper(archivist);
77
+ const result = await wrapper.insert(savedPayloads);
78
+ setInFlight(true);
79
+ if (mounted()) {
80
+ setError(undefined);
81
+ setResultPayloads(result);
82
+ }
83
+ }
84
+ }
85
+ catch (ex) {
86
+ setError(ex);
87
+ setInFlight(true);
88
+ }
89
+ }, [archivist, inFlight, refresh, savedPayloads, setError, setInFlight, setResultPayloads]);
90
+ return [resultPayloads, error];
91
+ };
92
+ export const useArchivistAll = (required = false) => {
10
93
  const { archivist } = useArchivist(required);
11
94
  const [payloads, setPayloads] = useState();
12
95
  const [error, setError] = useState();
@@ -15,7 +98,7 @@ export const useArchivistGet = (ids, required = false) => {
15
98
  async (mounted) => {
16
99
  try {
17
100
  const wrapper = archivist ? new XyoArchivistWrapper(archivist) : undefined;
18
- const result = (await wrapper?.get(ids ?? [])) ?? [];
101
+ const result = await wrapper?.all();
19
102
  if (mounted()) {
20
103
  setError(undefined);
21
104
  setPayloads(result);
@@ -24,10 +107,10 @@ export const useArchivistGet = (ids, required = false) => {
24
107
  catch (ex) {
25
108
  setError(ex);
26
109
  }
27
- }, [archivist, ids]);
110
+ }, [archivist]);
28
111
  return [payloads, error];
29
112
  };
30
- export const useArchivistFind = (filter, required = false) => {
113
+ export const useArchivistClear = (required = false) => {
31
114
  const { archivist } = useArchivist(required);
32
115
  const [payloads, setPayloads] = useState();
33
116
  const [error, setError] = useState();
@@ -36,16 +119,16 @@ export const useArchivistFind = (filter, required = false) => {
36
119
  async (mounted) => {
37
120
  try {
38
121
  const wrapper = archivist ? new XyoArchivistWrapper(archivist) : undefined;
39
- const result = await wrapper?.find(filter);
122
+ await wrapper?.clear();
40
123
  if (mounted()) {
41
124
  setError(undefined);
42
- setPayloads(result);
125
+ setPayloads([]);
43
126
  }
44
127
  }
45
128
  catch (ex) {
46
129
  setError(ex);
47
130
  }
48
- }, [archivist, filter]);
131
+ }, [archivist]);
49
132
  return [payloads, error];
50
133
  };
51
134
  //# sourceMappingURL=use.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,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,EAAe,CAAA;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAA;IAC3C,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI;YACF,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC1E,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;YACpD,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,CAAuC,MAAe,EAAE,QAAQ,GAAG,KAAK,EAAoC,EAAE;IAC5I,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAe,CAAA;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAA;IAC3C,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI;YACF,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC1E,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAC1C,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,MAAM,CAAC,CACpB,CAAA;IACD,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC1B,CAAC,CAAA"}
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/contexts/use.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -13,8 +13,8 @@
13
13
  "@xylabs/react-button": "^2.15.1",
14
14
  "@xylabs/react-flexbox": "^2.15.1",
15
15
  "@xylabs/react-shared": "^2.15.1",
16
- "@xyo-network/module": "^2.38.0-rc.9",
17
- "@xyo-network/react-shared": "^2.38.0-rc.5",
16
+ "@xyo-network/module": "^2.38.0-rc.12",
17
+ "@xyo-network/react-shared": "^2.38.0-rc.7",
18
18
  "lodash": "^4.17.21",
19
19
  "tslib": "^2.4.0"
20
20
  },
@@ -29,9 +29,10 @@
29
29
  "description": "Common React library for all XYO projects that use React",
30
30
  "devDependencies": {
31
31
  "@types/lodash": "^4.14.186",
32
- "@xyo-network/api": "^2.38.0-rc.9",
33
- "@xyo-network/archivist": "^2.38.0-rc.9",
34
- "@xyo-network/payload": "^2.38.0-rc.9"
32
+ "@xyo-network/api": "^2.38.0-rc.12",
33
+ "@xyo-network/archivist": "^2.38.0-rc.12",
34
+ "@xyo-network/payload": "^2.38.0-rc.12",
35
+ "@xyo-network/react-archivist-api": "^2.38.0-rc.7"
35
36
  },
36
37
  "browser": "dist/esm/index.js",
37
38
  "docs": "dist/docs.json",
@@ -75,6 +76,6 @@
75
76
  },
76
77
  "sideEffects": false,
77
78
  "types": "dist/esm/index.d.ts",
78
- "version": "2.38.0-rc.5",
79
+ "version": "2.38.0-rc.7",
79
80
  "stableVersion": "2.37.29"
80
81
  }
@@ -0,0 +1,44 @@
1
+ import { ComponentMeta, ComponentStory } from '@storybook/react'
2
+
3
+ import { useArchivistFind, useArchivistGet } from '../use'
4
+ import { ArchivistPayloads } from './ArchivistPayloads.stories'
5
+ import { WithArchivistProviders } from './WithArchivistProviders.stories'
6
+
7
+ const StorybookEntry = {
8
+ argTypes: {},
9
+ component: ArchivistPayloads,
10
+ decorators: [WithArchivistProviders],
11
+ parameters: {
12
+ docs: {
13
+ page: null,
14
+ },
15
+ },
16
+ title: 'archivist/Hooks',
17
+ } as ComponentMeta<typeof ArchivistPayloads>
18
+
19
+ const ArchivistGetPayloadsTemplate: ComponentStory<typeof ArchivistPayloads> = (args) => {
20
+ const [payloads, error, refresh] = useArchivistGet([
21
+ '3da33603417622f4cdad2becbca8c7889623d9045d0e8923e1702a99d2f3e47c',
22
+ '3da33603417622f4cdad2becbca8c7889623d9045d0e8923e1702a99d2f3e47d',
23
+ ])
24
+ return <ArchivistPayloads payloads={payloads} error={error} refresh={refresh} {...args}></ArchivistPayloads>
25
+ }
26
+
27
+ const ArchivistFindPayloadsTemplate: ComponentStory<typeof ArchivistPayloads> = (args) => {
28
+ const [payloads, error, refresh] = useArchivistFind({
29
+ limit: 5,
30
+ schema: 'network.xyo.payload',
31
+ })
32
+ return <ArchivistPayloads payloads={payloads} error={error} refresh={refresh} {...args}></ArchivistPayloads>
33
+ }
34
+
35
+ const Get = ArchivistGetPayloadsTemplate.bind({})
36
+ Get.args = {}
37
+
38
+ const Find = ArchivistFindPayloadsTemplate.bind({})
39
+ Find.args = {}
40
+
41
+ export { Find, Get }
42
+
43
+ // eslint-disable-next-line import/no-default-export
44
+ export default StorybookEntry
@@ -0,0 +1,31 @@
1
+ import { Button, Card, CardContent, CardHeader } from '@mui/material'
2
+ import { FlexCol } from '@xylabs/react-flexbox'
3
+ import { XyoPayload } from '@xyo-network/payload'
4
+
5
+ export interface ArchivistPayloadsProps {
6
+ refresh?: () => void
7
+ payloads?: (XyoPayload | null)[]
8
+ error?: Error
9
+ }
10
+
11
+ export const ArchivistPayloads: React.FC<ArchivistPayloadsProps> = ({ refresh, payloads, error }) => {
12
+ return (
13
+ <FlexCol rowGap={2}>
14
+ <Button variant="contained" onClick={() => refresh?.()}>
15
+ Refresh
16
+ </Button>
17
+ <Card>
18
+ <CardHeader title="Payloads" />
19
+ <CardContent>
20
+ <pre style={{ whiteSpace: 'pre-wrap', wordBreak: 'break-all' }}>{payloads ? JSON.stringify(payloads, null, 2) : null}</pre>
21
+ </CardContent>
22
+ </Card>
23
+ <Card>
24
+ <CardHeader title="Errors" />
25
+ <CardContent>
26
+ <pre style={{ whiteSpace: 'pre-wrap', wordBreak: 'break-all' }}>{error ? JSON.stringify(error, null, 2) : null}</pre>
27
+ </CardContent>
28
+ </Card>
29
+ </FlexCol>
30
+ )
31
+ }
@@ -0,0 +1,28 @@
1
+ import { DecoratorFn } from '@storybook/react'
2
+ import { WithChildren } from '@xylabs/react-shared'
3
+ import { ArchivistApiProvider, useArchivistApi } from '@xyo-network/react-archivist-api'
4
+
5
+ import { RemoteArchivistProvider } from '../Provider'
6
+
7
+ const WithArchivist: React.FC<WithChildren> = ({ children }) => {
8
+ return <ArchivistApiProvider apiDomain="https://beta.api.archivist.xyo.network">{children}</ArchivistApiProvider>
9
+ }
10
+
11
+ const WithRemoteArchivist: React.FC<WithChildren> = ({ children }) => {
12
+ const { api } = useArchivistApi()
13
+ return (
14
+ <RemoteArchivistProvider config={{ api: api, archive: 'temp', schema: 'network.xyo.archivist.remote.config' }}>
15
+ {children}
16
+ </RemoteArchivistProvider>
17
+ )
18
+ }
19
+
20
+ export const WithArchivistProviders: DecoratorFn = (Story, args) => {
21
+ return (
22
+ <WithArchivist>
23
+ <WithRemoteArchivist>
24
+ <Story {...args} />
25
+ </WithRemoteArchivist>
26
+ </WithArchivist>
27
+ )
28
+ }
@@ -1,16 +1,123 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared'
2
2
  import { XyoArchivistWrapper } from '@xyo-network/archivist'
3
3
  import { XyoPayload, XyoPayloadFindFilter, XyoPayloads } from '@xyo-network/payload'
4
- import { useContextEx } from '@xyo-network/react-shared'
4
+ import { useContextEx, useDataState } from '@xyo-network/react-shared'
5
5
  import { useState } from 'react'
6
6
 
7
7
  import { ArchivistContext } from './Context'
8
8
 
9
+ type RefreshCallback = () => void
10
+
9
11
  export const useArchivist = (required = false) => {
10
12
  return useContextEx(ArchivistContext, 'Archivist', required)
11
13
  }
12
14
 
13
- export const useArchivistGet = (ids?: string[], required = false): [(XyoPayload | null)[]?, Error?] => {
15
+ const useSharedUseArchivistState = (required: boolean) => {
16
+ const [payloads, setPayloads] = useState<XyoPayloads>()
17
+ const { archivist } = useArchivist(required)
18
+ const [error, setError] = useState<Error>()
19
+ const [refresh, setRefresh] = useState(1)
20
+ const [inFlight, setInFlight] = useState(false)
21
+ const refreshPayloads = () => setRefresh((previous) => previous + 1)
22
+
23
+ return { archivist, error, inFlight, payloads, refresh, refreshPayloads, setError, setInFlight, setPayloads }
24
+ }
25
+
26
+ export const useArchivistGet = (ids?: string[], required = false): [(XyoPayload | null)[]?, Error?, RefreshCallback?] => {
27
+ const [savedIds] = useDataState(ids)
28
+ const { archivist, error, inFlight, payloads, refresh, setError, setInFlight, setPayloads, refreshPayloads } = useSharedUseArchivistState(required)
29
+
30
+ useAsyncEffect(
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ async (mounted) => {
33
+ try {
34
+ if (archivist && !inFlight && savedIds) {
35
+ const wrapper = new XyoArchivistWrapper(archivist)
36
+ const result = (await wrapper?.get(savedIds ?? [])) ?? []
37
+ setInFlight(true)
38
+ if (mounted()) {
39
+ setError(undefined)
40
+ setPayloads(result)
41
+ setInFlight(false)
42
+ }
43
+ }
44
+ } catch (ex) {
45
+ setError(ex as Error)
46
+ setInFlight(false)
47
+ }
48
+ },
49
+ [archivist, savedIds, refresh, inFlight, setInFlight, setError, setPayloads],
50
+ )
51
+ return [payloads, error, refreshPayloads]
52
+ }
53
+
54
+ export const useArchivistFind = <TFilter extends XyoPayloadFindFilter>(
55
+ filter: TFilter,
56
+ required = false,
57
+ ): [(XyoPayload | null)[]?, Error?, RefreshCallback?] => {
58
+ const [savedFilter] = useDataState(filter)
59
+ const { archivist, error, inFlight, payloads, refresh, setError, setInFlight, setPayloads, refreshPayloads } = useSharedUseArchivistState(required)
60
+ useAsyncEffect(
61
+ // eslint-disable-next-line react-hooks/exhaustive-deps
62
+ async (mounted) => {
63
+ try {
64
+ if (archivist && !inFlight && savedFilter) {
65
+ const wrapper = new XyoArchivistWrapper(archivist)
66
+ const result = await wrapper?.find(savedFilter)
67
+ setInFlight(true)
68
+ if (mounted()) {
69
+ setError(undefined)
70
+ setPayloads(result)
71
+ setInFlight(false)
72
+ }
73
+ }
74
+ } catch (ex) {
75
+ setError(ex as Error)
76
+ setInFlight(false)
77
+ }
78
+ },
79
+ [archivist, inFlight, refresh, savedFilter, setError, setInFlight, setPayloads],
80
+ )
81
+ return [payloads, error, refreshPayloads]
82
+ }
83
+
84
+ export const useArchivistInsert = (payloads: XyoPayload[], required = false): [(XyoPayload | null)[]?, Error?] => {
85
+ const [savedPayloads] = useDataState(payloads)
86
+ const {
87
+ archivist,
88
+ error,
89
+ inFlight,
90
+ payloads: resultPayloads,
91
+ refresh,
92
+ setError,
93
+ setInFlight,
94
+ setPayloads: setResultPayloads,
95
+ } = useSharedUseArchivistState(required)
96
+
97
+ useAsyncEffect(
98
+ // eslint-disable-next-line react-hooks/exhaustive-deps
99
+ async (mounted) => {
100
+ try {
101
+ if (archivist && !inFlight && savedPayloads) {
102
+ const wrapper = new XyoArchivistWrapper(archivist)
103
+ const result = await wrapper.insert(savedPayloads)
104
+ setInFlight(true)
105
+ if (mounted()) {
106
+ setError(undefined)
107
+ setResultPayloads(result)
108
+ }
109
+ }
110
+ } catch (ex) {
111
+ setError(ex as Error)
112
+ setInFlight(true)
113
+ }
114
+ },
115
+ [archivist, inFlight, refresh, savedPayloads, setError, setInFlight, setResultPayloads],
116
+ )
117
+ return [resultPayloads, error]
118
+ }
119
+
120
+ export const useArchivistAll = (required = false): [(XyoPayload | null)[]?, Error?] => {
14
121
  const { archivist } = useArchivist(required)
15
122
  const [payloads, setPayloads] = useState<XyoPayloads>()
16
123
  const [error, setError] = useState<Error>()
@@ -19,7 +126,7 @@ export const useArchivistGet = (ids?: string[], required = false): [(XyoPayload
19
126
  async (mounted) => {
20
127
  try {
21
128
  const wrapper = archivist ? new XyoArchivistWrapper(archivist) : undefined
22
- const result = (await wrapper?.get(ids ?? [])) ?? []
129
+ const result = await wrapper?.all()
23
130
  if (mounted()) {
24
131
  setError(undefined)
25
132
  setPayloads(result)
@@ -28,12 +135,12 @@ export const useArchivistGet = (ids?: string[], required = false): [(XyoPayload
28
135
  setError(ex as Error)
29
136
  }
30
137
  },
31
- [archivist, ids],
138
+ [archivist],
32
139
  )
33
140
  return [payloads, error]
34
141
  }
35
142
 
36
- export const useArchivistFind = <TFilter extends XyoPayloadFindFilter>(filter: TFilter, required = false): [(XyoPayload | null)[]?, Error?] => {
143
+ export const useArchivistClear = (required = false): [(XyoPayload | null)[]?, Error?] => {
37
144
  const { archivist } = useArchivist(required)
38
145
  const [payloads, setPayloads] = useState<XyoPayloads>()
39
146
  const [error, setError] = useState<Error>()
@@ -42,16 +149,16 @@ export const useArchivistFind = <TFilter extends XyoPayloadFindFilter>(filter: T
42
149
  async (mounted) => {
43
150
  try {
44
151
  const wrapper = archivist ? new XyoArchivistWrapper(archivist) : undefined
45
- const result = await wrapper?.find(filter)
152
+ await wrapper?.clear()
46
153
  if (mounted()) {
47
154
  setError(undefined)
48
- setPayloads(result)
155
+ setPayloads([])
49
156
  }
50
157
  } catch (ex) {
51
158
  setError(ex as Error)
52
159
  }
53
160
  },
54
- [archivist, filter],
161
+ [archivist],
55
162
  )
56
163
  return [payloads, error]
57
164
  }