@xyo-network/react-archivist 2.38.0-rc.1 → 2.38.0-rc.3

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.
Files changed (42) hide show
  1. package/dist/cjs/components/Details.d.ts +2 -2
  2. package/dist/cjs/components/Details.d.ts.map +1 -1
  3. package/dist/cjs/components/Details.js +2 -3
  4. package/dist/cjs/components/Details.js.map +1 -1
  5. package/dist/cjs/contexts/Provider/CookieArchivistProvider.d.ts.map +1 -1
  6. package/dist/cjs/contexts/Provider/CookieArchivistProvider.js +15 -4
  7. package/dist/cjs/contexts/Provider/CookieArchivistProvider.js.map +1 -1
  8. package/dist/cjs/contexts/Provider/MemoryArchivistProvider.d.ts.map +1 -1
  9. package/dist/cjs/contexts/Provider/MemoryArchivistProvider.js +18 -3
  10. package/dist/cjs/contexts/Provider/MemoryArchivistProvider.js.map +1 -1
  11. package/dist/cjs/contexts/Provider/RemoteArchivistProvider.d.ts +1 -1
  12. package/dist/cjs/contexts/Provider/RemoteArchivistProvider.d.ts.map +1 -1
  13. package/dist/cjs/contexts/Provider/RemoteArchivistProvider.js +18 -3
  14. package/dist/cjs/contexts/Provider/RemoteArchivistProvider.js.map +1 -1
  15. package/dist/cjs/contexts/Provider/StorageArchivistProvider.d.ts.map +1 -1
  16. package/dist/cjs/contexts/Provider/StorageArchivistProvider.js +18 -3
  17. package/dist/cjs/contexts/Provider/StorageArchivistProvider.js.map +1 -1
  18. package/dist/docs.json +622 -690
  19. package/dist/esm/components/Details.d.ts +2 -2
  20. package/dist/esm/components/Details.d.ts.map +1 -1
  21. package/dist/esm/components/Details.js +2 -2
  22. package/dist/esm/components/Details.js.map +1 -1
  23. package/dist/esm/contexts/Provider/CookieArchivistProvider.d.ts.map +1 -1
  24. package/dist/esm/contexts/Provider/CookieArchivistProvider.js +15 -4
  25. package/dist/esm/contexts/Provider/CookieArchivistProvider.js.map +1 -1
  26. package/dist/esm/contexts/Provider/MemoryArchivistProvider.d.ts.map +1 -1
  27. package/dist/esm/contexts/Provider/MemoryArchivistProvider.js +18 -3
  28. package/dist/esm/contexts/Provider/MemoryArchivistProvider.js.map +1 -1
  29. package/dist/esm/contexts/Provider/RemoteArchivistProvider.d.ts +1 -1
  30. package/dist/esm/contexts/Provider/RemoteArchivistProvider.d.ts.map +1 -1
  31. package/dist/esm/contexts/Provider/RemoteArchivistProvider.js +18 -3
  32. package/dist/esm/contexts/Provider/RemoteArchivistProvider.js.map +1 -1
  33. package/dist/esm/contexts/Provider/StorageArchivistProvider.d.ts.map +1 -1
  34. package/dist/esm/contexts/Provider/StorageArchivistProvider.js +18 -3
  35. package/dist/esm/contexts/Provider/StorageArchivistProvider.js.map +1 -1
  36. package/package.json +6 -6
  37. package/src/components/Details.stories.tsx +50 -14
  38. package/src/components/Details.tsx +9 -5
  39. package/src/contexts/Provider/CookieArchivistProvider.tsx +35 -23
  40. package/src/contexts/Provider/MemoryArchivistProvider.tsx +38 -22
  41. package/src/contexts/Provider/RemoteArchivistProvider.tsx +39 -23
  42. package/src/contexts/Provider/StorageArchivistProvider.tsx +38 -22
@@ -1,41 +1,57 @@
1
+ import { useAsyncEffect } from '@xylabs/react-shared'
1
2
  import { XyoRemoteArchivist, XyoRemoteArchivistConfig } from '@xyo-network/api'
2
3
  import { XyoArchivistWrapper } from '@xyo-network/archivist'
3
4
  import { XyoModuleResolver } from '@xyo-network/module'
4
5
  import { ContextExProviderProps } from '@xyo-network/react-shared'
5
6
  import merge from 'lodash/merge'
7
+ import { useMemo, useState } from 'react'
6
8
 
7
9
  import { useArchivist } from '../use'
8
10
  import { ArchivistProvider } from './Provider'
9
11
 
