@xyo-network/react-payload 2.26.19 → 2.26.22

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 (63) hide show
  1. package/dist/cjs/contexts/Payload/Context.d.ts +3 -0
  2. package/dist/cjs/contexts/Payload/Context.js +6 -0
  3. package/dist/cjs/contexts/Payload/Context.js.map +1 -0
  4. package/dist/cjs/contexts/Payload/Provider.d.ts +7 -0
  5. package/dist/cjs/contexts/Payload/Provider.js +26 -0
  6. package/dist/cjs/contexts/Payload/Provider.js.map +1 -0
  7. package/dist/cjs/contexts/Payload/State.d.ts +7 -0
  8. package/dist/cjs/contexts/Payload/State.js +3 -0
  9. package/dist/cjs/contexts/Payload/State.js.map +1 -0
  10. package/dist/cjs/contexts/Payload/index.d.ts +4 -0
  11. package/dist/cjs/contexts/Payload/index.js +8 -0
  12. package/dist/cjs/contexts/Payload/index.js.map +1 -0
  13. package/dist/cjs/contexts/Payload/use.d.ts +1 -0
  14. package/dist/cjs/contexts/Payload/use.js +10 -0
  15. package/dist/cjs/contexts/Payload/use.js.map +1 -0
  16. package/dist/cjs/contexts/index.d.ts +1 -0
  17. package/dist/cjs/contexts/index.js +5 -0
  18. package/dist/cjs/contexts/index.js.map +1 -0
  19. package/dist/cjs/hooks/index.d.ts +1 -1
  20. package/dist/cjs/hooks/index.js +1 -1
  21. package/dist/cjs/hooks/index.js.map +1 -1
  22. package/dist/cjs/hooks/useHuriHash.js +2 -2
  23. package/dist/cjs/hooks/useHuriHash.js.map +1 -1
  24. package/dist/cjs/hooks/useLoadPayload.d.ts +2 -0
  25. package/dist/cjs/hooks/useLoadPayload.js +58 -0
  26. package/dist/cjs/hooks/useLoadPayload.js.map +1 -0
  27. package/dist/esm/contexts/Payload/Context.d.ts +3 -0
  28. package/dist/esm/contexts/Payload/Context.js +3 -0
  29. package/dist/esm/contexts/Payload/Context.js.map +1 -0
  30. package/dist/esm/contexts/Payload/Provider.d.ts +7 -0
  31. package/dist/esm/contexts/Payload/Provider.js +21 -0
  32. package/dist/esm/contexts/Payload/Provider.js.map +1 -0
  33. package/dist/esm/contexts/Payload/State.d.ts +7 -0
  34. package/dist/esm/contexts/Payload/State.js +2 -0
  35. package/dist/esm/contexts/Payload/State.js.map +1 -0
  36. package/dist/esm/contexts/Payload/index.d.ts +4 -0
  37. package/dist/esm/contexts/Payload/index.js +5 -0
  38. package/dist/esm/contexts/Payload/index.js.map +1 -0
  39. package/dist/esm/contexts/Payload/use.d.ts +1 -0
  40. package/dist/esm/contexts/Payload/use.js +6 -0
  41. package/dist/esm/contexts/Payload/use.js.map +1 -0
  42. package/dist/esm/contexts/index.d.ts +1 -0
  43. package/dist/esm/contexts/index.js +2 -0
  44. package/dist/esm/contexts/index.js.map +1 -0
  45. package/dist/esm/hooks/index.d.ts +1 -1
  46. package/dist/esm/hooks/index.js +1 -1
  47. package/dist/esm/hooks/index.js.map +1 -1
  48. package/dist/esm/hooks/useHuriHash.js +2 -2
  49. package/dist/esm/hooks/useHuriHash.js.map +1 -1
  50. package/dist/esm/hooks/useLoadPayload.d.ts +2 -0
  51. package/dist/esm/hooks/useLoadPayload.js +53 -0
  52. package/dist/esm/hooks/useLoadPayload.js.map +1 -0
  53. package/package.json +23 -22
  54. package/src/contexts/Payload/Context.ts +5 -0
  55. package/src/contexts/Payload/Provider.tsx +31 -0
  56. package/src/contexts/Payload/State.ts +8 -0
  57. package/src/contexts/Payload/index.ts +4 -0
  58. package/src/contexts/Payload/use.ts +7 -0
  59. package/src/contexts/index.ts +1 -0
  60. package/src/hooks/index.ts +1 -1
  61. package/src/hooks/useHuriHash.tsx +3 -3
  62. package/src/hooks/{usePayload.stories.tsx → useLoadPayload.stories.tsx} +2 -2
  63. package/src/hooks/{usePayload.tsx → useLoadPayload.tsx} +2 -1
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { PayloadContextState } from './State';
3
+ export declare const PayloadContext: import("react").Context<PayloadContextState & import("@xyo-network/react-shared").ContextExState>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PayloadContext = void 0;
4
+ const react_shared_1 = require("@xyo-network/react-shared");
5
+ exports.PayloadContext = (0, react_shared_1.createContextEx)();
6
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/Context.ts"],"names":[],"mappings":";;;AAAA,4DAA2D;AAI9C,QAAA,cAAc,GAAG,IAAA,8BAAe,GAAuB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { WithChildren } from '@xylabs/react-shared';
3
+ export interface PayloadProviderProps {
4
+ required?: boolean;
5
+ hash?: string;
6
+ }
7
+ export declare const PayloadProvider: React.FC<WithChildren<PayloadProviderProps>>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PayloadProvider = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_shared_1 = require("@xylabs/react-shared");
7
+ const react_archivist_1 = require("@xyo-network/react-archivist");
8
+ const react_1 = require("react");
9
+ const Context_1 = require("./Context");
10
+ const PayloadProvider = ({ required = false, hash, children }) => {
11
+ const { archivist } = (0, react_archivist_1.useArchivist)();
12
+ const [payload, setPayload] = (0, react_1.useState)();
13
+ (0, react_shared_1.useAsyncEffect)(
14
+ // eslint-disable-next-line react-hooks/exhaustive-deps
15
+ (mounted) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
16
+ if (payload === undefined && hash) {
17
+ const loadedPayload = yield (archivist === null || archivist === void 0 ? void 0 : archivist.get(hash));
18
+ if (mounted()) {
19
+ setPayload(loadedPayload !== null && loadedPayload !== void 0 ? loadedPayload : null);
20
+ }
21
+ }
22
+ }), [archivist, payload, hash]);
23
+ return (0, jsx_runtime_1.jsxs)(Context_1.PayloadContext.Provider, Object.assign({ value: { payload, provided: true, setPayload } }, { children: [" ", payload ? children : required ? null : children] }));
24
+ };
25
+ exports.PayloadProvider = PayloadProvider;
26
+ //# sourceMappingURL=Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/Provider.tsx"],"names":[],"mappings":";;;;;AAAA,uDAAmE;AAEnE,kEAA2D;AAC3D,iCAAgC;AAEhC,uCAA0C;AAOnC,MAAM,eAAe,GAAiD,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpH,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,8BAAY,GAAE,CAAA;IACpC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,GAAqB,CAAA;IAE3D,IAAA,6BAAc;IACZ,uDAAuD;IACvD,CAAO,OAAO,EAAE,EAAE;QAChB,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,EAAE;YACjC,MAAM,aAAa,GAAG,MAAM,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,IAAI,CAAC,CAAA,CAAA;YAChD,IAAI,OAAO,EAAE,EAAE;gBACb,UAAU,CAAC,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,IAAI,CAAC,CAAA;aAClC;SACF;IACH,CAAC,CAAA,EACD,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAC3B,CAAA;IAED,OAAO,wBAAC,wBAAc,CAAC,QAAQ,kBAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,sBAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAA2B,CAAA;AAC9J,CAAC,CAAA;AAlBY,QAAA,eAAe,mBAkB3B"}
@@ -0,0 +1,7 @@
1
+ import { XyoPayload } from '@xyo-network/payload';
2
+ import { ContextExState } from '@xyo-network/react-shared';
3
+ import { Dispatch } from 'react';
4
+ export interface PayloadContextState extends ContextExState {
5
+ payload?: XyoPayload | null;
6
+ setPayload?: Dispatch<XyoPayload>;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=State.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/State.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from './Context';
2
+ export * from './Provider';
3
+ export * from './State';
4
+ export * from './use';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./Context"), exports);
5
+ tslib_1.__exportStar(require("./Provider"), exports);
6
+ tslib_1.__exportStar(require("./State"), exports);
7
+ tslib_1.__exportStar(require("./use"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,qDAA0B;AAC1B,kDAAuB;AACvB,gDAAqB"}
@@ -0,0 +1 @@
1
+ export declare const useArchives: (required?: boolean) => Omit<import("./State").PayloadContextState & import("@xyo-network/react-shared").ContextExState, "provided">;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useArchives = void 0;
4
+ const react_shared_1 = require("@xyo-network/react-shared");
5
+ const Context_1 = require("./Context");
6
+ const useArchives = (required = false) => {
7
+ return (0, react_shared_1.useContextEx)(Context_1.PayloadContext, 'Payload', required);
8
+ };
9
+ exports.useArchives = useArchives;
10
+ //# sourceMappingURL=use.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/use.ts"],"names":[],"mappings":";;;AAAA,4DAAwD;AAExD,uCAA0C;AAEnC,MAAM,WAAW,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,EAAE;IAC9C,OAAO,IAAA,2BAAY,EAAC,wBAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AAC1D,CAAC,CAAA;AAFY,QAAA,WAAW,eAEvB"}
@@ -0,0 +1 @@
1
+ export * from './Payload';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./Payload"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB"}
@@ -2,5 +2,5 @@ export * from './lib';
2
2
  export * from './ResolvePayloadArgs';
3
3
  export * from './useGetSchema';
4
4
  export * from './useHuriHash';
5
- export * from './usePayload';
5
+ export * from './useLoadPayload';
6
6
  export * from './useResolveHuri';
@@ -5,6 +5,6 @@ tslib_1.__exportStar(require("./lib"), exports);
5
5
  tslib_1.__exportStar(require("./ResolvePayloadArgs"), exports);
6
6
  tslib_1.__exportStar(require("./useGetSchema"), exports);
7
7
  tslib_1.__exportStar(require("./useHuriHash"), exports);
8
- tslib_1.__exportStar(require("./usePayload"), exports);
8
+ tslib_1.__exportStar(require("./useLoadPayload"), exports);
9
9
  tslib_1.__exportStar(require("./useResolveHuri"), exports);
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;AAAA,gDAAqB;AACrB,+DAAoC;AACpC,yDAA8B;AAC9B,wDAA6B;AAC7B,uDAA4B;AAC5B,2DAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;AAAA,gDAAqB;AACrB,+DAAoC;AACpC,yDAA8B;AAC9B,wDAA6B;AAC7B,2DAAgC;AAChC,2DAAgC"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useHuriHash = void 0;
4
4
  const payload_1 = require("@xyo-network/payload");
5
5
  const react_1 = require("react");
6
- const usePayload_1 = require("./usePayload");
6
+ const useLoadPayload_1 = require("./useLoadPayload");
7
7
  const useResolveHuri_1 = require("./useResolveHuri");
8
8
  /**
9
9
  * Resolve a hash or a huri regardless of network
@@ -21,7 +21,7 @@ const useHuriHash = (huriOrHash, huriUri, options) => {
21
21
  }, []);
22
22
  const providedHash = hash(huriOrHash);
23
23
  // Optimistically try to grab the has from the current network and archive
24
- const [payload, notFound, apiError] = (0, usePayload_1.usePayload)(providedHash);
24
+ const [payload, notFound, apiError] = (0, useLoadPayload_1.useLoadPayload)(providedHash);
25
25
  // if a huriUri was passed, we can safely override the notFound from the hash only query
26
26
  const notFoundOverride = huriUri ? true : notFound;
27
27
  // If payload isn't found, fallback to the huriUri
@@ -1 +1 @@
1
- {"version":3,"file":"useHuriHash.js","sourceRoot":"","sources":["../../../src/hooks/useHuriHash.tsx"],"names":[],"mappings":";;;AAAA,kDAA2C;AAC3C,iCAA8C;AAI9C,6CAAyC;AACzC,qDAAiD;AAEjD;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,UAA0B,EAAE,OAAgB,EAAE,OAA8B,EAAiB,EAAE;IAClH,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,CAAC,UAA0B,EAAE,EAAE;QACtD,IAAI,UAAU,EAAE;YACd,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,OAAO,UAAU,CAAA;aAClB;YACD,IAAI,UAAU,YAAY,cAAI,EAAE;gBAC9B,OAAO,UAAU,CAAC,IAAI,CAAA;aACvB;SACF;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;IAErC,0EAA0E;IAC1E,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAA,uBAAU,EAAC,YAAY,CAAC,CAAA;IAE9D,wFAAwF;IACxF,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAElD,kDAAkD;IAClD,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,+BAAc,EAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE5H,OAAO,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,WAAW,EAAE,mBAAmB,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,YAAY,EAAE,eAAe,CAAC,CAAA;AACjG,CAAC,CAAA;AAEQ,kCAAW"}
1
+ {"version":3,"file":"useHuriHash.js","sourceRoot":"","sources":["../../../src/hooks/useHuriHash.tsx"],"names":[],"mappings":";;;AAAA,kDAA2C;AAC3C,iCAAmC;AAInC,qDAAiD;AACjD,qDAAiD;AAEjD;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,UAA0B,EAAE,OAAgB,EAAE,OAA8B,EAAiB,EAAE;IAClH,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,CAAC,UAA0B,EAAE,EAAE;QACtD,IAAI,UAAU,EAAE;YACd,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,OAAO,UAAU,CAAA;aAClB;YACD,IAAI,UAAU,YAAY,cAAI,EAAE;gBAC9B,OAAO,UAAU,CAAC,IAAI,CAAA;aACvB;SACF;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;IAErC,0EAA0E;IAC1E,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAA,+BAAc,EAAC,YAAY,CAAC,CAAA;IAElE,wFAAwF;IACxF,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAElD,kDAAkD;IAClD,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,+BAAc,EAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE5H,OAAO,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,WAAW,EAAE,mBAAmB,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,YAAY,EAAE,eAAe,CAAC,CAAA;AACjG,CAAC,CAAA;AAEQ,kCAAW"}
@@ -0,0 +1,2 @@
1
+ import { UsePayload } from './ResolvePayloadArgs';
2
+ export declare const useLoadPayload: (hash?: string) => UsePayload;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useLoadPayload = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_shared_1 = require("@xylabs/react-shared");
6
+ const react_archive_1 = require("@xyo-network/react-archive");
7
+ const react_archivist_api_1 = require("@xyo-network/react-archivist-api");
8
+ const react_1 = require("react");
9
+ // I hate this name, would prefer loadPayload, but need use prefix to make it a 'hook'
10
+ const useLoadPayload = (hash) => {
11
+ const { api } = (0, react_archivist_api_1.useArchivistApi)();
12
+ const { archive } = (0, react_archive_1.useArchive)();
13
+ const [localHash, setLocalHash] = (0, react_1.useState)();
14
+ const [notFound, setNotFound] = (0, react_1.useState)();
15
+ const [apiError, setApiError] = (0, react_1.useState)();
16
+ const [payload, setPayload] = (0, react_1.useState)();
17
+ const reset = () => {
18
+ setPayload(undefined);
19
+ setApiError(undefined);
20
+ setNotFound(undefined);
21
+ };
22
+ // allow for hash changes to retrigger the api call
23
+ (0, react_1.useEffect)(() => {
24
+ if (hash !== localHash) {
25
+ setLocalHash(hash);
26
+ reset();
27
+ }
28
+ }, [hash, localHash]);
29
+ (0, react_shared_1.useAsyncEffect)(
30
+ // eslint-disable-next-line react-hooks/exhaustive-deps
31
+ (mounted) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
32
+ if (api && localHash && localHash.length > 0 && notFound === undefined) {
33
+ reset();
34
+ try {
35
+ const result = yield (api === null || api === void 0 ? void 0 : api.archive(archive).payload.hash(localHash).get());
36
+ if (mounted()) {
37
+ if (result === null || result === void 0 ? void 0 : result.length) {
38
+ setPayload(result[0]);
39
+ setNotFound(false);
40
+ }
41
+ else if ((result === null || result === void 0 ? void 0 : result.length) === 0) {
42
+ setNotFound(true);
43
+ setPayload(undefined);
44
+ }
45
+ }
46
+ }
47
+ catch (e) {
48
+ reset();
49
+ setNotFound(false);
50
+ setApiError(e);
51
+ console.error(e);
52
+ }
53
+ }
54
+ }), [hash, api, archive, payload, notFound, localHash]);
55
+ return [payload, notFound, apiError];
56
+ };
57
+ exports.useLoadPayload = useLoadPayload;
58
+ //# sourceMappingURL=useLoadPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadPayload.js","sourceRoot":"","sources":["../../../src/hooks/useLoadPayload.tsx"],"names":[],"mappings":";;;;AAAA,uDAAqD;AAGrD,8DAAuD;AACvD,0EAAkE;AAClE,iCAA2C;AAI3C,sFAAsF;AAC/E,MAAM,cAAc,GAAG,CAAC,IAAa,EAAc,EAAE;IAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,qCAAe,GAAE,CAAA;IACjC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,0BAAU,GAAE,CAAA;IAChC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,GAAU,CAAA;IACpD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,GAAW,CAAA;IACnD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,GAAe,CAAA;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,GAAc,CAAA;IAEpD,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,UAAU,CAAC,SAAS,CAAC,CAAA;QACrB,WAAW,CAAC,SAAS,CAAC,CAAA;QACtB,WAAW,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC,CAAA;IAED,mDAAmD;IACnD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,KAAK,EAAE,CAAA;SACR;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;IAErB,IAAA,6BAAc;IACZ,uDAAuD;IACvD,CAAO,OAAO,EAAE,EAAE;QAChB,IAAI,GAAG,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE;YACtE,KAAK,EAAE,CAAA;YACP,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAA,CAAA;gBACxE,IAAI,OAAO,EAAE,EAAE;oBACb,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE;wBAClB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;wBACrB,WAAW,CAAC,KAAK,CAAC,CAAA;qBACnB;yBAAM,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAK,CAAC,EAAE;wBAC/B,WAAW,CAAC,IAAI,CAAC,CAAA;wBACjB,UAAU,CAAC,SAAS,CAAC,CAAA;qBACtB;iBACF;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,KAAK,EAAE,CAAA;gBACP,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClB,WAAW,CAAC,CAAgB,CAAC,CAAA;gBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;aACjB;SACF;IACH,CAAC,CAAA,EACD,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CACnD,CAAA;IACD,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACtC,CAAC,CAAA;AAjDY,QAAA,cAAc,kBAiD1B"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { PayloadContextState } from './State';
3
+ export declare const PayloadContext: import("react").Context<PayloadContextState & import("@xyo-network/react-shared").ContextExState>;
@@ -0,0 +1,3 @@
1
+ import { createContextEx } from '@xyo-network/react-shared';
2
+ export const PayloadContext = createContextEx();
3
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAI3D,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,EAAuB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { WithChildren } from '@xylabs/react-shared';
3
+ export interface PayloadProviderProps {
4
+ required?: boolean;
5
+ hash?: string;
6
+ }
7
+ export declare const PayloadProvider: React.FC<WithChildren<PayloadProviderProps>>;
@@ -0,0 +1,21 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useAsyncEffect } from '@xylabs/react-shared';
3
+ import { useArchivist } from '@xyo-network/react-archivist';
4
+ import { useState } from 'react';
5
+ import { PayloadContext } from './Context';
6
+ export const PayloadProvider = ({ required = false, hash, children }) => {
7
+ const { archivist } = useArchivist();
8
+ const [payload, setPayload] = useState();
9
+ useAsyncEffect(
10
+ // eslint-disable-next-line react-hooks/exhaustive-deps
11
+ async (mounted) => {
12
+ if (payload === undefined && hash) {
13
+ const loadedPayload = await archivist?.get(hash);
14
+ if (mounted()) {
15
+ setPayload(loadedPayload ?? null);
16
+ }
17
+ }
18
+ }, [archivist, payload, hash]);
19
+ return _jsxs(PayloadContext.Provider, { value: { payload, provided: true, setPayload }, children: [" ", payload ? children : required ? null : children] });
20
+ };
21
+ //# sourceMappingURL=Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,sBAAsB,CAAA;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAO1C,MAAM,CAAC,MAAM,eAAe,GAAiD,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpH,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAA;IACpC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAqB,CAAA;IAE3D,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,EAAE;YACjC,MAAM,aAAa,GAAG,MAAM,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAChD,IAAI,OAAO,EAAE,EAAE;gBACb,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,CAAA;aAClC;SACF;IACH,CAAC,EACD,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAC3B,CAAA;IAED,OAAO,MAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,kBAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAA2B,CAAA;AAC9J,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { XyoPayload } from '@xyo-network/payload';
2
+ import { ContextExState } from '@xyo-network/react-shared';
3
+ import { Dispatch } from 'react';
4
+ export interface PayloadContextState extends ContextExState {
5
+ payload?: XyoPayload | null;
6
+ setPayload?: Dispatch<XyoPayload>;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=State.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/State.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export * from './Context';
2
+ export * from './Provider';
3
+ export * from './State';
4
+ export * from './use';
@@ -0,0 +1,5 @@
1
+ export * from './Context';
2
+ export * from './Provider';
3
+ export * from './State';
4
+ export * from './use';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const useArchives: (required?: boolean) => Omit<import("./State").PayloadContextState & import("@xyo-network/react-shared").ContextExState, "provided">;
@@ -0,0 +1,6 @@
1
+ import { useContextEx } from '@xyo-network/react-shared';
2
+ import { PayloadContext } from './Context';
3
+ export const useArchives = (required = false) => {
4
+ return useContextEx(PayloadContext, 'Payload', required);
5
+ };
6
+ //# sourceMappingURL=use.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,EAAE;IAC9C,OAAO,YAAY,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AAC1D,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export * from './Payload';
@@ -0,0 +1,2 @@
1
+ export * from './Payload';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
@@ -2,5 +2,5 @@ export * from './lib';
2
2
  export * from './ResolvePayloadArgs';
3
3
  export * from './useGetSchema';
4
4
  export * from './useHuriHash';
5
- export * from './usePayload';
5
+ export * from './useLoadPayload';
6
6
  export * from './useResolveHuri';
@@ -2,6 +2,6 @@ export * from './lib';
2
2
  export * from './ResolvePayloadArgs';
3
3
  export * from './useGetSchema';
4
4
  export * from './useHuriHash';
5
- export * from './usePayload';
5
+ export * from './useLoadPayload';
6
6
  export * from './useResolveHuri';
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { Huri } from '@xyo-network/payload';
2
2
  import { useCallback } from 'react';
3
- import { usePayload } from './usePayload';
3
+ import { useLoadPayload } from './useLoadPayload';
4
4
  import { useResolveHuri } from './useResolveHuri';
5
5
  /**
6
6
  * Resolve a hash or a huri regardless of network
@@ -18,7 +18,7 @@ const useHuriHash = (huriOrHash, huriUri, options) => {
18
18
  }, []);
19
19
  const providedHash = hash(huriOrHash);
20
20
  // Optimistically try to grab the has from the current network and archive
21
- const [payload, notFound, apiError] = usePayload(providedHash);
21
+ const [payload, notFound, apiError] = useLoadPayload(providedHash);
22
22
  // if a huriUri was passed, we can safely override the notFound from the hash only query
23
23
  const notFoundOverride = huriUri ? true : notFound;
24
24
  // If payload isn't found, fallback to the huriUri
@@ -1 +1 @@
1
- {"version":3,"file":"useHuriHash.js","sourceRoot":"","sources":["../../../src/hooks/useHuriHash.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAa,MAAM,OAAO,CAAA;AAI9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,UAA0B,EAAE,OAAgB,EAAE,OAA8B,EAAiB,EAAE;IAClH,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,UAA0B,EAAE,EAAE;QACtD,IAAI,UAAU,EAAE;YACd,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,OAAO,UAAU,CAAA;aAClB;YACD,IAAI,UAAU,YAAY,IAAI,EAAE;gBAC9B,OAAO,UAAU,CAAC,IAAI,CAAA;aACvB;SACF;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;IAErC,0EAA0E;IAC1E,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;IAE9D,wFAAwF;IACxF,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAElD,kDAAkD;IAClD,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE5H,OAAO,CAAC,OAAO,IAAI,WAAW,EAAE,mBAAmB,EAAE,QAAQ,IAAI,YAAY,EAAE,eAAe,CAAC,CAAA;AACjG,CAAC,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"useHuriHash.js","sourceRoot":"","sources":["../../../src/hooks/useHuriHash.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAInC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,UAA0B,EAAE,OAAgB,EAAE,OAA8B,EAAiB,EAAE;IAClH,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,UAA0B,EAAE,EAAE;QACtD,IAAI,UAAU,EAAE;YACd,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,OAAO,UAAU,CAAA;aAClB;YACD,IAAI,UAAU,YAAY,IAAI,EAAE;gBAC9B,OAAO,UAAU,CAAC,IAAI,CAAA;aACvB;SACF;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;IAErC,0EAA0E;IAC1E,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAA;IAElE,wFAAwF;IACxF,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IAElD,kDAAkD;IAClD,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAA;IAE5H,OAAO,CAAC,OAAO,IAAI,WAAW,EAAE,mBAAmB,EAAE,QAAQ,IAAI,YAAY,EAAE,eAAe,CAAC,CAAA;AACjG,CAAC,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { UsePayload } from './ResolvePayloadArgs';
2
+ export declare const useLoadPayload: (hash?: string) => UsePayload;
@@ -0,0 +1,53 @@
1
+ import { useAsyncEffect } from '@xylabs/react-shared';
2
+ import { useArchive } from '@xyo-network/react-archive';
3
+ import { useArchivistApi } from '@xyo-network/react-archivist-api';
4
+ import { useEffect, useState } from 'react';
5
+ // I hate this name, would prefer loadPayload, but need use prefix to make it a 'hook'
6
+ export const useLoadPayload = (hash) => {
7
+ const { api } = useArchivistApi();
8
+ const { archive } = useArchive();
9
+ const [localHash, setLocalHash] = useState();
10
+ const [notFound, setNotFound] = useState();
11
+ const [apiError, setApiError] = useState();
12
+ const [payload, setPayload] = useState();
13
+ const reset = () => {
14
+ setPayload(undefined);
15
+ setApiError(undefined);
16
+ setNotFound(undefined);
17
+ };
18
+ // allow for hash changes to retrigger the api call
19
+ useEffect(() => {
20
+ if (hash !== localHash) {
21
+ setLocalHash(hash);
22
+ reset();
23
+ }
24
+ }, [hash, localHash]);
25
+ useAsyncEffect(
26
+ // eslint-disable-next-line react-hooks/exhaustive-deps
27
+ async (mounted) => {
28
+ if (api && localHash && localHash.length > 0 && notFound === undefined) {
29
+ reset();
30
+ try {
31
+ const result = await api?.archive(archive).payload.hash(localHash).get();
32
+ if (mounted()) {
33
+ if (result?.length) {
34
+ setPayload(result[0]);
35
+ setNotFound(false);
36
+ }
37
+ else if (result?.length === 0) {
38
+ setNotFound(true);
39
+ setPayload(undefined);
40
+ }
41
+ }
42
+ }
43
+ catch (e) {
44
+ reset();
45
+ setNotFound(false);
46
+ setApiError(e);
47
+ console.error(e);
48
+ }
49
+ }
50
+ }, [hash, api, archive, payload, notFound, localHash]);
51
+ return [payload, notFound, apiError];
52
+ };
53
+ //# sourceMappingURL=useLoadPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadPayload.js","sourceRoot":"","sources":["../../../src/hooks/useLoadPayload.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAI3C,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAa,EAAc,EAAE;IAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,eAAe,EAAE,CAAA;IACjC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAChC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAA;IACpD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAW,CAAA;IACnD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,EAAe,CAAA;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAc,CAAA;IAEpD,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,UAAU,CAAC,SAAS,CAAC,CAAA;QACrB,WAAW,CAAC,SAAS,CAAC,CAAA;QACtB,WAAW,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC,CAAA;IAED,mDAAmD;IACnD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,KAAK,EAAE,CAAA;SACR;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;IAErB,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI,GAAG,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE;YACtE,KAAK,EAAE,CAAA;YACP,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAA;gBACxE,IAAI,OAAO,EAAE,EAAE;oBACb,IAAI,MAAM,EAAE,MAAM,EAAE;wBAClB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;wBACrB,WAAW,CAAC,KAAK,CAAC,CAAA;qBACnB;yBAAM,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE;wBAC/B,WAAW,CAAC,IAAI,CAAC,CAAA;wBACjB,UAAU,CAAC,SAAS,CAAC,CAAA;qBACtB;iBACF;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,KAAK,EAAE,CAAA;gBACP,WAAW,CAAC,KAAK,CAAC,CAAA;gBAClB,WAAW,CAAC,CAAgB,CAAC,CAAA;gBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;aACjB;SACF;IACH,CAAC,EACD,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CACnD,CAAA;IACD,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACtC,CAAC,CAAA"}
package/package.json CHANGED
@@ -13,35 +13,37 @@
13
13
  "@emotion/react": "^11.9.3",
14
14
  "@emotion/styled": "^11.9.3",
15
15
  "@mui/icons-material": "^5.8.4",
16
- "@mui/material": "^5.9.0",
17
- "@xylabs/react-button": "^2.14.8",
18
- "@xylabs/react-flexbox": "^2.14.8",
19
- "@xylabs/react-quick-tip-button": "^2.14.8",
20
- "@xylabs/react-shared": "^2.14.8",
21
- "@xyo-network/api": "^2.21.19",
22
- "@xyo-network/network": "^2.21.19",
23
- "@xyo-network/payload": "^2.21.19",
24
- "@xyo-network/react-archive": "^2.26.19",
25
- "@xyo-network/react-archivist-api": "^2.26.19",
26
- "@xyo-network/react-auth-service": "^2.26.19",
27
- "@xyo-network/react-network": "^2.26.19",
28
- "@xyo-network/react-property": "^2.26.19",
29
- "@xyo-network/react-schema": "^2.26.19",
30
- "@xyo-network/react-shared": "^2.26.19",
31
- "@xyo-network/utils": "^2.21.19",
16
+ "@mui/material": "^5.9.1",
17
+ "@xylabs/react-button": "^2.14.10",
18
+ "@xylabs/react-flexbox": "^2.14.10",
19
+ "@xylabs/react-quick-tip-button": "^2.14.10",
20
+ "@xylabs/react-shared": "^2.14.10",
21
+ "@xyo-network/api": "^2.21.23",
22
+ "@xyo-network/network": "^2.21.23",
23
+ "@xyo-network/payload": "^2.21.23",
24
+ "@xyo-network/react-archive": "^2.26.22",
25
+ "@xyo-network/react-archivist": "^2.26.22",
26
+ "@xyo-network/react-archivist-api": "^2.26.22",
27
+ "@xyo-network/react-auth-service": "^2.26.22",
28
+ "@xyo-network/react-network": "^2.26.22",
29
+ "@xyo-network/react-property": "^2.26.22",
30
+ "@xyo-network/react-schema": "^2.26.22",
31
+ "@xyo-network/react-shared": "^2.26.22",
32
+ "@xyo-network/utils": "^2.21.23",
32
33
  "luxon": "^3.0.1",
33
34
  "react": "^18.2.0",
34
35
  "react-dom": "^18.2.0",
35
36
  "react-icons": "^4.4.0",
36
37
  "react-json-view": "^1.21.3",
37
- "react-router-dom": "^6.3.0"
38
+ "react-router-dom": "^6.3.0",
39
+ "tslib": "^2.4.0"
38
40
  },
39
41
  "description": "Common React library for all XYO projects that use React",
40
42
  "devDependencies": {
41
- "@babel/core": "^7.18.6",
42
- "@babel/preset-env": "^7.18.6",
43
+ "@babel/core": "^7.18.9",
44
+ "@babel/preset-env": "^7.18.9",
43
45
  "@storybook/react": "^6.5.9",
44
- "@types/luxon": "^2.3.2",
46
+ "@types/luxon": "^3.0.0",
45
47
  "@xylabs/tsconfig": "^1.0.14"
46
48
  },
47
49
  "browser": "dist/esm/index.js",
@@ -93,6 +95,5 @@
93
95
  },
94
96
  "sideEffects": false,
95
97
  "types": "dist/esm/index.d.ts",
96
- "version": "2.26.19",
97
- "packageManager": "yarn@3.1.1"
98
+ "version": "2.26.22"
98
99
  }
@@ -0,0 +1,5 @@
1
+ import { createContextEx } from '@xyo-network/react-shared'
2
+
3
+ import { PayloadContextState } from './State'
4
+
5
+ export const PayloadContext = createContextEx<PayloadContextState>()
@@ -0,0 +1,31 @@
1
+ import { useAsyncEffect, WithChildren } from '@xylabs/react-shared'
2
+ import { XyoPayload } from '@xyo-network/payload'
3
+ import { useArchivist } from '@xyo-network/react-archivist'
4
+ import { useState } from 'react'
5
+
6
+ import { PayloadContext } from './Context'
7
+
8
+ export interface PayloadProviderProps {
9
+ required?: boolean
10
+ hash?: string
11
+ }
12
+
13
+ export const PayloadProvider: React.FC<WithChildren<PayloadProviderProps>> = ({ required = false, hash, children }) => {
14
+ const { archivist } = useArchivist()
15
+ const [payload, setPayload] = useState<XyoPayload | null>()
16
+
17
+ useAsyncEffect(
18
+ // eslint-disable-next-line react-hooks/exhaustive-deps
19
+ async (mounted) => {
20
+ if (payload === undefined && hash) {
21
+ const loadedPayload = await archivist?.get(hash)
22
+ if (mounted()) {
23
+ setPayload(loadedPayload ?? null)
24
+ }
25
+ }
26
+ },
27
+ [archivist, payload, hash]
28
+ )
29
+
30
+ return <PayloadContext.Provider value={{ payload, provided: true, setPayload }}> {payload ? children : required ? null : children}</PayloadContext.Provider>
31
+ }
@@ -0,0 +1,8 @@
1
+ import { XyoPayload } from '@xyo-network/payload'
2
+ import { ContextExState } from '@xyo-network/react-shared'
3
+ import { Dispatch } from 'react'
4
+
5
+ export interface PayloadContextState extends ContextExState {
6
+ payload?: XyoPayload | null
7
+ setPayload?: Dispatch<XyoPayload>
8
+ }
@@ -0,0 +1,4 @@
1
+ export * from './Context'
2
+ export * from './Provider'
3
+ export * from './State'
4
+ export * from './use'
@@ -0,0 +1,7 @@
1
+ import { useContextEx } from '@xyo-network/react-shared'
2
+
3
+ import { PayloadContext } from './Context'
4
+
5
+ export const useArchives = (required = false) => {
6
+ return useContextEx(PayloadContext, 'Payload', required)
7
+ }
@@ -0,0 +1 @@
1
+ export * from './Payload'
@@ -2,5 +2,5 @@ export * from './lib'
2
2
  export * from './ResolvePayloadArgs'
3
3
  export * from './useGetSchema'
4
4
  export * from './useHuriHash'
5
- export * from './usePayload'
5
+ export * from './useLoadPayload'
6
6
  export * from './useResolveHuri'
@@ -1,9 +1,9 @@
1
1
  import { Huri } from '@xyo-network/payload'
2
- import { useCallback, useEffect } from 'react'
2
+ import { useCallback } from 'react'
3
3
 
4
4
  import { FetchHuriHashOptions } from './lib'
5
5
  import { UseHuriOrHash } from './ResolvePayloadArgs'
6
- import { usePayload } from './usePayload'
6
+ import { useLoadPayload } from './useLoadPayload'
7
7
  import { useResolveHuri } from './useResolveHuri'
8
8
 
9
9
  /**
@@ -24,7 +24,7 @@ const useHuriHash = (huriOrHash?: string | Huri, huriUri?: string, options?: Fet
24
24
  const providedHash = hash(huriOrHash)
25
25
 
26
26
  // Optimistically try to grab the has from the current network and archive
27
- const [payload, notFound, apiError] = usePayload(providedHash)
27
+ const [payload, notFound, apiError] = useLoadPayload(providedHash)
28
28
 
29
29
  // if a huriUri was passed, we can safely override the notFound from the hash only query
30
30
  const notFoundOverride = huriUri ? true : notFound
@@ -5,7 +5,7 @@ import { FlexCol } from '@xylabs/react-flexbox'
5
5
  import { ArchivistApiProvider, useArchivistApi } from '@xyo-network/react-archivist-api'
6
6
  import { lazy, Suspense, useState } from 'react'
7
7
 
8
- import { usePayload } from './usePayload'
8
+ import { useLoadPayload } from './useLoadPayload'
9
9
 
10
10
  const JsonView = lazy(() => import(/* webpackChunkName: "jsonView" */ 'react-json-view'))
11
11
 
@@ -21,7 +21,7 @@ const Wrapper: React.FC<{ hash?: string }> = ({ hash }) => (
21
21
  const UsePayloadComponent: React.FC<{ hash?: string }> = ({ hash }) => {
22
22
  const { api } = useArchivistApi()
23
23
  const [trigger, setTrigger] = useState<string>()
24
- const [payload, notFound] = usePayload(trigger)
24
+ const [payload, notFound] = useLoadPayload(trigger)
25
25
 
26
26
  return (
27
27
  <>
@@ -7,7 +7,8 @@ import { useEffect, useState } from 'react'
7
7
 
8
8
  import { UsePayload } from './ResolvePayloadArgs'
9
9
 
10
- export const usePayload = (hash?: string): UsePayload => {
10
+ // I hate this name, would prefer loadPayload, but need use prefix to make it a 'hook'
11
+ export const useLoadPayload = (hash?: string): UsePayload => {
11
12
  const { api } = useArchivistApi()
12
13
  const { archive } = useArchive()
13
14
  const [localHash, setLocalHash] = useState<string>()