@xyo-network/react-payload 2.26.12 → 2.26.15

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,4 +1,4 @@
1
1
  import { XyoApiError } from '@xyo-network/api';
2
2
  import { XyoPayload } from '@xyo-network/payload';
3
- export declare type UsePayloadArgs = [XyoPayload?, boolean?, XyoApiError?];
4
- export declare type UseHuriOrHashArgs = [...UsePayloadArgs, boolean?];
3
+ export declare type UsePayload = [XyoPayload?, boolean?, XyoApiError?];
4
+ export declare type UseHuriOrHash = [...UsePayload, boolean?];
@@ -16,11 +16,13 @@ const useHuriHash = (huriOrHash, huriUri, options) => {
16
16
  }
17
17
  }
18
18
  }, []);
19
- const foundHash = hash(huriOrHash);
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(foundHash);
21
+ const [payload, notFound, apiError] = usePayload(providedHash);
22
+ // if a huriUri was passed, we can safely override the notFound from the hash only query
23
+ const notFoundOverride = huriUri ? true : notFound;
22
24
  // If payload isn't found, fallback to the huriUri
23
- const [huriPayload, huriPayloadNotFound, huriApiError, networkNotFound] = useResolveHuri(huriUri, notFound, options);
25
+ const [huriPayload, huriPayloadNotFound, huriApiError, networkNotFound] = useResolveHuri(huriUri, notFoundOverride, options);
24
26
  return [payload ?? huriPayload, huriPayloadNotFound, apiError ?? huriApiError, networkNotFound];
25
27
  };
26
28
  export { useHuriHash };
@@ -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,EAAE,MAAM,OAAO,CAAA;AAInC,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,EAAqB,EAAE;IACtH,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,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;IAElC,0EAA0E;IAC1E,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;IAE3D,kDAAkD;IAClD,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEpH,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,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,2 +1,2 @@
1
- import { UsePayloadArgs } from './ResolvePayloadArgs';
2
- export declare const usePayload: (hash?: string) => UsePayloadArgs;
1
+ import { UsePayload } from './ResolvePayloadArgs';
2
+ export declare const usePayload: (hash?: string) => UsePayload;
@@ -1,10 +1,11 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared';
2
2
  import { useArchive } from '@xyo-network/react-archive';
3
3
  import { useArchivistApi } from '@xyo-network/react-archivist-api';
