@xyo-network/react-payload 2.26.21 → 2.26.24
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/cjs/contexts/Payload/Context.d.ts +3 -0
- package/dist/cjs/contexts/Payload/Context.js +6 -0
- package/dist/cjs/contexts/Payload/Context.js.map +1 -0
- package/dist/cjs/contexts/Payload/Provider.d.ts +7 -0
- package/dist/cjs/contexts/Payload/Provider.js +26 -0
- package/dist/cjs/contexts/Payload/Provider.js.map +1 -0
- package/dist/cjs/contexts/Payload/State.d.ts +7 -0
- package/dist/cjs/contexts/Payload/State.js +3 -0
- package/dist/cjs/contexts/Payload/State.js.map +1 -0
- package/dist/cjs/contexts/Payload/index.d.ts +4 -0
- package/dist/cjs/contexts/Payload/index.js +8 -0
- package/dist/cjs/contexts/Payload/index.js.map +1 -0
- package/dist/cjs/contexts/Payload/use.d.ts +1 -0
- package/dist/cjs/contexts/Payload/use.js +10 -0
- package/dist/cjs/contexts/Payload/use.js.map +1 -0
- package/dist/cjs/contexts/index.d.ts +1 -0
- package/dist/cjs/contexts/index.js +5 -0
- package/dist/cjs/contexts/index.js.map +1 -0
- package/dist/cjs/hooks/index.d.ts +1 -1
- package/dist/cjs/hooks/index.js +1 -1
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useHuriHash.d.ts +1 -1
- package/dist/cjs/hooks/useHuriHash.js +2 -2
- package/dist/cjs/hooks/useHuriHash.js.map +1 -1
- package/dist/cjs/hooks/useLoadPayload.d.ts +2 -0
- package/dist/cjs/hooks/useLoadPayload.js +58 -0
- package/dist/cjs/hooks/useLoadPayload.js.map +1 -0
- package/dist/cjs/hooks/useResolveHuri.d.ts +1 -2
- package/dist/esm/contexts/Payload/Context.d.ts +3 -0
- package/dist/esm/contexts/Payload/Context.js +3 -0
- package/dist/esm/contexts/Payload/Context.js.map +1 -0
- package/dist/esm/contexts/Payload/Provider.d.ts +7 -0
- package/dist/esm/contexts/Payload/Provider.js +21 -0
- package/dist/esm/contexts/Payload/Provider.js.map +1 -0
- package/dist/esm/contexts/Payload/State.d.ts +7 -0
- package/dist/esm/contexts/Payload/State.js +2 -0
- package/dist/esm/contexts/Payload/State.js.map +1 -0
- package/dist/esm/contexts/Payload/index.d.ts +4 -0
- package/dist/esm/contexts/Payload/index.js +5 -0
- package/dist/esm/contexts/Payload/index.js.map +1 -0
- package/dist/esm/contexts/Payload/use.d.ts +1 -0
- package/dist/esm/contexts/Payload/use.js +6 -0
- package/dist/esm/contexts/Payload/use.js.map +1 -0
- package/dist/esm/contexts/index.d.ts +1 -0
- package/dist/esm/contexts/index.js +2 -0
- package/dist/esm/contexts/index.js.map +1 -0
- package/dist/esm/hooks/index.d.ts +1 -1
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useHuriHash.d.ts +1 -1
- package/dist/esm/hooks/useHuriHash.js +2 -2
- package/dist/esm/hooks/useHuriHash.js.map +1 -1
- package/dist/esm/hooks/useLoadPayload.d.ts +2 -0
- package/dist/esm/hooks/useLoadPayload.js +53 -0
- package/dist/esm/hooks/useLoadPayload.js.map +1 -0
- package/dist/esm/hooks/useResolveHuri.d.ts +1 -2
- package/package.json +19 -17
- package/src/contexts/Payload/Context.ts +5 -0
- package/src/contexts/Payload/Provider.tsx +31 -0
- package/src/contexts/Payload/State.ts +8 -0
- package/src/contexts/Payload/index.ts +4 -0
- package/src/contexts/Payload/use.ts +7 -0
- package/src/contexts/index.ts +1 -0
- package/src/hooks/index.ts +1 -1
- package/src/hooks/useHuriHash.tsx +3 -3
- package/src/hooks/{usePayload.stories.tsx → useLoadPayload.stories.tsx} +2 -2
- package/src/hooks/{usePayload.tsx → useLoadPayload.tsx} +2 -1
|
@@ -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,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);
|
|
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,CAAC,CAAA;aAC1B;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 @@
|
|
|
1
|
+
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/State.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB"}
|
package/dist/cjs/hooks/index.js
CHANGED
|
@@ -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("./
|
|
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,
|
|
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,5 +3,5 @@ import { FetchHuriHashOptions } from './lib';
|
|
|
3
3
|
/**
|
|
4
4
|
* Resolve a hash or a huri regardless of network
|
|
5
5
|
*/
|
|
6
|
-
declare const useHuriHash: (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions) => [(import("@xyo-network/payload").
|
|
6
|
+
declare const useHuriHash: (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions) => [(import("@xyo-network/payload").XyoPayloadBase | undefined)?, (boolean | undefined)?, (import("@xyo-network/api").XyoApiError<any, any> | undefined)?, (boolean | undefined)?];
|
|
7
7
|
export { useHuriHash };
|
|
@@ -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
|
|
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,
|
|
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,
|
|
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,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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { XyoApiError } from '@xyo-network/api';
|
|
2
|
-
import { XyoPayload } from '@xyo-network/payload';
|
|
3
2
|
import { FetchHuriHashOptions } from './lib';
|
|
4
|
-
declare const useResolveHuri: (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions) => [(
|
|
3
|
+
declare const useResolveHuri: (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions) => [(import("@xyo-network/payload").XyoPayloadBase | undefined)?, (boolean | undefined)?, (XyoApiError<any, any> | undefined)?, (boolean | undefined)?];
|
|
5
4
|
export { useResolveHuri };
|
|
@@ -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,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);
|
|
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,CAAC,CAAA;aAC1B;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 @@
|
|
|
1
|
+
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../../../src/contexts/Payload/State.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
package/dist/esm/hooks/index.js
CHANGED
|
@@ -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,
|
|
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"}
|
|
@@ -3,5 +3,5 @@ import { FetchHuriHashOptions } from './lib';
|
|
|
3
3
|
/**
|
|
4
4
|
* Resolve a hash or a huri regardless of network
|
|
5
5
|
*/
|
|
6
|
-
declare const useHuriHash: (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions) => [(import("@xyo-network/payload").
|
|
6
|
+
declare const useHuriHash: (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions) => [(import("@xyo-network/payload").XyoPayloadBase | undefined)?, (boolean | undefined)?, (import("@xyo-network/api").XyoApiError<any, any> | undefined)?, (boolean | undefined)?];
|
|
7
7
|
export { useHuriHash };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Huri } from '@xyo-network/payload';
|
|
2
2
|
import { useCallback } from 'react';
|
|
3
|
-
import {
|
|
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] =
|
|
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,
|
|
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,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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { XyoApiError } from '@xyo-network/api';
|
|
2
|
-
import { XyoPayload } from '@xyo-network/payload';
|
|
3
2
|
import { FetchHuriHashOptions } from './lib';
|
|
4
|
-
declare const useResolveHuri: (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions) => [(
|
|
3
|
+
declare const useResolveHuri: (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions) => [(import("@xyo-network/payload").XyoPayloadBase | undefined)?, (boolean | undefined)?, (XyoApiError<any, any> | undefined)?, (boolean | undefined)?];
|
|
5
4
|
export { useResolveHuri };
|
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.
|
|
16
|
+
"@mui/material": "^5.9.1",
|
|
17
17
|
"@xylabs/react-button": "^2.14.10",
|
|
18
18
|
"@xylabs/react-flexbox": "^2.14.10",
|
|
19
19
|
"@xylabs/react-quick-tip-button": "^2.14.10",
|
|
20
20
|
"@xylabs/react-shared": "^2.14.10",
|
|
21
|
-
"@xyo-network/api": "^2.
|
|
22
|
-
"@xyo-network/network": "^2.
|
|
23
|
-
"@xyo-network/payload": "^2.
|
|
24
|
-
"@xyo-network/react-archive": "^2.26.
|
|
25
|
-
"@xyo-network/react-archivist
|
|
26
|
-
"@xyo-network/react-
|
|
27
|
-
"@xyo-network/react-
|
|
28
|
-
"@xyo-network/react-
|
|
29
|
-
"@xyo-network/react-
|
|
30
|
-
"@xyo-network/react-
|
|
31
|
-
"@xyo-network/
|
|
21
|
+
"@xyo-network/api": "^2.22.5",
|
|
22
|
+
"@xyo-network/network": "^2.22.5",
|
|
23
|
+
"@xyo-network/payload": "^2.22.5",
|
|
24
|
+
"@xyo-network/react-archive": "^2.26.24",
|
|
25
|
+
"@xyo-network/react-archivist": "^2.26.24",
|
|
26
|
+
"@xyo-network/react-archivist-api": "^2.26.24",
|
|
27
|
+
"@xyo-network/react-auth-service": "^2.26.24",
|
|
28
|
+
"@xyo-network/react-network": "^2.26.24",
|
|
29
|
+
"@xyo-network/react-property": "^2.26.24",
|
|
30
|
+
"@xyo-network/react-schema": "^2.26.24",
|
|
31
|
+
"@xyo-network/react-shared": "^2.26.24",
|
|
32
|
+
"@xyo-network/utils": "^2.22.5",
|
|
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.
|
|
42
|
-
"@babel/preset-env": "^7.18.
|
|
43
|
+
"@babel/core": "^7.18.9",
|
|
44
|
+
"@babel/preset-env": "^7.18.9",
|
|
43
45
|
"@storybook/react": "^6.5.9",
|
|
44
|
-
"@types/luxon": "^
|
|
46
|
+
"@types/luxon": "^3.0.0",
|
|
45
47
|
"@xylabs/tsconfig": "^1.0.14"
|
|
46
48
|
},
|
|
47
49
|
"browser": "dist/esm/index.js",
|
|
@@ -93,5 +95,5 @@
|
|
|
93
95
|
},
|
|
94
96
|
"sideEffects": false,
|
|
95
97
|
"types": "dist/esm/index.d.ts",
|
|
96
|
-
"version": "2.26.
|
|
98
|
+
"version": "2.26.24"
|
|
97
99
|
}
|
|
@@ -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)
|
|
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 @@
|
|
|
1
|
+
export * from './Payload'
|
package/src/hooks/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Huri } from '@xyo-network/payload'
|
|
2
|
-
import { useCallback
|
|
2
|
+
import { useCallback } from 'react'
|
|
3
3
|
|
|
4
4
|
import { FetchHuriHashOptions } from './lib'
|
|
5
5
|
import { UseHuriOrHash } from './ResolvePayloadArgs'
|
|
6
|
-
import {
|
|
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] =
|
|
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 {
|
|
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] =
|
|
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
|
-
|
|
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>()
|