@xyo-network/react-payload 2.26.8 → 2.26.11

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,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import ContentCopyIcon from '@mui/icons-material/ContentCopy';
3
3
  import { IconButton, Typography, useTheme } from '@mui/material';
4
- import { QuickTipButton } from '@xylabs/react-common';
5
4
  import { FlexCol, FlexGrowRow, FlexRow } from '@xylabs/react-flexbox';
5
+ import { QuickTipButton } from '@xylabs/react-quick-tip-button';
6
6
  import { XyoPayloadWrapper } from '@xyo-network/payload';
7
7
  export const PayloadHashSourceDetails = ({ noTitle = false, payload, ...props }) => {
8
8
  const theme = useTheme();
@@ -1 +1 @@
1
- {"version":3,"file":"HashSourceDetails.js","sourceRoot":"","sources":["../../../../src/components/Details/HashSourceDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAgB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACnF,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAOpE,MAAM,CAAC,MAAM,wBAAwB,GAA4C,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC1H,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEtE,OAAO,CACL,MAAC,OAAO,IAAC,UAAU,EAAC,SAAS,KAAK,KAAK,aACpC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChB,MAAC,OAAO,IAAC,MAAM,EAAE,CAAC,EAAE,cAAc,EAAC,YAAY,aAC7C,KAAC,UAAU,8BAAyB,EACpC,KAAC,cAAc,IAAC,KAAK,EAAC,aAAa,qEAAsE,IACjG,CACX,EACD,MAAC,OAAO,eACN,KAAC,WAAW,IAAC,UAAU,QAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAC,OAAO,YAC3F,KAAC,UAAU,IAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YACtH,cAAc,EAAE,WAAW,IAAI,EAAE,GACvB,GACD,EACd,KAAC,UAAU,cACT,KAAC,eAAe,KAAG,GACR,IACL,EACT,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,OAAO,IAAC,MAAM,EAAE,CAAC,EAAE,cAAc,EAAC,YAAY,YAC7C,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,sHAAmH,GACtI,CACX,CAAC,CAAC,CAAC,IAAI,IACA,CACX,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"HashSourceDetails.js","sourceRoot":"","sources":["../../../../src/components/Details/HashSourceDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,EAAgB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAOpE,MAAM,CAAC,MAAM,wBAAwB,GAA4C,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC1H,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEtE,OAAO,CACL,MAAC,OAAO,IAAC,UAAU,EAAC,SAAS,KAAK,KAAK,aACpC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChB,MAAC,OAAO,IAAC,MAAM,EAAE,CAAC,EAAE,cAAc,EAAC,YAAY,aAC7C,KAAC,UAAU,8BAAyB,EACpC,KAAC,cAAc,IAAC,KAAK,EAAC,aAAa,qEAAsE,IACjG,CACX,EACD,MAAC,OAAO,eACN,KAAC,WAAW,IAAC,UAAU,QAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAC,OAAO,YAC3F,KAAC,UAAU,IAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YACtH,cAAc,EAAE,WAAW,IAAI,EAAE,GACvB,GACD,EACd,KAAC,UAAU,cACT,KAAC,eAAe,KAAG,GACR,IACL,EACT,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,OAAO,IAAC,MAAM,EAAE,CAAC,EAAE,cAAc,EAAC,YAAY,YAC7C,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,sHAAmH,GACtI,CACX,CAAC,CAAC,CAAC,IAAI,IACA,CACX,CAAA;AACH,CAAC,CAAA"}
@@ -1,5 +1,8 @@
1
1
  import { XyoApiError } from '@xyo-network/api';
2
2
  import { Huri, XyoPayload } from '@xyo-network/payload';
3
3
  import { FetchHuriHashOptions } from './lib';
4
- declare const useHuriHash: (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions) => [XyoPayload | undefined, boolean, XyoApiError | undefined];
4
+ /**
5
+ * Resolve a hash or a huri regardless of network
6
+ */
7
+ declare const useHuriHash: (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions) => [XyoPayload | undefined, boolean | undefined, XyoApiError | undefined, boolean | undefined];
5
8
  export { useHuriHash };
@@ -2,6 +2,9 @@ import { Huri } from '@xyo-network/payload';
2
2
  import { useCallback } from 'react';
3
3
  import { usePayload } from './usePayload';
4
4
  import { useResolveHuri } from './useResolveHuri';
5
+ /**
6
+ * Resolve a hash or a huri regardless of network
7
+ */
5
8
  const useHuriHash = (huriOrHash, huriUri, options) => {
6
9
  const hash = useCallback((huriOrHash) => {
7
10
  if (huriOrHash) {
@@ -13,9 +16,12 @@ const useHuriHash = (huriOrHash, huriUri, options) => {
13
16
  }
14
17
  }
15
18
  }, []);
16
- const [payload, notFound, apiError] = usePayload(hash(huriOrHash));
17
- const [huriPayload, huriPayloadNotFound, huriApiError] = useResolveHuri(huriUri, notFound, options);
18
- return [payload ?? huriPayload, huriPayloadNotFound, apiError ?? huriApiError];
19
+ const foundHash = hash(huriOrHash);
20
+ // Optimistically try to grab the has from the current network and archive
21
+ const [payload, notFound, apiError] = usePayload(foundHash);
22
+ // If payload isn't found, fallback to the huriUri
23
+ const [huriPayload, huriPayloadNotFound, huriApiError, networkNotFound] = useResolveHuri(huriUri, notFound, options);
24
+ return [payload ?? huriPayload, huriPayloadNotFound, apiError ?? huriApiError, networkNotFound];
19
25
  };
20
26
  export { useHuriHash };
21
27
  //# sourceMappingURL=useHuriHash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHuriHash.js","sourceRoot":"","sources":["../../../src/hooks/useHuriHash.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAc,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,WAAW,GAAG,CAAC,UAA0B,EAAE,OAAgB,EAAE,OAA8B,EAA8D,EAAE;IAC/J,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,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAClE,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEnG,OAAO,CAAC,OAAO,IAAI,WAAW,EAAE,mBAAmB,EAAE,QAAQ,IAAI,YAAY,CAAC,CAAA;AAChF,CAAC,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"useHuriHash.js","sourceRoot":"","sources":["../../../src/hooks/useHuriHash.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAc,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,GAAG,CAClB,UAA0B,EAC1B,OAAgB,EAChB,OAA8B,EAC+D,EAAE;IAC/F,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,3 +1,3 @@
1
1
  import { XyoApiError } from '@xyo-network/api';
2
2
  import { XyoPayload } from '@xyo-network/payload';
3
- export declare const usePayload: (hash?: string) => [XyoPayload | undefined, boolean, XyoApiError | undefined];
3
+ export declare const usePayload: (hash?: string) => [XyoPayload | undefined, boolean | undefined, XyoApiError | undefined];
@@ -5,22 +5,22 @@ import { useState } from 'react';
5
5
  export const usePayload = (hash) => {
6
6
  const { api } = useArchivistApi();
7
7
  const { archive } = useArchive();
8
- const [notFound, setNotFound] = useState(false);
8
+ const [notFound, setNotFound] = useState();
9
9
  const [apiError, setApiError] = useState();
10
10
  const [payload, setPayload] = useState();
11
11
  const reset = () => {
12
12
  setPayload(undefined);
13
13
  setApiError(undefined);
14
- setNotFound(false);
14
+ setNotFound(undefined);
15
15
  };
16
16
  useAsyncEffect(
17
17
  // eslint-disable-next-line react-hooks/exhaustive-deps
18
18
  async (mounted) => {
19
19
  if (api && hash && hash.length > 0) {
20
20
  try {
21
+ reset();
21
22
  const result = await api?.archive(archive).payload.hash(hash).get();
22
23
  if (mounted()) {
23
- reset();
24
24
  if (result?.length) {
25
25
  setPayload(result[0]);
26
26
  }
@@ -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;AAEhC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAa,EAA8D,EAAE;IACtG,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,CAAC,KAAK,CAAC,CAAA;IAC/C,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,KAAK,CAAC,CAAA;IACpB,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,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,KAAK,EAAE,CAAA;oBACP,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,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAa,EAA0E,EAAE;IAClH,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,5 +1,5 @@
1
1
  import { XyoApiError } from '@xyo-network/api';
2
2
  import { XyoPayload } from '@xyo-network/payload';
3
3
  import { FetchHuriHashOptions } from './lib';
4
- declare const useResolveHuri: (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions) => [XyoPayload | undefined, boolean, XyoApiError | undefined];
4
+ declare const useResolveHuri: (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions) => [XyoPayload | undefined, boolean | undefined, XyoApiError | undefined, boolean | undefined];
5
5
  export { useResolveHuri };
@@ -1,34 +1,37 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared';
2
2
  import { Huri } from '@xyo-network/payload';
3
3
  import { useNetwork } from '@xyo-network/react-network';
4
- import { useState } from 'react';
4
+ import { useEffect, useState } from 'react';
5
5
  import { findHuriNetwork } from './lib';
6
6
  const useResolveHuri = (huriUri, dependentNotFound, options) => {
7
7
  const { network, networks, setNetwork } = useNetwork();
8
- const [huriNetwork, setHuriNetwork] = useState();
9
8
  const [huriPayload, setHuriPayload] = useState();
10
- const [huriPayloadNotFound, setHuriPayloadNotFound] = useState(false);
9
+ const [huriPayloadNotFound, setHuriPayloadNotFound] = useState();
10
+ const [huriNetworkNotFound, setHuriNetworkNotFound] = useState();
11
11
  const [huriApiError, setHuriApiError] = useState();
12
12
  const { changeActiveNetwork } = options ?? {};
13
+ useEffect(() => {
14
+ // Initially, sync local not found with dependent's status
15
+ setHuriPayloadNotFound(dependentNotFound);
16
+ }, [dependentNotFound]);
13
17
  useAsyncEffect(
14
18
  // eslint-disable-next-line react-hooks/exhaustive-deps
15
19
  async (mounted) => {
16
- if ((dependentNotFound === undefined || dependentNotFound) && huriUri && network !== huriNetwork) {
20
+ // if dependent value is resolved, don't do anything, if not resolved, try to resolve huriUri
21
+ if ((dependentNotFound === undefined || dependentNotFound) && huriUri) {
17
22
  const huriInstance = new Huri(huriUri);
18
23
  const foundHuriNetwork = findHuriNetwork(huriInstance, networks);
19
- // Update when we found a huri network and it doesn't match the current one
20
24
  if (foundHuriNetwork && mounted()) {
21
- setHuriNetwork(huriNetwork);
22
25
  if (network !== foundHuriNetwork && changeActiveNetwork) {
23
26
  setNetwork?.(foundHuriNetwork);
24
27
  return;
25
28
  }
26
- // If no matching network try to resolve the huri itself
27
29
  try {
28
30
  const huriPayload = await huriInstance.fetch();
29
31
  if (mounted()) {
30
32
  if (huriPayload) {
31
33
  setHuriPayload(huriPayload);
34
+ setHuriPayloadNotFound(false);
32
35
  }
33
36
  else {
34
37
  setHuriPayloadNotFound(true);
@@ -41,9 +44,12 @@ const useResolveHuri = (huriUri, dependentNotFound, options) => {
41
44
  }
42
45
  }
43
46
  }
47
+ else {
48
+ setHuriNetworkNotFound(true);
49
+ }
44
50
  }
45
- }, [huriNetwork, huriUri, network, networks, dependentNotFound, setNetwork, changeActiveNetwork]);
46
- return [huriPayload, huriPayloadNotFound, huriApiError];
51
+ }, [huriUri, network, networks, dependentNotFound, setNetwork, changeActiveNetwork]);
52
+ return [huriPayload, huriPayloadNotFound, huriApiError, huriNetworkNotFound];
47
53
  };
48
54
  export { useResolveHuri };
49
55
  //# sourceMappingURL=useResolveHuri.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useResolveHuri.js","sourceRoot":"","sources":["../../../src/hooks/useResolveHuri.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,IAAI,EAAc,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAwB,eAAe,EAAE,MAAM,OAAO,CAAA;AAE7D,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,iBAA2B,EAAE,OAA8B,EAA8D,EAAE;IACnK,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAA;IACtD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAqB,CAAA;IACnE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAc,CAAA;IAC5D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAe,CAAA;IAE/D,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAE7C,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,CAAC,IAAI,OAAO,IAAI,OAAO,KAAK,WAAW,EAAE;YAChG,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;YAEtC,MAAM,gBAAgB,GAAG,eAAe,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;YAEhE,2EAA2E;YAC3E,IAAI,gBAAgB,IAAI,OAAO,EAAE,EAAE;gBACjC,cAAc,CAAC,WAAW,CAAC,CAAA;gBAC3B,IAAI,OAAO,KAAK,gBAAgB,IAAI,mBAAmB,EAAE;oBACvD,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAA;oBAC9B,OAAM;iBACP;gBAED,wDAAwD;gBACxD,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;yBAC5B;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;SACF;IACH,CAAC,EACD,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAC9F,CAAA;IAED,OAAO,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAA;AACzD,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;AAE7D,MAAM,cAAc,GAAG,CACrB,OAAgB,EAChB,iBAA2B,EAC3B,OAA8B,EAC+D,EAAE;IAC/F,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"}
package/package.json CHANGED
@@ -13,23 +13,22 @@
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.6",
17
- "@xylabs/react-button": "^2.14.4",
18
- "@xylabs/react-common": "^2.14.4",
19
- "@xylabs/react-flexbox": "^2.14.4",
20
- "@xylabs/react-shared": "^2.14.4",
21
- "@xyo-network/api": "^2.21.13",
22
- "@xyo-network/core": "^2.21.13",
23
- "@xyo-network/network": "^2.21.13",
24
- "@xyo-network/payload": "^2.21.13",
25
- "@xyo-network/react-archive": "^2.26.8",
26
- "@xyo-network/react-archivist-api": "^2.26.8",
27
- "@xyo-network/react-auth-service": "^2.26.8",
28
- "@xyo-network/react-network": "^2.26.8",
29
- "@xyo-network/react-property": "^2.26.8",
30
- "@xyo-network/react-schema": "^2.26.8",
31
- "@xyo-network/react-shared": "^2.26.8",
32
- "@xyo-network/utils": "^2.21.13",
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.11",
25
+ "@xyo-network/react-archivist-api": "^2.26.11",
26
+ "@xyo-network/react-auth-service": "^2.26.11",
27
+ "@xyo-network/react-network": "^2.26.11",
28
+ "@xyo-network/react-property": "^2.26.11",
29
+ "@xyo-network/react-schema": "^2.26.11",
30
+ "@xyo-network/react-shared": "^2.26.11",
31
+ "@xyo-network/utils": "^2.21.14",
33
32
  "luxon": "^2.4.0",
34
33
  "react": "^18.2.0",
35
34
  "react-dom": "^18.2.0",
@@ -40,8 +39,8 @@
40
39
  },
41
40
  "description": "Common React library for all XYO projects that use React",
42
41
  "devDependencies": {
43
- "@babel/core": "^7.18.5",
44
- "@babel/preset-env": "^7.18.2",
42
+ "@babel/core": "^7.18.6",
43
+ "@babel/preset-env": "^7.18.6",
45
44
  "@storybook/react": "^6.5.9",
46
45
  "@types/luxon": "^2.3.2",
47
46
  "@xylabs/tsconfig": "^1.0.14"
@@ -95,6 +94,6 @@
95
94
  },
96
95
  "sideEffects": false,
97
96
  "types": "dist/esm/index.d.ts",
98
- "version": "2.26.8",
97
+ "version": "2.26.11",
99
98
  "packageManager": "yarn@3.1.1"
100
99
  }
@@ -1,7 +1,7 @@
1
1
  import ContentCopyIcon from '@mui/icons-material/ContentCopy'
2
2
  import { IconButton, Typography, useTheme } from '@mui/material'
3
- import { QuickTipButton } from '@xylabs/react-common'
4
3
  import { FlexBoxProps, FlexCol, FlexGrowRow, FlexRow } from '@xylabs/react-flexbox'
4
+ import { QuickTipButton } from '@xylabs/react-quick-tip-button'
5
5
  import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
6
6
 
7
7
  export interface PayloadHashSourceDetailsProps extends FlexBoxProps {
@@ -1,39 +1,63 @@
1
1
  /* eslint-disable import/no-internal-modules */
2
- import { Typography } from '@mui/material'
2
+ import { Alert, Typography } from '@mui/material'
3
3
  import { ComponentStory, Meta } from '@storybook/react'
4
- import { FlexCol } from '@xylabs/react-flexbox'
4
+ import { ButtonEx } from '@xylabs/react-button'
5
+ import { FlexCol, FlexRow } from '@xylabs/react-flexbox'
5
6
  import { Huri } from '@xyo-network/payload'
7
+ import { ArchivistApiProvider } from '@xyo-network/react-archivist-api'
8
+ import { NetworkMemoryProvider } from '@xyo-network/react-network'
6
9
  import { XyoSchemaCache } from '@xyo-network/utils'
7
- import { lazy, Suspense } from 'react'
10
+ import { lazy, Suspense, useState } from 'react'
8
11
 
9
- import { ArchivistApiProvider } from '../../../archivist-api/src'
12
+ import { FetchHuriHashOptions } from './lib'
10
13
  import { useHuriHash } from './useHuriHash'
11
14
 
12
15
  const JsonView = lazy(() => import(/* webpackChunkName: "jsonView" */ 'react-json-view'))
13
16
 
14
17
  interface UseHuriHashComponentProps {
15
18
  huriOrHash: string | Huri
19
+ huriUri?: string
20
+ options?: FetchHuriHashOptions
21
+ reTestable?: boolean
16
22
  }
17
23
 
18
24
  const apiDomain = 'https://beta.api.archivist.xyo.network'
19
25
  const hash = '5605fabad11b10bb5fb86b309ca0970894eda8f22362dda1a489817723bca992'
20
26
  XyoSchemaCache.instance.proxy = `${apiDomain}/domain`
21
27
 
22
- const Wrapper: React.FC<UseHuriHashComponentProps> = ({ huriOrHash }) => (
23
- <ArchivistApiProvider apiDomain={apiDomain}>
24
- <UseHuriHashComponent huriOrHash={huriOrHash} />
25
- </ArchivistApiProvider>
28
+ const mainApiDomain = 'https://api.archivist.xyo.network'
29
+ const mainHash = 'd3a3936e31ba1d835c528784ab77c1eaaeedd6e16b7aad68a88241ce539853cb'
30
+
31
+ const Wrapper: React.FC<UseHuriHashComponentProps> = (props) => (
32
+ <NetworkMemoryProvider>
33
+ <ArchivistApiProvider apiDomain={apiDomain}>
34
+ <UseHuriHashComponent {...props} />
35
+ </ArchivistApiProvider>
36
+ </NetworkMemoryProvider>
26
37
  )
27
38
 
28
- const UseHuriHashComponent: React.FC<UseHuriHashComponentProps> = ({ huriOrHash }) => {
29
- const [payload] = useHuriHash(huriOrHash)
39
+ const UseHuriHashComponent: React.FC<UseHuriHashComponentProps> = ({ huriOrHash, huriUri, options, reTestable }) => {
40
+ const [trigger, setTrigger] = useState<string | Huri>(huriOrHash)
41
+ const [payload, notFound, , networkNotFound] = useHuriHash(trigger, huriUri, options)
30
42
 
31
43
  return (
32
44
  <>
33
45
  <Typography variant="body1" fontWeight="bold">
34
46
  Fetches the payload for a huriOrHash.
35
47
  </Typography>
48
+ {reTestable ? (
49
+ <FlexRow columnGap={2}>
50
+ <ButtonEx variant="contained" onClick={() => setTrigger(hash)}>
51
+ Fetch Valid Hash
52
+ </ButtonEx>
53
+ <ButtonEx variant="contained" onClick={() => setTrigger('foo')}>
54
+ Hash Not Found
55
+ </ButtonEx>
56
+ </FlexRow>
57
+ ) : null}
36
58
  <FlexCol my={3}>
59
+ {notFound ? <Alert severity="warning">Not Found</Alert> : null}
60
+ {networkNotFound ? <Alert severity="warning">Network Not Found</Alert> : null}
37
61
  <Suspense fallback={<FlexCol busy />}>
38
62
  <JsonView src={payload || {}} />
39
63
  </Suspense>
@@ -53,17 +77,31 @@ const StorybookEntry: Meta = {
53
77
  title: 'payload/useHuriHash',
54
78
  }
55
79
 
56
- const Template: ComponentStory<typeof UseHuriHashComponent> = ({ huriOrHash }) => {
57
- return <Wrapper huriOrHash={huriOrHash} />
80
+ const Template: ComponentStory<typeof UseHuriHashComponent> = (props) => {
81
+ return <Wrapper {...props} />
58
82
  }
59
83
 
60
84
  const Default = Template.bind({})
61
85
  Default.args = { huriOrHash: hash }
62
86
 
87
+ const NotFound = Template.bind({})
88
+ NotFound.args = { huriOrHash: 'foo', reTestable: true }
89
+
63
90
  const WithHuri = Template.bind({})
64
91
  WithHuri.args = { huriOrHash: new Huri(`${apiDomain}/${hash}`) }
65
92
 
66
- export { Default, WithHuri }
93
+ const WithHuriUri = Template.bind({})
94
+ WithHuriUri.args = { huriUri: `${mainApiDomain}/${mainHash}` }
95
+
96
+ const WithHuriUriNetworkNotFound = Template.bind({})
97
+ WithHuriUriNetworkNotFound.args = { huriUri: `http://badarchivisturl.com/${mainHash}` }
98
+
99
+ // Note - story will work correctly once main net return 200 instead of 404 when payloads aren't found
100
+ // Resolve huriUri when network is different from the current network
101
+ const WithHuriUriNotFound = Template.bind({})
102
+ WithHuriUriNotFound.args = { huriUri: `${mainApiDomain}/foo` }
103
+
104
+ export { Default, NotFound, WithHuri, WithHuriUri, WithHuriUriNetworkNotFound, WithHuriUriNotFound }
67
105
 
68
106
  // eslint-disable-next-line import/no-default-export
69
107
  export default StorybookEntry
@@ -6,7 +6,14 @@ import { FetchHuriHashOptions } from './lib'
6
6
  import { usePayload } from './usePayload'
7
7
  import { useResolveHuri } from './useResolveHuri'
8
8
 
9
- const useHuriHash = (huriOrHash?: string | Huri, huriUri?: string, options?: FetchHuriHashOptions): [XyoPayload | undefined, boolean, XyoApiError | undefined] => {
9
+ /**
10
+ * Resolve a hash or a huri regardless of network
11
+ */
12
+ const useHuriHash = (
13
+ huriOrHash?: string | Huri,
14
+ huriUri?: string,
15
+ options?: FetchHuriHashOptions
16
+ ): [XyoPayload | undefined, boolean | undefined, XyoApiError | undefined, boolean | undefined] => {
10
17
  const hash = useCallback((huriOrHash?: string | Huri) => {
11
18
  if (huriOrHash) {
12
19
  if (typeof huriOrHash === 'string') {
@@ -18,10 +25,15 @@ const useHuriHash = (huriOrHash?: string | Huri, huriUri?: string, options?: Fet
18
25
  }
19
26
  }, [])
20
27
 
21
- const [payload, notFound, apiError] = usePayload(hash(huriOrHash))
22
- const [huriPayload, huriPayloadNotFound, huriApiError] = useResolveHuri(huriUri, notFound, options)
28
+ const foundHash = hash(huriOrHash)
23
29
 
24
- return [payload ?? huriPayload, huriPayloadNotFound, apiError ?? huriApiError]
30
+ // Optimistically try to grab the has from the current network and archive
31
+ const [payload, notFound, apiError] = usePayload(foundHash)
32
+
33
+ // If payload isn't found, fallback to the huriUri
34
+ const [huriPayload, huriPayloadNotFound, huriApiError, networkNotFound] = useResolveHuri(huriUri, notFound, options)
35
+
36
+ return [payload ?? huriPayload, huriPayloadNotFound, apiError ?? huriApiError, networkNotFound]
25
37
  }
26
38
 
27
39
  export { useHuriHash }
@@ -5,17 +5,17 @@ import { useArchive } from '@xyo-network/react-archive'
5
5
  import { useArchivistApi } from '@xyo-network/react-archivist-api'
6
6
  import { useState } from 'react'
7
7
 
8
- export const usePayload = (hash?: string): [XyoPayload | undefined, boolean, XyoApiError | undefined] => {
8
+ export const usePayload = (hash?: string): [XyoPayload | undefined, boolean | undefined, XyoApiError | undefined] => {
9
9
  const { api } = useArchivistApi()
10
10
  const { archive } = useArchive()
11
- const [notFound, setNotFound] = useState(false)
11
+ const [notFound, setNotFound] = useState<boolean>()
12
12
  const [apiError, setApiError] = useState<XyoApiError>()
13
13
  const [payload, setPayload] = useState<XyoPayload>()
14
14
 
15
15
  const reset = () => {
16
16
  setPayload(undefined)
17
17
  setApiError(undefined)
18
- setNotFound(false)
18
+ setNotFound(undefined)
19
19
  }
20
20
 
21
21
  useAsyncEffect(
@@ -23,9 +23,9 @@ export const usePayload = (hash?: string): [XyoPayload | undefined, boolean, Xyo
23
23
  async (mounted) => {
24
24
  if (api && hash && hash.length > 0) {
25
25
  try {
26
+ reset()
26
27
  const result = await api?.archive(archive).payload.hash(hash).get()
27
28
  if (mounted()) {
28
- reset()
29
29
  if (result?.length) {
30
30
  setPayload(result[0])
31
31
  } else if (result) {
@@ -1,43 +1,50 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared'
2
2
  import { XyoApiError } from '@xyo-network/api'
3
- import { XyoNetworkPayload } from '@xyo-network/network'
4
3
  import { Huri, XyoPayload } from '@xyo-network/payload'
5
4
  import { useNetwork } from '@xyo-network/react-network'
6
- import { useState } from 'react'
5
+ import { useEffect, useState } from 'react'
7
6
 
8
7
  import { FetchHuriHashOptions, findHuriNetwork } from './lib'
9
8
 
10
- const useResolveHuri = (huriUri?: string, dependentNotFound?: boolean, options?: FetchHuriHashOptions): [XyoPayload | undefined, boolean, XyoApiError | undefined] => {
9
+ const useResolveHuri = (
10
+ huriUri?: string,
11
+ dependentNotFound?: boolean,
12
+ options?: FetchHuriHashOptions
13
+ ): [XyoPayload | undefined, boolean | undefined, XyoApiError | undefined, boolean | undefined] => {
11
14
  const { network, networks, setNetwork } = useNetwork()
12
- const [huriNetwork, setHuriNetwork] = useState<XyoNetworkPayload>()
13
15
  const [huriPayload, setHuriPayload] = useState<XyoPayload>()
14
- const [huriPayloadNotFound, setHuriPayloadNotFound] = useState(false)
16
+ const [huriPayloadNotFound, setHuriPayloadNotFound] = useState<boolean>()
17
+ const [huriNetworkNotFound, setHuriNetworkNotFound] = useState<boolean>()
15
18
  const [huriApiError, setHuriApiError] = useState<XyoApiError>()
16
19
 
17
20
  const { changeActiveNetwork } = options ?? {}
18
21
 
22
+ useEffect(() => {
23
+ // Initially, sync local not found with dependent's status
24
+ setHuriPayloadNotFound(dependentNotFound)
25
+ }, [dependentNotFound])
26
+
19
27
  useAsyncEffect(
20
28
  // eslint-disable-next-line react-hooks/exhaustive-deps
21
29
  async (mounted) => {
22
- if ((dependentNotFound === undefined || dependentNotFound) && huriUri && network !== huriNetwork) {
30
+ // if dependent value is resolved, don't do anything, if not resolved, try to resolve huriUri
31
+ if ((dependentNotFound === undefined || dependentNotFound) && huriUri) {
23
32
  const huriInstance = new Huri(huriUri)
24
33
 
25
34
  const foundHuriNetwork = findHuriNetwork(huriInstance, networks)
26
35
 
27
- // Update when we found a huri network and it doesn't match the current one
28
36
  if (foundHuriNetwork && mounted()) {
29
- setHuriNetwork(huriNetwork)
30
37
  if (network !== foundHuriNetwork && changeActiveNetwork) {
31
38
  setNetwork?.(foundHuriNetwork)
32
39
  return
33
40
  }
34
41
 
35
- // If no matching network try to resolve the huri itself
36
42
  try {
37
43
  const huriPayload = await huriInstance.fetch()
38
44
  if (mounted()) {
39
45
  if (huriPayload) {
40
46
  setHuriPayload(huriPayload)
47
+ setHuriPayloadNotFound(false)
41
48
  } else {
42
49
  setHuriPayloadNotFound(true)
43
50
  }
@@ -47,13 +54,15 @@ const useResolveHuri = (huriUri?: string, dependentNotFound?: boolean, options?:
47
54
  setHuriApiError(e as XyoApiError)
48
55
  }
49
56
  }
57
+ } else {
58
+ setHuriNetworkNotFound(true)
50
59
  }
51
60
  }
52
61
  },
53
- [huriNetwork, huriUri, network, networks, dependentNotFound, setNetwork, changeActiveNetwork]
62
+ [huriUri, network, networks, dependentNotFound, setNetwork, changeActiveNetwork]
54
63
  )
55
64
 
56
- return [huriPayload, huriPayloadNotFound, huriApiError]
65
+ return [huriPayload, huriPayloadNotFound, huriApiError, huriNetworkNotFound]
57
66
  }
58
67
 
59
68
  export { useResolveHuri }