4
- import { useState } from 'react';
4
+ import { useEffect, useState } from 'react';
5
5
  export const usePayload = (hash) => {
6
6
  const { api } = useArchivistApi();
7
7
  const { archive } = useArchive();
8
+ const [localHash, setLocalHash] = useState();
8
9
  const [notFound, setNotFound] = useState();
9
10
  const [apiError, setApiError] = useState();
10
11
  const [payload, setPayload] = useState();
@@ -13,18 +14,26 @@ export const usePayload = (hash) => {
13
14
  setApiError(undefined);
14
15
  setNotFound(undefined);
15
16
  };
17
+ // allow for hash changes to retrigger the api call
18
+ useEffect(() => {
19
+ if (hash !== localHash) {
20
+ setLocalHash(hash);
21
+ reset();
22
+ }
23
+ }, [hash, localHash]);
16
24
  useAsyncEffect(
17
25
  // eslint-disable-next-line react-hooks/exhaustive-deps
18
26
  async (mounted) => {
19
- if (api && hash && hash.length > 0) {
27
+ if (api && localHash && localHash.length > 0 && notFound === undefined) {
28
+ reset();
20
29
  try {
21
- reset();
22
- const result = await api?.archive(archive).payload.hash(hash).get();
30
+ const result = await api?.archive(archive).payload.hash(localHash).get();
23
31
  if (mounted()) {
24
32
  if (result?.length) {
25
33
  setPayload(result[0]);
34
+ setNotFound(false);
26
35
  }
27
- else if (result) {
36
+ else if (result?.length === 0) {
28
37
  setNotFound(true);
29
38
  setPayload(undefined);
30
39
  }
@@ -32,11 +41,12 @@ export const usePayload = (hash) => {
32
41
  }
33
42
  catch (e) {
34
43
  reset();
44
+ setNotFound(false);
35
45
  setApiError(e);
36
46
  console.error(e);
37
47
  }
38
48
  }
39
- }, [hash, api, archive]);
49
+ }, [hash, api, archive, payload, notFound, localHash]);
40
50
  return [payload, notFound, apiError];
41
51
  };
42
52
  //# sourceMappingURL=usePayload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePayload.js","sourceRoot":"","sources":["../../../src/hooks/usePayload.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,QAAQ,EAAE,MAAM,OAAO,CAAA;AAIhC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAa,EAAkB,EAAE;IAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,eAAe,EAAE,CAAA;IACjC,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAChC,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,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,IAAI;gBACF,KAAK,EAAE,CAAA;gBACP,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;gBACnE,IAAI,OAAO,EAAE,EAAE;oBACb,IAAI,MAAM,EAAE,MAAM,EAAE;wBAClB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;qBACtB;yBAAM,IAAI,MAAM,EAAE;wBACjB,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,CAAgB,CAAC,CAAA;gBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;aACjB;SACF;IACH,CAAC,EACD,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CACrB,CAAA;IACD,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACtC,CAAC,CAAA"}
1
+ {"version":3,"file":"usePayload.js","sourceRoot":"","sources":["../../../src/hooks/usePayload.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,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAa,EAAc,EAAE;IACtD,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"}
@@ -10,6 +10,11 @@ const useResolveHuri = (huriUri, dependentNotFound, options) => {
10
10
  const [huriNetworkNotFound, setHuriNetworkNotFound] = useState();
11
11
  const [huriApiError, setHuriApiError] = useState();
12
12
  const { changeActiveNetwork } = options ?? {};
13
+ const reset = () => {
14
+ setHuriPayload(undefined);
15
+ setHuriPayloadNotFound(undefined);
16
+ setHuriApiError(undefined);
17
+ };
13
18
  useEffect(() => {
14
19
  // Initially, sync local not found with dependent's status
15
20
  setHuriPayloadNotFound(dependentNotFound);
@@ -18,7 +23,8 @@ const useResolveHuri = (huriUri, dependentNotFound, options) => {
18
23
  // eslint-disable-next-line react-hooks/exhaustive-deps
19
24
  async (mounted) => {
20
25
  // if dependent value is resolved, don't do anything, if not resolved, try to resolve huriUri
21
- if ((dependentNotFound === undefined || dependentNotFound) && huriUri) {
26
+ if (dependentNotFound && huriUri) {
27
+ reset();
22
28
  const huriInstance = new Huri(huriUri);
23
29
  const foundHuriNetwork = findHuriNetwork(huriInstance, networks);
24
30
  if (foundHuriNetwork && mounted()) {
@@ -40,6 +46,8 @@ const useResolveHuri = (huriUri, dependentNotFound, options) => {
40
46
  }
41
47
  catch (e) {
42
48
  if (mounted()) {
49
+ setHuriPayloadNotFound(false);
50
+ setHuriPayload(undefined);
43
51
  setHuriApiError(e);
44
52
  }
45
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useResolveHuri.js","sourceRoot":"","sources":["../../../src/hooks/useResolveHuri.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,IAAI,EAAc,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAwB,eAAe,EAAE,MAAM,OAAO,CAAA;AAG7D,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,iBAA2B,EAAE,OAA8B,EAAqB,EAAE;IAC1H,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAA;IACtD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAc,CAAA;IAC5D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,EAAW,CAAA;IACzE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,EAAW,CAAA;IACzE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAe,CAAA;IAE/D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,0DAA0D;QAC1D,sBAAsB,CAAC,iBAAiB,CAAC,CAAA;IAC3C,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAEvB,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,6FAA6F;QAC7F,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,OAAO,EAAE;YACrE,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;YAEtC,MAAM,gBAAgB,GAAG,eAAe,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;YAEhE,IAAI,gBAAgB,IAAI,OAAO,EAAE,EAAE;gBACjC,IAAI,OAAO,KAAK,gBAAgB,IAAI,mBAAmB,EAAE;oBACvD,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAA;oBAC9B,OAAM;iBACP;gBAED,IAAI;oBACF,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAA;oBAC9C,IAAI,OAAO,EAAE,EAAE;wBACb,IAAI,WAAW,EAAE;4BACf,cAAc,CAAC,WAAW,CAAC,CAAA;4BAC3B,sBAAsB,CAAC,KAAK,CAAC,CAAA;yBAC9B;6BAAM;4BACL,sBAAsB,CAAC,IAAI,CAAC,CAAA;yBAC7B;qBACF;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,IAAI,OAAO,EAAE,EAAE;wBACb,eAAe,CAAC,CAAgB,CAAC,CAAA;qBAClC;iBACF;aACF;iBAAM;gBACL,sBAAsB,CAAC,IAAI,CAAC,CAAA;aAC7B;SACF;IACH,CAAC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,CAAC,CACjF,CAAA;IAED,OAAO,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"useResolveHuri.js","sourceRoot":"","sources":["../../../src/hooks/useResolveHuri.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,IAAI,EAAc,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAwB,eAAe,EAAE,MAAM,OAAO,CAAA;AAG7D,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,iBAA2B,EAAE,OAA8B,EAAiB,EAAE;IACtH,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAA;IACtD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAc,CAAA;IAC5D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,EAAW,CAAA;IACzE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,EAAW,CAAA;IACzE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAe,CAAA;IAE/D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAE7C,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,cAAc,CAAC,SAAS,CAAC,CAAA;QACzB,sBAAsB,CAAC,SAAS,CAAC,CAAA;QACjC,eAAe,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,0DAA0D;QAC1D,sBAAsB,CAAC,iBAAiB,CAAC,CAAA;IAC3C,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAEvB,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,6FAA6F;QAC7F,IAAI,iBAAiB,IAAI,OAAO,EAAE;YAChC,KAAK,EAAE,CAAA;YACP,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;YAEtC,MAAM,gBAAgB,GAAG,eAAe,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;YAEhE,IAAI,gBAAgB,IAAI,OAAO,EAAE,EAAE;gBACjC,IAAI,OAAO,KAAK,gBAAgB,IAAI,mBAAmB,EAAE;oBACvD,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAA;oBAC9B,OAAM;iBACP;gBAED,IAAI;oBACF,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAA;oBAC9C,IAAI,OAAO,EAAE,EAAE;wBACb,IAAI,WAAW,EAAE;4BACf,cAAc,CAAC,WAAW,CAAC,CAAA;4BAC3B,sBAAsB,CAAC,KAAK,CAAC,CAAA;yBAC9B;6BAAM;4BACL,sBAAsB,CAAC,IAAI,CAAC,CAAA;yBAC7B;qBACF;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,IAAI,OAAO,EAAE,EAAE;wBACb,sBAAsB,CAAC,KAAK,CAAC,CAAA;wBAC7B,cAAc,CAAC,SAAS,CAAC,CAAA;wBACzB,eAAe,CAAC,CAAgB,CAAC,CAAA;qBAClC;iBACF;aACF;iBAAM;gBACL,sBAAsB,CAAC,IAAI,CAAC,CAAA;aAC7B;SACF;IACH,CAAC,EACD,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,CAAC,CACjF,CAAA;IAED,OAAO,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
package/package.json CHANGED
@@ -13,23 +13,23 @@
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.8.7",
17
- "@xylabs/react-button": "^2.14.5",
18
- "@xylabs/react-flexbox": "^2.14.5",
19
- "@xylabs/react-quick-tip-button": "^2.14.5",
20
- "@xylabs/react-shared": "^2.14.5",
21
- "@xyo-network/api": "^2.21.14",
22
- "@xyo-network/network": "^2.21.14",
23
- "@xyo-network/payload": "^2.21.14",
24
- "@xyo-network/react-archive": "^2.26.12",
25
- "@xyo-network/react-archivist-api": "^2.26.12",
26
- "@xyo-network/react-auth-service": "^2.26.12",
27
- "@xyo-network/react-network": "^2.26.12",
28
- "@xyo-network/react-property": "^2.26.12",
29
- "@xyo-network/react-schema": "^2.26.12",
30
- "@xyo-network/react-shared": "^2.26.12",
31
- "@xyo-network/utils": "^2.21.14",
32
- "luxon": "^2.4.0",
16
+ "@mui/material": "^5.9.0",
17
+ "@xylabs/react-button": "^2.14.6",
18
+ "@xylabs/react-flexbox": "^2.14.6",
19
+ "@xylabs/react-quick-tip-button": "^2.14.6",
20
+ "@xylabs/react-shared": "^2.14.6",
21
+ "@xyo-network/api": "^2.21.16",
22
+ "@xyo-network/network": "^2.21.16",
23
+ "@xyo-network/payload": "^2.21.16",
24
+ "@xyo-network/react-archive": "^2.26.15",
25
+ "@xyo-network/react-archivist-api": "^2.26.15",
26
+ "@xyo-network/react-auth-service": "^2.26.15",
27
+ "@xyo-network/react-network": "^2.26.15",
28
+ "@xyo-network/react-property": "^2.26.15",
29
+ "@xyo-network/react-schema": "^2.26.15",
30
+ "@xyo-network/react-shared": "^2.26.15",
31
+ "@xyo-network/utils": "^2.21.16",
32
+ "luxon": "^3.0.1",
33
33
  "react": "^18.2.0",
34
34
  "react-dom": "^18.2.0",
35
35
  "react-icons": "^4.4.0",
@@ -94,6 +94,6 @@
94
94
  },
95
95
  "sideEffects": false,
96
96
  "types": "dist/esm/index.d.ts",
97
- "version": "2.26.12",
97
+ "version": "2.26.15",
98
98
  "packageManager": "yarn@3.1.1"
99
99
  }
@@ -1,6 +1,6 @@
1
1
  import { XyoApiError } from '@xyo-network/api'
2
2
  import { XyoPayload } from '@xyo-network/payload'
3
3
 
4
- export type UsePayloadArgs = [XyoPayload?, boolean?, XyoApiError?]
4
+ export type UsePayload = [XyoPayload?, boolean?, XyoApiError?]
5
5
 
6
- export type UseHuriOrHashArgs = [...UsePayloadArgs, boolean?]
6
+ export type UseHuriOrHash = [...UsePayload, boolean?]
@@ -56,6 +56,7 @@ const UseHuriHashComponent: React.FC<UseHuriHashComponentProps> = ({ huriOrHash,
56
56
  </FlexRow>
57
57
  ) : null}
58
58
  <FlexCol my={3}>
59
+ {notFound === undefined && networkNotFound === undefined ? 'Loading...' : null}
59
60
  {notFound ? <Alert severity="warning">Not Found</Alert> : null}
60
61
  {networkNotFound ? <Alert severity="warning">Network Not Found</Alert> : null}
61
62
  <Suspense fallback={<FlexCol busy />}>
@@ -1,15 +1,15 @@
1
1
  import { Huri } from '@xyo-network/payload'
2
- import { useCallback } from 'react'
2
+ import { useCallback, useEffect } from 'react'
3
3
 
4
4
  import { FetchHuriHashOptions } from './lib'
5
- import { UseHuriOrHashArgs } from './ResolvePayloadArgs'
5
+ import { UseHuriOrHash } from './ResolvePayloadArgs'
6
6
  import { usePayload } from './usePayload'
7
7
  import { useResolveHuri } from './useResolveHuri'
8
8
 
9
9
  /**
10
10
  * Resolve a hash or a huri regardless of network
11
11
  */
12
- const useHuriHash = (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions): UseHuriOrHashArgs => {
12
+ const useHuriHash = (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions): UseHuriOrHash => {
13
13
  const hash = useCallback((huriOrHash?: string | Huri) => {
14
14
  if (huriOrHash) {
15
15
  if (typeof huriOrHash === 'string') {
@@ -21,13 +21,16 @@ const useHuriHash = (huriOrHash?: string | Huri, huriUri?: string, options?: Fet
21
21
  }
22
22
  }, [])
23
23
 
24
- const foundHash = hash(huriOrHash)
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(foundHash)
27
+ const [payload, notFound, apiError] = usePayload(providedHash)
28
+
29
+ // if a huriUri was passed, we can safely override the notFound from the hash only query
30
+ const notFoundOverride = huriUri ? true : notFound
28
31
 
29
32
  // If payload isn't found, fallback to the huriUri
30
- const [huriPayload, huriPayloadNotFound, huriApiError, networkNotFound] = useResolveHuri(huriUri, notFound, options)
33
+ const [huriPayload, huriPayloadNotFound, huriApiError, networkNotFound] = useResolveHuri(huriUri, notFoundOverride, options)
31
34
 
32
35
  return [payload ?? huriPayload, huriPayloadNotFound, apiError ?? huriApiError, networkNotFound]
33
36
  }
@@ -3,13 +3,14 @@ import { XyoApiError } from '@xyo-network/api'
3
3
  import { XyoPayload } from '@xyo-network/payload'
4
4
  import { useArchive } from '@xyo-network/react-archive'
5
5
  import { useArchivistApi } from '@xyo-network/react-archivist-api'
6
- import { useState } from 'react'
6
+ import { useEffect, useState } from 'react'
7
7
 
8
- import { UsePayloadArgs } from './ResolvePayloadArgs'
8
+ import { UsePayload } from './ResolvePayloadArgs'
9
9
 
10
- export const usePayload = (hash?: string): UsePayloadArgs => {
10
+ export const usePayload = (hash?: string): UsePayload => {
11
11
  const { api } = useArchivistApi()
12
12
  const { archive } = useArchive()
13
+ const [localHash, setLocalHash] = useState<string>()
13
14
  const [notFound, setNotFound] = useState<boolean>()
14
15
  const [apiError, setApiError] = useState<XyoApiError>()
15
16
  const [payload, setPayload] = useState<XyoPayload>()
@@ -20,29 +21,39 @@ export const usePayload = (hash?: string): UsePayloadArgs => {
20
21
  setNotFound(undefined)
21
22
  }
22
23
 
24
+ // allow for hash changes to retrigger the api call
25
+ useEffect(() => {
26
+ if (hash !== localHash) {
27
+ setLocalHash(hash)
28
+ reset()
29
+ }
30
+ }, [hash, localHash])
31
+
23
32
  useAsyncEffect(
24
33
  // eslint-disable-next-line react-hooks/exhaustive-deps
25
34
  async (mounted) => {
26
- if (api && hash && hash.length > 0) {
35
+ if (api && localHash && localHash.length > 0 && notFound === undefined) {
36
+ reset()
27
37
  try {
28
- reset()
29
- const result = await api?.archive(archive).payload.hash(hash).get()
38
+ const result = await api?.archive(archive).payload.hash(localHash).get()
30
39
  if (mounted()) {
31
40
  if (result?.length) {
32
41
  setPayload(result[0])
33
- } else if (result) {
42
+ setNotFound(false)
43
+ } else if (result?.length === 0) {
34
44
  setNotFound(true)
35
45
  setPayload(undefined)
36
46
  }
37
47
  }
38
48
  } catch (e) {
39
49
  reset()
50
+ setNotFound(false)
40
51
  setApiError(e as XyoApiError)
41
52
  console.error(e)
42
53
  }
43
54
  }
44
55
  },
45
- [hash, api, archive]
56
+ [hash, api, archive, payload, notFound, localHash]
46
57
  )
47
58
  return [payload, notFound, apiError]
48
59
  }
@@ -5,9 +5,9 @@ import { useNetwork } from '@xyo-network/react-network'
5
5
  import { useEffect, useState } from 'react'
6
6
 
7
7
  import { FetchHuriHashOptions, findHuriNetwork } from './lib'
8
- import { UseHuriOrHashArgs } from './ResolvePayloadArgs'
8
+ import { UseHuriOrHash } from './ResolvePayloadArgs'
9
9
 
10
- const useResolveHuri = (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions): UseHuriOrHashArgs => {
10
+ const useResolveHuri = (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions): UseHuriOrHash => {
11
11
  const { network, networks, setNetwork } = useNetwork()
12
12
  const [huriPayload, setHuriPayload] = useState<XyoPayload>()
13
13
  const [huriPayloadNotFound, setHuriPayloadNotFound] = useState<boolean>()
@@ -16,6 +16,12 @@ const useResolveHuri = (huriUri?: string, dependentNotFound?: boolean, options?:
16
16
 
17
17
  const { changeActiveNetwork } = options ?? {}
18
18
 
19
+ const reset = () => {
20
+ setHuriPayload(undefined)
21
+ setHuriPayloadNotFound(undefined)
22
+ setHuriApiError(undefined)
23
+ }
24
+
19
25
  useEffect(() => {
20
26
  // Initially, sync local not found with dependent's status
21
27
  setHuriPayloadNotFound(dependentNotFound)
@@ -25,7 +31,8 @@ const useResolveHuri = (huriUri?: string, dependentNotFound?: boolean, options?:
25
31
  // eslint-disable-next-line react-hooks/exhaustive-deps
26
32
  async (mounted) => {
27
33
  // if dependent value is resolved, don't do anything, if not resolved, try to resolve huriUri
28
- if ((dependentNotFound === undefined || dependentNotFound) && huriUri) {
34
+ if (dependentNotFound && huriUri) {
35
+ reset()
29
36
  const huriInstance = new Huri(huriUri)
30
37
 
31
38
  const foundHuriNetwork = findHuriNetwork(huriInstance, networks)
@@ -48,6 +55,8 @@ const useResolveHuri = (huriUri?: string, dependentNotFound?: boolean, options?:
48
55
  }
49
56
  } catch (e) {
50
57
  if (mounted()) {
58
+ setHuriPayloadNotFound(false)
59
+ setHuriPayload(undefined)
51
60
  setHuriApiError(e as XyoApiError)
52
61
  }
53
62
  }