10
12
  export type RemoteArchivistProviderProps = ContextExProviderProps<{
11
- config: XyoRemoteArchivistConfig
13
+ config?: XyoRemoteArchivistConfig
12
14
  resolver?: XyoModuleResolver
13
15
  }>
14
16
 
15
17
  export const RemoteArchivistProvider: React.FC<RemoteArchivistProviderProps> = ({ config, resolver, ...props }) => {
16
18
  const { archivist } = useArchivist()
17
- const activeResolver = resolver ?? new XyoModuleResolver().add(archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined)
18
- return (
19
- <ArchivistProvider
20
- archivist={
21
- new XyoRemoteArchivist({
22
- config: merge(
23
- {},
24
- config,
25
- archivist
26
- ? {
27
- parents: {
28
- commit: [archivist.address],
29
- read: [archivist.address],
30
- write: [archivist.address],
31
- },
32
- }
33
- : undefined,
34
- ),
35
- resolver: activeResolver,
36
- })
19
+ const wrapper = useMemo(() => (archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined), [archivist])
20
+ const activeResolver: XyoModuleResolver | undefined = useMemo(
21
+ () => (resolver ?? wrapper ? new XyoModuleResolver() : undefined),
22
+ [resolver, wrapper],
23
+ )
24
+ if (archivist) {
25
+ activeResolver?.add(new XyoArchivistWrapper({ module: archivist }))
26
+ }
27
+
28
+ const [activeArchivist, setActiveArchivist] = useState<XyoRemoteArchivist>()
29
+
30
+ useAsyncEffect(
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ async (mounted) => {
33
+ const activeArchivist = await XyoRemoteArchivist.create({
34
+ config: merge(
35
+ {},
36
+ config,
37
+ archivist
38
+ ? {
39
+ parents: {
40
+ commit: [archivist.address],
41
+ read: [archivist.address],
42
+ write: [archivist.address],
43
+ },
44
+ }
45
+ : undefined,
46
+ ),
47
+ resolver: activeResolver,
48
+ })
49
+ if (mounted()) {
50
+ setActiveArchivist(activeArchivist)
37
51
  }
38
- {...props}
39
- />
52
+ },
53
+ [activeResolver, archivist, config],
40
54
  )
55
+
56
+ return <ArchivistProvider archivist={activeArchivist} {...props} />
41
57
  }
@@ -11,31 +11,47 @@ export type StorageArchivistProviderProps = ContextExProviderProps<{
11
11
  resolver?: XyoModuleResolver
12
12
  }>
13
13
 
14
+ import { useAsyncEffect } from '@xylabs/react-shared'
15
+ import { useMemo, useState } from 'react'
16
+
14
17
  export const StorageArchivistProvider: React.FC<StorageArchivistProviderProps> = ({ config, resolver, ...props }) => {
15
18
  const { archivist } = useArchivist()
16
- const activeResolver = resolver ?? new XyoModuleResolver().add(archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined)
19
+ const wrapper = useMemo(() => (archivist ? new XyoArchivistWrapper({ module: archivist }) : undefined), [archivist])
20
+ const activeResolver: XyoModuleResolver | undefined = useMemo(
21
+ () => (resolver ?? wrapper ? new XyoModuleResolver() : undefined),
22
+ [resolver, wrapper],
23
+ )
24
+ if (archivist) {
25
+ activeResolver?.add(new XyoArchivistWrapper({ module: archivist }))
26
+ }
17
27
 
18
- return (
19
- <ArchivistProvider
20
- archivist={
21
- new XyoStorageArchivist({
22
- config: merge(
23
- {},
24
- config,
25
- archivist
26
- ? {
27
- parents: {
28
- commit: [archivist.address],
29
- read: [archivist.address],
30
- write: [archivist.address],
31
- },
32
- }
33
- : undefined,
34
- ),
35
- resolver: activeResolver,
36
- })
28
+ const [activeArchivist, setActiveArchivist] = useState<XyoStorageArchivist>()
29
+
30
+ useAsyncEffect(
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ async (mounted) => {
33
+ const activeArchivist = await new XyoStorageArchivist({
34
+ config: merge(
35
+ {},
36
+ config,
37
+ archivist
38
+ ? {
39
+ parents: {
40
+ commit: [archivist.address],
41
+ read: [archivist.address],
42
+ write: [archivist.address],
43
+ },
44
+ }
45
+ : undefined,
46
+ ),
47
+ resolver: activeResolver,
48
+ }).start()
49
+ if (mounted()) {
50
+ setActiveArchivist(activeArchivist)
37
51
  }
38
- {...props}
39
- />
52
+ },
53
+ [activeResolver, archivist, config],
40
54
  )
55
+
56
+ return <ArchivistProvider archivist={activeArchivist} {...props} />
41
57
  }