@sundaeswap/wallet-lite 0.0.33 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/cjs/classes/WalletObserver.class.js +13 -22
  2. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  3. package/dist/cjs/react-components/RenderWallet.js +18 -3
  4. package/dist/cjs/react-components/RenderWallet.js.map +1 -1
  5. package/dist/cjs/react-components/RenderWalletHandles.js +18 -3
  6. package/dist/cjs/react-components/RenderWalletHandles.js.map +1 -1
  7. package/dist/cjs/react-components/RenderWalletPeerConnect.js +14 -3
  8. package/dist/cjs/react-components/RenderWalletPeerConnect.js.map +1 -1
  9. package/dist/cjs/react-components/RenderWalletState.js +17 -3
  10. package/dist/cjs/react-components/RenderWalletState.js.map +1 -1
  11. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js +7 -0
  12. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  13. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +63 -49
  14. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  15. package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
  16. package/dist/cjs/react-components/hooks/useWalletHandles.js +111 -107
  17. package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
  18. package/dist/cjs/react-components/hooks/useWalletLoadingState.js +13 -5
  19. package/dist/cjs/react-components/hooks/useWalletLoadingState.js.map +1 -1
  20. package/dist/cjs/react-components/hooks/useWalletObserver.js +3 -1
  21. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
  22. package/dist/cjs/react-components/hooks/useWalletPeerConnect.js +13 -4
  23. package/dist/cjs/react-components/hooks/useWalletPeerConnect.js.map +1 -1
  24. package/dist/cjs/utils/getLibs.js +18 -35
  25. package/dist/cjs/utils/getLibs.js.map +1 -1
  26. package/dist/esm/classes/WalletObserver.class.js +9 -29
  27. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  28. package/dist/esm/react-components/RenderWallet.js +19 -4
  29. package/dist/esm/react-components/RenderWallet.js.map +1 -1
  30. package/dist/esm/react-components/RenderWalletHandles.js +21 -6
  31. package/dist/esm/react-components/RenderWalletHandles.js.map +1 -1
  32. package/dist/esm/react-components/RenderWalletPeerConnect.js +16 -5
  33. package/dist/esm/react-components/RenderWalletPeerConnect.js.map +1 -1
  34. package/dist/esm/react-components/RenderWalletState.js +19 -6
  35. package/dist/esm/react-components/RenderWalletState.js.map +1 -1
  36. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js +8 -1
  37. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  38. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +34 -29
  39. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  40. package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
  41. package/dist/esm/react-components/hooks/useWalletHandles.js +46 -51
  42. package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
  43. package/dist/esm/react-components/hooks/useWalletLoadingState.js +5 -5
  44. package/dist/esm/react-components/hooks/useWalletLoadingState.js.map +1 -1
  45. package/dist/esm/react-components/hooks/useWalletObserver.js +3 -1
  46. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
  47. package/dist/esm/react-components/hooks/useWalletPeerConnect.js +13 -3
  48. package/dist/esm/react-components/hooks/useWalletPeerConnect.js.map +1 -1
  49. package/dist/esm/utils/getLibs.js +12 -20
  50. package/dist/esm/utils/getLibs.js.map +1 -1
  51. package/dist/types/classes/WalletObserver.class.d.ts +2 -2
  52. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  53. package/dist/types/react-components/RenderWallet.d.ts +3 -1
  54. package/dist/types/react-components/RenderWallet.d.ts.map +1 -1
  55. package/dist/types/react-components/RenderWalletHandles.d.ts +3 -1
  56. package/dist/types/react-components/RenderWalletHandles.d.ts.map +1 -1
  57. package/dist/types/react-components/RenderWalletPeerConnect.d.ts +3 -1
  58. package/dist/types/react-components/RenderWalletPeerConnect.d.ts.map +1 -1
  59. package/dist/types/react-components/RenderWalletState.d.ts +3 -1
  60. package/dist/types/react-components/RenderWalletState.d.ts.map +1 -1
  61. package/dist/types/react-components/WalletObserverProvider/WalletObserverProvider.d.ts.map +1 -1
  62. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +9 -8
  63. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  64. package/dist/types/react-components/contexts/observer/types.d.ts +9 -31
  65. package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
  66. package/dist/types/react-components/hooks/useWalletHandles.d.ts.map +1 -1
  67. package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
  68. package/dist/types/react-components/hooks/useWalletPeerConnect.d.ts +1 -0
  69. package/dist/types/react-components/hooks/useWalletPeerConnect.d.ts.map +1 -1
  70. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  71. package/dist/types/utils/getLibs.d.ts +2 -6
  72. package/dist/types/utils/getLibs.d.ts.map +1 -1
  73. package/package.json +1 -1
  74. package/src/classes/WalletObserver.class.ts +11 -23
  75. package/src/react-components/RenderWallet.tsx +21 -3
  76. package/src/react-components/RenderWalletHandles.tsx +20 -2
  77. package/src/react-components/RenderWalletPeerConnect.tsx +16 -3
  78. package/src/react-components/RenderWalletState.tsx +24 -8
  79. package/src/react-components/WalletObserverProvider/WalletObserverProvider.tsx +14 -1
  80. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +70 -59
  81. package/src/react-components/contexts/observer/types.ts +13 -38
  82. package/src/react-components/hooks/useWalletHandles.ts +82 -76
  83. package/src/react-components/hooks/useWalletLoadingState.ts +5 -5
  84. package/src/react-components/hooks/useWalletObserver.ts +2 -0
  85. package/src/react-components/hooks/useWalletPeerConnect.tsx +18 -5
  86. package/src/utils/getLibs.ts +12 -11
@@ -1 +1 @@
1
- {"version":3,"file":"RenderWalletPeerConnect.js","names":["ErrorBoundary","useWalletObserver","useWalletPeerConnect","jsx","_jsx","RenderWalletPeerConnect","render","state","peerConnectState","peerConnect","fallback","children","error"],"sources":["../../../src/react-components/RenderWalletPeerConnect.tsx"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { FC, ReactNode } from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport { useWalletObserver } from \"./hooks/useWalletObserver.js\";\nimport { useWalletPeerConnect } from \"./hooks/useWalletPeerConnect.js\";\n\nexport type TRenderWalletPeerConnectFunctionState<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = ReturnType<typeof useWalletObserver<T>> &\n ReturnType<typeof useWalletPeerConnect<T>>;\n\nexport type TRenderWalletPeerConnectFunction = (\n state: TRenderWalletPeerConnectFunctionState\n) => ReactNode;\n\nexport interface IRenderWalletPeerConnectProps {\n render: TRenderWalletPeerConnectFunction;\n}\n\n/**\n * This component is responsible for generating CIP-45 utilities\n * and exposing them to the render function, including a QR Code\n * element that can be placed in the consuming app.\n */\nexport const RenderWalletPeerConnect: FC<IRenderWalletPeerConnectProps> = ({\n render,\n}) => {\n const state = useWalletObserver();\n const peerConnectState = useWalletPeerConnect();\n\n if (!peerConnectState.peerConnect) {\n return null;\n }\n\n return (\n <ErrorBoundary fallback={<p>{peerConnectState.error}</p>}>\n {render({ ...state, ...peerConnectState })}\n </ErrorBoundary>\n );\n};\n"],"mappings":"AAEA,SAASA,aAAa,QAAQ,sBAAsB;AAEpD,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,oBAAoB,QAAQ,iCAAiC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAevE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAA0D,GAAGA,CAAC;EACzEC;AACF,CAAC,KAAK;EACJ,MAAMC,KAAK,GAAGN,iBAAiB,CAAC,CAAC;EACjC,MAAMO,gBAAgB,GAAGN,oBAAoB,CAAC,CAAC;EAE/C,IAAI,CAACM,gBAAgB,CAACC,WAAW,EAAE;IACjC,OAAO,IAAI;EACb;EAEA,oBACEL,IAAA,CAACJ,aAAa;IAACU,QAAQ,eAAEN,IAAA;MAAAO,QAAA,EAAIH,gBAAgB,CAACI;IAAK,CAAI,CAAE;IAAAD,QAAA,EACtDL,MAAM,CAAC;MAAE,GAAGC,KAAK;MAAE,GAAGC;IAAiB,CAAC;EAAC,CAC7B,CAAC;AAEpB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"RenderWalletPeerConnect.js","names":["Suspense","ErrorBoundary","useWalletObserver","useWalletPeerConnect","jsx","_jsx","RenderWalletPeerConnect","render","loader","fallback","state","peerConnectState","peerConnect","children","error","onError","observer","getOptions","debug","console","log","message","stack"],"sources":["../../../src/react-components/RenderWalletPeerConnect.tsx"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { FC, ReactElement, ReactNode, Suspense } from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport { useWalletObserver } from \"./hooks/useWalletObserver.js\";\nimport { useWalletPeerConnect } from \"./hooks/useWalletPeerConnect.js\";\n\nexport type TRenderWalletPeerConnectFunctionState<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = ReturnType<typeof useWalletObserver<T>> &\n ReturnType<typeof useWalletPeerConnect<T>>;\n\nexport type TRenderWalletPeerConnectFunction = (\n state: TRenderWalletPeerConnectFunctionState\n) => ReactNode;\n\nexport interface IRenderWalletPeerConnectProps {\n render: TRenderWalletPeerConnectFunction;\n loader?: ReactNode;\n fallback?: ReactElement;\n}\n\n/**\n * This component is responsible for generating CIP-45 utilities\n * and exposing them to the render function, including a QR Code\n * element that can be placed in the consuming app.\n */\nexport const RenderWalletPeerConnect: FC<IRenderWalletPeerConnectProps> = ({\n render,\n loader,\n fallback,\n}) => {\n const state = useWalletObserver();\n const peerConnectState = useWalletPeerConnect();\n\n if (!peerConnectState.peerConnect) {\n return null;\n }\n\n return (\n <ErrorBoundary\n fallback={fallback || <p>{peerConnectState.error}</p>}\n onError={(error) => {\n if (state.observer.getOptions().debug) {\n console.log(error.message, error.stack);\n }\n }}\n >\n <Suspense fallback={loader}>\n {render({ ...state, ...peerConnectState })}\n </Suspense>\n </ErrorBoundary>\n );\n};\n"],"mappings":"AACA,SAAsCA,QAAQ,QAAQ,OAAO;AAC7D,SAASC,aAAa,QAAQ,sBAAsB;AAEpD,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,oBAAoB,QAAQ,iCAAiC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiBvE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAA0D,GAAGA,CAAC;EACzEC,MAAM;EACNC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,MAAMC,KAAK,GAAGR,iBAAiB,CAAC,CAAC;EACjC,MAAMS,gBAAgB,GAAGR,oBAAoB,CAAC,CAAC;EAE/C,IAAI,CAACQ,gBAAgB,CAACC,WAAW,EAAE;IACjC,OAAO,IAAI;EACb;EAEA,oBACEP,IAAA,CAACJ,aAAa;IACZQ,QAAQ,EAAEA,QAAQ,iBAAIJ,IAAA;MAAAQ,QAAA,EAAIF,gBAAgB,CAACG;IAAK,CAAI,CAAE;IACtDC,OAAO,EAAGD,KAAK,IAAK;MAClB,IAAIJ,KAAK,CAACM,QAAQ,CAACC,UAAU,CAAC,CAAC,CAACC,KAAK,EAAE;QACrCC,OAAO,CAACC,GAAG,CAACN,KAAK,CAACO,OAAO,EAAEP,KAAK,CAACQ,KAAK,CAAC;MACzC;IACF,CAAE;IAAAT,QAAA,eAEFR,IAAA,CAACL,QAAQ;MAACS,QAAQ,EAAED,MAAO;MAAAK,QAAA,EACxBN,MAAM,CAAC;QAAE,GAAGG,KAAK;QAAE,GAAGC;MAAiB,CAAC;IAAC,CAClC;EAAC,CACE,CAAC;AAEpB,CAAC","ignoreList":[]}
@@ -1,6 +1,8 @@
1
+ import { Suspense } from "react";
2
+ import { ErrorBoundary } from "react-error-boundary";
1
3
  import { useWalletLoadingState } from "./hooks/useWalletLoadingState.js";
2
4
  import { useWalletObserver } from "./hooks/useWalletObserver.js";
3
- import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
4
6
  /**
5
7
  * This component is the same as RenderWallet, but will
6
8
  * trigger a re-render every time the WalletObserver performs
@@ -8,14 +10,25 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
8
10
  * internal operation states of the wallet.
9
11
  */
10
12
  export const RenderWalletState = ({
11
- render
13
+ render,
14
+ loader,
15
+ fallback = null
12
16
  }) => {
13
17
  const state = useWalletObserver();
14
18
  const loadingState = useWalletLoadingState();
15
- return /*#__PURE__*/_jsx(_Fragment, {
16
- children: render({
17
- ...state,
18
- ...loadingState
19
+ return /*#__PURE__*/_jsx(ErrorBoundary, {
20
+ fallback: fallback,
21
+ onError: error => {
22
+ if (state.observer.getOptions().debug) {
23
+ console.log(error.message, error.stack);
24
+ }
25
+ },
26
+ children: /*#__PURE__*/_jsx(Suspense, {
27
+ fallback: loader,
28
+ children: render({
29
+ ...state,
30
+ ...loadingState
31
+ })
19
32
  })
20
33
  });
21
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RenderWalletState.js","names":["useWalletLoadingState","useWalletObserver","Fragment","_Fragment","jsx","_jsx","RenderWalletState","render","state","loadingState","children"],"sources":["../../../src/react-components/RenderWalletState.tsx"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { FC, ReactNode } from \"react\";\n\nimport { useWalletLoadingState } from \"./hooks/useWalletLoadingState.js\";\nimport { useWalletObserver } from \"./hooks/useWalletObserver.js\";\n\nexport type TRenderWalletStateFunctionState<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = ReturnType<typeof useWalletObserver<T>> &\n ReturnType<typeof useWalletLoadingState<T>>;\n\nexport type TRenderWalletStateFunction = (\n state: TRenderWalletStateFunctionState\n) => JSX.Element | ReactNode;\n\nexport interface IRenderWalletStateProps {\n render: TRenderWalletStateFunction;\n}\n\n/**\n * This component is the same as RenderWallet, but will\n * trigger a re-render every time the WalletObserver performs\n * a sync or connection operation. Useful for displaying\n * internal operation states of the wallet.\n */\nexport const RenderWalletState: FC<IRenderWalletStateProps> = ({ render }) => {\n const state = useWalletObserver();\n const loadingState = useWalletLoadingState();\n\n return (\n <>\n {render({\n ...state,\n ...loadingState,\n })}\n </>\n );\n};\n"],"mappings":"AAGA,SAASA,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,iBAAiB,QAAQ,8BAA8B;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAejE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAA8C,GAAGA,CAAC;EAAEC;AAAO,CAAC,KAAK;EAC5E,MAAMC,KAAK,GAAGP,iBAAiB,CAAC,CAAC;EACjC,MAAMQ,YAAY,GAAGT,qBAAqB,CAAC,CAAC;EAE5C,oBACEK,IAAA,CAAAF,SAAA;IAAAO,QAAA,EACGH,MAAM,CAAC;MACN,GAAGC,KAAK;MACR,GAAGC;IACL,CAAC;EAAC,CACF,CAAC;AAEP,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"RenderWalletState.js","names":["Suspense","ErrorBoundary","useWalletLoadingState","useWalletObserver","jsx","_jsx","RenderWalletState","render","loader","fallback","state","loadingState","onError","error","observer","getOptions","debug","console","log","message","stack","children"],"sources":["../../../src/react-components/RenderWalletState.tsx"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { FC, ReactElement, ReactNode, Suspense } from \"react\";\n\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { useWalletLoadingState } from \"./hooks/useWalletLoadingState.js\";\nimport { useWalletObserver } from \"./hooks/useWalletObserver.js\";\n\nexport type TRenderWalletStateFunctionState<\n T extends IAssetAmountMetadata = IAssetAmountMetadata\n> = ReturnType<typeof useWalletObserver<T>> &\n ReturnType<typeof useWalletLoadingState<T>>;\n\nexport type TRenderWalletStateFunction = (\n state: TRenderWalletStateFunctionState\n) => JSX.Element | ReactNode;\n\nexport interface IRenderWalletStateProps {\n render: TRenderWalletStateFunction;\n loader?: ReactNode;\n fallback?: ReactElement;\n}\n\n/**\n * This component is the same as RenderWallet, but will\n * trigger a re-render every time the WalletObserver performs\n * a sync or connection operation. Useful for displaying\n * internal operation states of the wallet.\n */\nexport const RenderWalletState: FC<IRenderWalletStateProps> = ({\n render,\n loader,\n fallback = null,\n}) => {\n const state = useWalletObserver();\n const loadingState = useWalletLoadingState();\n\n return (\n <ErrorBoundary\n fallback={fallback}\n onError={(error) => {\n if (state.observer.getOptions().debug) {\n console.log(error.message, error.stack);\n }\n }}\n >\n <Suspense fallback={loader}>\n {render({\n ...state,\n ...loadingState,\n })}\n </Suspense>\n </ErrorBoundary>\n );\n};\n"],"mappings":"AACA,SAAsCA,QAAQ,QAAQ,OAAO;AAE7D,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,iBAAiB,QAAQ,8BAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiBjE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAA8C,GAAGA,CAAC;EAC7DC,MAAM;EACNC,MAAM;EACNC,QAAQ,GAAG;AACb,CAAC,KAAK;EACJ,MAAMC,KAAK,GAAGP,iBAAiB,CAAC,CAAC;EACjC,MAAMQ,YAAY,GAAGT,qBAAqB,CAAC,CAAC;EAE5C,oBACEG,IAAA,CAACJ,aAAa;IACZQ,QAAQ,EAAEA,QAAS;IACnBG,OAAO,EAAGC,KAAK,IAAK;MAClB,IAAIH,KAAK,CAACI,QAAQ,CAACC,UAAU,CAAC,CAAC,CAACC,KAAK,EAAE;QACrCC,OAAO,CAACC,GAAG,CAACL,KAAK,CAACM,OAAO,EAAEN,KAAK,CAACO,KAAK,CAAC;MACzC;IACF,CAAE;IAAAC,QAAA,eAEFhB,IAAA,CAACL,QAAQ;MAACS,QAAQ,EAAED,MAAO;MAAAa,QAAA,EACxBd,MAAM,CAAC;QACN,GAAGG,KAAK;QACR,GAAGC;MACL,CAAC;IAAC,CACM;EAAC,CACE,CAAC;AAEpB,CAAC","ignoreList":[]}
@@ -1,4 +1,5 @@
1
- import { useMemo } from "react";
1
+ import { useEffect, useMemo } from "react";
2
+ import { WalletObserver } from "../../classes/WalletObserver.class.js";
2
3
  import { WalletObserverContext } from "../contexts/observer/index.js";
3
4
  import { useDerivedState } from "./hooks/effects/useDerivedState.js";
4
5
  import { useProviderEventListeners } from "./hooks/effects/useProviderEventListeners.js";
@@ -36,6 +37,12 @@ const WalletObserverProvider = ({
36
37
  observer: observerRef.current
37
38
  }
38
39
  }), [options, state, derivedState]);
40
+ useEffect(() => {
41
+ const wallet = window.localStorage.getItem(WalletObserver.PERSISTENCE_CACHE_KEY);
42
+ if (wallet) {
43
+ state.connectWallet(JSON.parse(wallet).activeWallet);
44
+ }
45
+ }, []);
39
46
  return /*#__PURE__*/_jsx(WalletObserverContext.Provider, {
40
47
  value: contextValue,
41
48
  children: children
@@ -1 +1 @@
1
- {"version":3,"file":"WalletObserverProvider.js","names":["useMemo","WalletObserverContext","useDerivedState","useProviderEventListeners","useProviderRefreshInterval","useProviderWalletObserverRef","useWalletObserverState","jsx","_jsx","WalletObserverProvider","children","options","observerRef","observerOptions","state","current","syncWallet","refreshInterval","derivedState","usedAddresses","contextValue","observer","Provider","value"],"sources":["../../../../src/react-components/WalletObserverProvider/WalletObserverProvider.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useMemo } from \"react\";\n\nimport {\n IWalletObserverProviderProps,\n IWalletObserverState,\n WalletObserverContext,\n} from \"../contexts/observer/index.js\";\nimport { useDerivedState } from \"./hooks/effects/useDerivedState.js\";\nimport { useProviderEventListeners } from \"./hooks/effects/useProviderEventListeners.js\";\nimport { useProviderRefreshInterval } from \"./hooks/effects/useProviderRefreshInterval.js\";\nimport { useProviderWalletObserverRef } from \"./hooks/useProviderWalletObserverRef.js\";\nimport { useWalletObserverState } from \"./hooks/useWalletObserverState.js\";\n\n/**\n * The main context provider component. This handles setting up all the initial\n * state, handlers, and side effects with a new WalletObserver class.\n *\n * @param {IWalletObserverProviderProps} [options]\n * @returns {FC<PropsWithChildren<IWalletObserverProviderProps>>}\n */\nconst WalletObserverProvider: FC<\n PropsWithChildren<IWalletObserverProviderProps>\n> = ({ children, options }) => {\n const observerRef = useProviderWalletObserverRef(options?.observerOptions);\n const state = useWalletObserverState(observerRef.current);\n\n useProviderEventListeners(observerRef.current, state);\n useProviderRefreshInterval(\n observerRef.current,\n state.syncWallet,\n options?.refreshInterval\n );\n\n const derivedState = useDerivedState(observerRef.current, {\n usedAddresses: state.usedAddresses,\n });\n\n // Memoize the context value\n const contextValue: IWalletObserverState = useMemo(\n () => ({\n observerRef: observerRef,\n refreshInterval: options?.refreshInterval || 30000,\n state: {\n ...state,\n ...derivedState,\n observer: observerRef.current,\n },\n }),\n [options, state, derivedState]\n );\n\n return (\n <WalletObserverContext.Provider value={contextValue}>\n {children}\n </WalletObserverContext.Provider>\n );\n};\n\nexport default WalletObserverProvider;\n"],"mappings":"AAAA,SAAgCA,OAAO,QAAQ,OAAO;AAEtD,SAGEC,qBAAqB,QAChB,+BAA+B;AACtC,SAASC,eAAe,QAAQ,oCAAoC;AACpE,SAASC,yBAAyB,QAAQ,8CAA8C;AACxF,SAASC,0BAA0B,QAAQ,+CAA+C;AAC1F,SAASC,4BAA4B,QAAQ,yCAAyC;AACtF,SAASC,sBAAsB,QAAQ,mCAAmC;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAAAC,GAAA,IAAAC,IAAA;AAOA,MAAMC,sBAEL,GAAGA,CAAC;EAAEC,QAAQ;EAAEC;AAAQ,CAAC,KAAK;EAC7B,MAAMC,WAAW,GAAGP,4BAA4B,CAACM,OAAO,EAAEE,eAAe,CAAC;EAC1E,MAAMC,KAAK,GAAGR,sBAAsB,CAACM,WAAW,CAACG,OAAO,CAAC;EAEzDZ,yBAAyB,CAACS,WAAW,CAACG,OAAO,EAAED,KAAK,CAAC;EACrDV,0BAA0B,CACxBQ,WAAW,CAACG,OAAO,EACnBD,KAAK,CAACE,UAAU,EAChBL,OAAO,EAAEM,eACX,CAAC;EAED,MAAMC,YAAY,GAAGhB,eAAe,CAACU,WAAW,CAACG,OAAO,EAAE;IACxDI,aAAa,EAAEL,KAAK,CAACK;EACvB,CAAC,CAAC;;EAEF;EACA,MAAMC,YAAkC,GAAGpB,OAAO,CAChD,OAAO;IACLY,WAAW,EAAEA,WAAW;IACxBK,eAAe,EAAEN,OAAO,EAAEM,eAAe,IAAI,KAAK;IAClDH,KAAK,EAAE;MACL,GAAGA,KAAK;MACR,GAAGI,YAAY;MACfG,QAAQ,EAAET,WAAW,CAACG;IACxB;EACF,CAAC,CAAC,EACF,CAACJ,OAAO,EAAEG,KAAK,EAAEI,YAAY,CAC/B,CAAC;EAED,oBACEV,IAAA,CAACP,qBAAqB,CAACqB,QAAQ;IAACC,KAAK,EAAEH,YAAa;IAAAV,QAAA,EACjDA;EAAQ,CACqB,CAAC;AAErC,CAAC;AAED,eAAeD,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"WalletObserverProvider.js","names":["useEffect","useMemo","WalletObserver","WalletObserverContext","useDerivedState","useProviderEventListeners","useProviderRefreshInterval","useProviderWalletObserverRef","useWalletObserverState","jsx","_jsx","WalletObserverProvider","children","options","observerRef","observerOptions","state","current","syncWallet","refreshInterval","derivedState","usedAddresses","contextValue","observer","wallet","window","localStorage","getItem","PERSISTENCE_CACHE_KEY","connectWallet","JSON","parse","activeWallet","Provider","value"],"sources":["../../../../src/react-components/WalletObserverProvider/WalletObserverProvider.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useEffect, useMemo } from \"react\";\n\nimport { TSupportedWalletExtensions } from \"../../@types/observer.js\";\nimport { WalletObserver } from \"../../classes/WalletObserver.class.js\";\nimport {\n IWalletObserverProviderProps,\n IWalletObserverState,\n WalletObserverContext,\n} from \"../contexts/observer/index.js\";\nimport { useDerivedState } from \"./hooks/effects/useDerivedState.js\";\nimport { useProviderEventListeners } from \"./hooks/effects/useProviderEventListeners.js\";\nimport { useProviderRefreshInterval } from \"./hooks/effects/useProviderRefreshInterval.js\";\nimport { useProviderWalletObserverRef } from \"./hooks/useProviderWalletObserverRef.js\";\nimport { useWalletObserverState } from \"./hooks/useWalletObserverState.js\";\n\n/**\n * The main context provider component. This handles setting up all the initial\n * state, handlers, and side effects with a new WalletObserver class.\n *\n * @param {IWalletObserverProviderProps} [options]\n * @returns {FC<PropsWithChildren<IWalletObserverProviderProps>>}\n */\nconst WalletObserverProvider: FC<\n PropsWithChildren<IWalletObserverProviderProps>\n> = ({ children, options }) => {\n const observerRef = useProviderWalletObserverRef(options?.observerOptions);\n const state = useWalletObserverState(observerRef.current);\n\n useProviderEventListeners(observerRef.current, state);\n useProviderRefreshInterval(\n observerRef.current,\n state.syncWallet,\n options?.refreshInterval\n );\n\n const derivedState = useDerivedState(observerRef.current, {\n usedAddresses: state.usedAddresses,\n });\n\n // Memoize the context value\n const contextValue: IWalletObserverState = useMemo(\n () => ({\n observerRef: observerRef,\n refreshInterval: options?.refreshInterval || 30000,\n state: {\n ...state,\n ...derivedState,\n observer: observerRef.current,\n },\n }),\n [options, state, derivedState]\n );\n\n useEffect(() => {\n const wallet: TSupportedWalletExtensions | null =\n window.localStorage.getItem(\n WalletObserver.PERSISTENCE_CACHE_KEY\n ) as TSupportedWalletExtensions;\n\n if (wallet) {\n state.connectWallet(JSON.parse(wallet).activeWallet);\n }\n }, []);\n\n return (\n <WalletObserverContext.Provider value={contextValue}>\n {children}\n </WalletObserverContext.Provider>\n );\n};\n\nexport default WalletObserverProvider;\n"],"mappings":"AAAA,SAAgCA,SAAS,EAAEC,OAAO,QAAQ,OAAO;AAGjE,SAASC,cAAc,QAAQ,uCAAuC;AACtE,SAGEC,qBAAqB,QAChB,+BAA+B;AACtC,SAASC,eAAe,QAAQ,oCAAoC;AACpE,SAASC,yBAAyB,QAAQ,8CAA8C;AACxF,SAASC,0BAA0B,QAAQ,+CAA+C;AAC1F,SAASC,4BAA4B,QAAQ,yCAAyC;AACtF,SAASC,sBAAsB,QAAQ,mCAAmC;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AANA,SAAAC,GAAA,IAAAC,IAAA;AAOA,MAAMC,sBAEL,GAAGA,CAAC;EAAEC,QAAQ;EAAEC;AAAQ,CAAC,KAAK;EAC7B,MAAMC,WAAW,GAAGP,4BAA4B,CAACM,OAAO,EAAEE,eAAe,CAAC;EAC1E,MAAMC,KAAK,GAAGR,sBAAsB,CAACM,WAAW,CAACG,OAAO,CAAC;EAEzDZ,yBAAyB,CAACS,WAAW,CAACG,OAAO,EAAED,KAAK,CAAC;EACrDV,0BAA0B,CACxBQ,WAAW,CAACG,OAAO,EACnBD,KAAK,CAACE,UAAU,EAChBL,OAAO,EAAEM,eACX,CAAC;EAED,MAAMC,YAAY,GAAGhB,eAAe,CAACU,WAAW,CAACG,OAAO,EAAE;IACxDI,aAAa,EAAEL,KAAK,CAACK;EACvB,CAAC,CAAC;;EAEF;EACA,MAAMC,YAAkC,GAAGrB,OAAO,CAChD,OAAO;IACLa,WAAW,EAAEA,WAAW;IACxBK,eAAe,EAAEN,OAAO,EAAEM,eAAe,IAAI,KAAK;IAClDH,KAAK,EAAE;MACL,GAAGA,KAAK;MACR,GAAGI,YAAY;MACfG,QAAQ,EAAET,WAAW,CAACG;IACxB;EACF,CAAC,CAAC,EACF,CAACJ,OAAO,EAAEG,KAAK,EAAEI,YAAY,CAC/B,CAAC;EAEDpB,SAAS,CAAC,MAAM;IACd,MAAMwB,MAAyC,GAC7CC,MAAM,CAACC,YAAY,CAACC,OAAO,CACzBzB,cAAc,CAAC0B,qBACjB,CAA+B;IAEjC,IAAIJ,MAAM,EAAE;MACVR,KAAK,CAACa,aAAa,CAACC,IAAI,CAACC,KAAK,CAACP,MAAM,CAAC,CAACQ,YAAY,CAAC;IACtD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEtB,IAAA,CAACP,qBAAqB,CAAC8B,QAAQ;IAACC,KAAK,EAAEZ,YAAa;IAAAV,QAAA,EACjDA;EAAQ,CACqB,CAAC;AAErC,CAAC;AAED,eAAeD,sBAAsB","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { AssetAmount } from "@sundaeswap/asset";
2
- import { useCallback, useState } from "react";
2
+ import { useCallback, useState, useTransition } from "react";
3
3
  import { WalletAssetMap } from "../../../classes/WalletAssetMap.class.js";
4
4
  import { WalletBalanceMap } from "../../../classes/WalletBalanceMap.class.js";
5
5
  import { WalletObserver } from "../../../classes/WalletObserver.class.js";
@@ -22,6 +22,7 @@ export const useWalletObserverState = observer => {
22
22
  const [collateral, setCollateral] = useState();
23
23
  const [isCip45, setIsCip45] = useState(false);
24
24
  const [switching, setSwitching] = useState(false);
25
+ const [isPending, startTransition] = useTransition();
25
26
  const disconnect = useCallback(() => {
26
27
  // Reset observer state.
27
28
  observer.disconnect();
@@ -48,39 +49,42 @@ export const useWalletObserverState = observer => {
48
49
  return;
49
50
  }
50
51
  const freshData = await observer.sync();
51
- setActiveWallet(prevWallet => newWallet === prevWallet ? prevWallet : newWallet);
52
- const newAdaBalance = freshData.balanceMap.get(WalletObserver.ADA_ASSET_ID);
53
- if (newAdaBalance) {
54
- setAdaBalance(prevBalance => prevBalance.amount === newAdaBalance.amount ? prevBalance : newAdaBalance);
55
- }
56
- setBalance(prevBalance => areAssetMapsEqual(prevBalance, freshData.balanceMap) ? prevBalance : freshData.balanceMap);
57
- setUsedAddresses(prevValue => JSON.stringify(prevValue) === JSON.stringify(freshData.usedAddresses) ? prevValue : freshData.usedAddresses);
58
- setUnusedAddresses(prevValue => JSON.stringify(prevValue) === JSON.stringify(freshData.unusedAddresses) ? prevValue : freshData.unusedAddresses);
59
- setNetwork(prevValue => prevValue === freshData.network ? prevValue : freshData.network);
60
- setUtxos(prevValue => {
61
- const prevValueRep = prevValue?.map(v => v.toCbor());
62
- const newValueRep = freshData.utxos?.map(v => v.toCbor());
63
- if (prevValueRep !== newValueRep) {
64
- return freshData.utxos;
65
- }
66
- return prevValue;
67
- });
68
- setCollateral(prevValue => {
69
- const prevValueRep = prevValue?.map(v => v.toCbor());
70
- const newValueRep = freshData.utxos?.map(v => v.toCbor());
71
- if (prevValueRep !== newValueRep) {
72
- return freshData.utxos;
52
+ startTransition(() => {
53
+ setActiveWallet(prevWallet => newWallet === prevWallet ? prevWallet : newWallet);
54
+ const newAdaBalance = freshData.balanceMap.get(WalletObserver.ADA_ASSET_ID);
55
+ if (newAdaBalance) {
56
+ setAdaBalance(prevBalance => prevBalance.amount === newAdaBalance.amount ? prevBalance : newAdaBalance);
73
57
  }
74
- return prevValue;
58
+ setBalance(prevBalance => areAssetMapsEqual(prevBalance, freshData.balanceMap) ? prevBalance : freshData.balanceMap);
59
+ setUsedAddresses(prevValue => JSON.stringify(prevValue) === JSON.stringify(freshData.usedAddresses) ? prevValue : freshData.usedAddresses);
60
+ setUnusedAddresses(prevValue => JSON.stringify(prevValue) === JSON.stringify(freshData.unusedAddresses) ? prevValue : freshData.unusedAddresses);
61
+ setNetwork(prevValue => prevValue === freshData.network ? prevValue : freshData.network);
62
+ setUtxos(prevValue => {
63
+ const prevValueRep = prevValue?.map(v => v.toCbor());
64
+ const newValueRep = freshData.utxos?.map(v => v.toCbor());
65
+ if (prevValueRep !== newValueRep) {
66
+ return freshData.utxos;
67
+ }
68
+ return prevValue;
69
+ });
70
+ setCollateral(prevValue => {
71
+ const prevValueRep = prevValue?.map(v => v.toCbor());
72
+ const newValueRep = freshData.utxos?.map(v => v.toCbor());
73
+ if (prevValueRep !== newValueRep) {
74
+ return freshData.utxos;
75
+ }
76
+ return prevValue;
77
+ });
78
+ setIsCip45(newWallet.includes("p2p"));
75
79
  });
76
- setIsCip45(newWallet.includes("p2p"));
77
80
  }, [observer, disconnect]);
78
81
  const connectWallet = useCallback(async wallet => {
79
82
  if (observer.hasActiveConnection() && wallet !== observer.activeWallet) {
80
- setSwitching(true);
83
+ setSwitching(() => true);
81
84
  }
82
- await observer.connectWallet(wallet).then(syncWallet);
83
- setSwitching(false);
85
+ await observer.connectWallet(wallet);
86
+ await syncWallet();
87
+ setSwitching(() => false);
84
88
  }, [observer, setSwitching]);
85
89
  return {
86
90
  activeWallet,
@@ -107,7 +111,8 @@ export const useWalletObserverState = observer => {
107
111
  disconnect,
108
112
  connectWallet,
109
113
  switching,
110
- setSwitching
114
+ setSwitching,
115
+ isPending
111
116
  };
112
117
  };
113
118
  //# sourceMappingURL=useWalletObserverState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletObserverState.js","names":["AssetAmount","useCallback","useState","WalletAssetMap","WalletBalanceMap","WalletObserver","areAssetMapsEqual","useWalletObserverState","observer","activeWallet","setActiveWallet","adaBalance","setAdaBalance","handleMetadata","setHandleMetadata","balance","setBalance","network","setNetwork","usedAddresses","setUsedAddresses","unusedAddresses","setUnusedAddresses","utxos","setUtxos","collateral","setCollateral","isCip45","setIsCip45","switching","setSwitching","disconnect","undefined","syncWallet","isSyncing","hasActiveConnection","newWallet","freshData","sync","prevWallet","newAdaBalance","balanceMap","get","ADA_ASSET_ID","prevBalance","amount","prevValue","JSON","stringify","prevValueRep","map","v","toCbor","newValueRep","includes","connectWallet","wallet","then","handles","setHandles"],"sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport { AssetAmount } from \"@sundaeswap/asset\";\nimport { useCallback, useState } from \"react\";\n\nimport {\n TAssetAmountMap,\n TSupportedWalletExtensions,\n} from \"../../../@types/observer.js\";\nimport { WalletAssetMap } from \"../../../classes/WalletAssetMap.class.js\";\nimport { WalletBalanceMap } from \"../../../classes/WalletBalanceMap.class.js\";\nimport { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\nimport { areAssetMapsEqual } from \"../../../utils/comparisons.js\";\nimport { THandleMetadata } from \"../../contexts/observer/index.js\";\n\n/**\n * Internal use only. The main action that sync WalletObserver api responses with\n * the React context of the WalletObserverProvider.\n *\n * @param {WalletObserver} observer\n */\nexport const useWalletObserverState = (observer: WalletObserver) => {\n const [activeWallet, setActiveWallet] =\n useState<TSupportedWalletExtensions>();\n const [adaBalance, setAdaBalance] = useState<AssetAmount>(\n new AssetAmount(0n)\n );\n const [handleMetadata, setHandleMetadata] = useState<\n TAssetAmountMap<THandleMetadata>\n >(new WalletAssetMap());\n const [balance, setBalance] = useState<WalletBalanceMap>(\n new WalletBalanceMap(observer)\n );\n const [network, setNetwork] = useState<number | undefined>();\n const [usedAddresses, setUsedAddresses] = useState<string[]>([]);\n const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);\n const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();\n const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();\n const [isCip45, setIsCip45] = useState(false);\n const [switching, setSwitching] = useState(false);\n\n const disconnect = useCallback(() => {\n // Reset observer state.\n observer.disconnect();\n\n // Reset state.\n setAdaBalance(new AssetAmount(0n));\n setBalance(new WalletBalanceMap(observer));\n setHandleMetadata(new WalletAssetMap());\n setUsedAddresses([]);\n setUnusedAddresses([]);\n setActiveWallet(undefined);\n setNetwork(undefined);\n setUtxos(undefined);\n setCollateral(undefined);\n setIsCip45(false);\n }, [observer]);\n\n const syncWallet = useCallback(async () => {\n if (observer.isSyncing() || !observer.hasActiveConnection()) {\n return;\n }\n\n const newWallet = observer.activeWallet;\n if (!newWallet) {\n disconnect();\n return;\n }\n\n const freshData = await observer.sync();\n\n setActiveWallet((prevWallet) =>\n newWallet === prevWallet ? prevWallet : newWallet\n );\n\n const newAdaBalance = freshData.balanceMap.get(WalletObserver.ADA_ASSET_ID);\n if (newAdaBalance) {\n setAdaBalance((prevBalance) =>\n prevBalance.amount === newAdaBalance.amount\n ? prevBalance\n : newAdaBalance\n );\n }\n\n setBalance((prevBalance) =>\n areAssetMapsEqual(prevBalance, freshData.balanceMap)\n ? prevBalance\n : freshData.balanceMap\n );\n\n setUsedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(freshData.usedAddresses)\n ? prevValue\n : freshData.usedAddresses\n );\n\n setUnusedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(freshData.unusedAddresses)\n ? prevValue\n : freshData.unusedAddresses\n );\n\n setNetwork((prevValue) =>\n prevValue === freshData.network ? prevValue : freshData.network\n );\n\n setUtxos((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = freshData.utxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return freshData.utxos;\n }\n\n return prevValue;\n });\n\n setCollateral((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = freshData.utxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return freshData.utxos;\n }\n\n return prevValue;\n });\n\n setIsCip45(newWallet.includes(\"p2p\"));\n }, [observer, disconnect]);\n\n const connectWallet = useCallback(\n async (wallet: TSupportedWalletExtensions) => {\n if (observer.hasActiveConnection() && wallet !== observer.activeWallet) {\n setSwitching(true);\n }\n\n await observer.connectWallet(wallet).then(syncWallet);\n setSwitching(false);\n },\n [observer, setSwitching]\n );\n\n return {\n activeWallet,\n setActiveWallet,\n adaBalance,\n setAdaBalance,\n balance,\n setBalance,\n handles: handleMetadata,\n setHandles: setHandleMetadata,\n isCip45,\n setIsCip45,\n network,\n setNetwork,\n unusedAddresses,\n setUnusedAddresses,\n usedAddresses,\n setUsedAddresses,\n utxos,\n setUtxos,\n collateral,\n setCollateral,\n syncWallet,\n disconnect,\n connectWallet,\n switching,\n setSwitching,\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useWalletObserverState.js","names":["AssetAmount","useCallback","useState","useTransition","WalletAssetMap","WalletBalanceMap","WalletObserver","areAssetMapsEqual","useWalletObserverState","observer","activeWallet","setActiveWallet","adaBalance","setAdaBalance","handleMetadata","setHandleMetadata","balance","setBalance","network","setNetwork","usedAddresses","setUsedAddresses","unusedAddresses","setUnusedAddresses","utxos","setUtxos","collateral","setCollateral","isCip45","setIsCip45","switching","setSwitching","isPending","startTransition","disconnect","undefined","syncWallet","isSyncing","hasActiveConnection","newWallet","freshData","sync","prevWallet","newAdaBalance","balanceMap","get","ADA_ASSET_ID","prevBalance","amount","prevValue","JSON","stringify","prevValueRep","map","v","toCbor","newValueRep","includes","connectWallet","wallet","handles","setHandles"],"sources":["../../../../../src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport { AssetAmount, IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { useCallback, useState, useTransition } from \"react\";\n\nimport {\n TAssetAmountMap,\n TSupportedWalletExtensions,\n} from \"../../../@types/observer.js\";\nimport { WalletAssetMap } from \"../../../classes/WalletAssetMap.class.js\";\nimport { WalletBalanceMap } from \"../../../classes/WalletBalanceMap.class.js\";\nimport { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\nimport { areAssetMapsEqual } from \"../../../utils/comparisons.js\";\nimport { THandleMetadata } from \"../../contexts/observer/index.js\";\n\n/**\n * Internal use only. The main action that sync WalletObserver api responses with\n * the React context of the WalletObserverProvider.\n *\n * @param {WalletObserver} observer\n */\nexport const useWalletObserverState = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n>(\n observer: WalletObserver<AssetMetadata>\n) => {\n const [activeWallet, setActiveWallet] =\n useState<TSupportedWalletExtensions>();\n const [adaBalance, setAdaBalance] = useState<AssetAmount>(\n new AssetAmount<AssetMetadata>(0n)\n );\n const [handleMetadata, setHandleMetadata] = useState<\n TAssetAmountMap<THandleMetadata<AssetMetadata>>\n >(new WalletAssetMap<THandleMetadata<AssetMetadata>>());\n const [balance, setBalance] = useState<WalletBalanceMap<AssetMetadata>>(\n new WalletBalanceMap<AssetMetadata>(observer)\n );\n const [network, setNetwork] = useState<number | undefined>();\n const [usedAddresses, setUsedAddresses] = useState<string[]>([]);\n const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);\n const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();\n const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();\n const [isCip45, setIsCip45] = useState(false);\n const [switching, setSwitching] = useState(false);\n const [isPending, startTransition] = useTransition();\n\n const disconnect = useCallback(() => {\n // Reset observer state.\n observer.disconnect();\n\n // Reset state.\n setAdaBalance(new AssetAmount(0n));\n setBalance(new WalletBalanceMap(observer));\n setHandleMetadata(new WalletAssetMap());\n setUsedAddresses([]);\n setUnusedAddresses([]);\n setActiveWallet(undefined);\n setNetwork(undefined);\n setUtxos(undefined);\n setCollateral(undefined);\n setIsCip45(false);\n }, [observer]);\n\n const syncWallet = useCallback(async () => {\n if (observer.isSyncing() || !observer.hasActiveConnection()) {\n return;\n }\n\n const newWallet = observer.activeWallet;\n if (!newWallet) {\n disconnect();\n return;\n }\n\n const freshData = await observer.sync();\n\n startTransition(() => {\n setActiveWallet((prevWallet) =>\n newWallet === prevWallet ? prevWallet : newWallet\n );\n\n const newAdaBalance = freshData.balanceMap.get(\n WalletObserver.ADA_ASSET_ID\n );\n if (newAdaBalance) {\n setAdaBalance((prevBalance) =>\n prevBalance.amount === newAdaBalance.amount\n ? prevBalance\n : newAdaBalance\n );\n }\n\n setBalance((prevBalance) =>\n areAssetMapsEqual(prevBalance, freshData.balanceMap)\n ? prevBalance\n : freshData.balanceMap\n );\n\n setUsedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(freshData.usedAddresses)\n ? prevValue\n : freshData.usedAddresses\n );\n\n setUnusedAddresses((prevValue) =>\n JSON.stringify(prevValue) === JSON.stringify(freshData.unusedAddresses)\n ? prevValue\n : freshData.unusedAddresses\n );\n\n setNetwork((prevValue) =>\n prevValue === freshData.network ? prevValue : freshData.network\n );\n\n setUtxos((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = freshData.utxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return freshData.utxos;\n }\n\n return prevValue;\n });\n\n setCollateral((prevValue) => {\n const prevValueRep = prevValue?.map((v) => v.toCbor());\n const newValueRep = freshData.utxos?.map((v) => v.toCbor());\n if (prevValueRep !== newValueRep) {\n return freshData.utxos;\n }\n\n return prevValue;\n });\n\n setIsCip45(newWallet.includes(\"p2p\"));\n });\n }, [observer, disconnect]);\n\n const connectWallet = useCallback(\n async (wallet: TSupportedWalletExtensions) => {\n if (observer.hasActiveConnection() && wallet !== observer.activeWallet) {\n setSwitching(() => true);\n }\n\n await observer.connectWallet(wallet);\n await syncWallet();\n setSwitching(() => false);\n },\n [observer, setSwitching]\n );\n\n return {\n activeWallet,\n setActiveWallet,\n adaBalance,\n setAdaBalance,\n balance,\n setBalance,\n handles: handleMetadata,\n setHandles: setHandleMetadata,\n isCip45,\n setIsCip45,\n network,\n setNetwork,\n unusedAddresses,\n setUnusedAddresses,\n usedAddresses,\n setUsedAddresses,\n utxos,\n setUtxos,\n collateral,\n setCollateral,\n syncWallet,\n disconnect,\n connectWallet,\n switching,\n setSwitching,\n isPending,\n };\n};\n"],"mappings":"AACA,SAASA,WAAW,QAA8B,mBAAmB;AACrE,SAASC,WAAW,EAAEC,QAAQ,EAAEC,aAAa,QAAQ,OAAO;AAM5D,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,gBAAgB,QAAQ,4CAA4C;AAC7E,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,iBAAiB,QAAQ,+BAA+B;AAGjE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAGjCC,QAAuC,IACpC;EACH,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GACnCT,QAAQ,CAA6B,CAAC;EACxC,MAAM,CAACU,UAAU,EAAEC,aAAa,CAAC,GAAGX,QAAQ,CAC1C,IAAIF,WAAW,CAAgB,EAAE,CACnC,CAAC;EACD,MAAM,CAACc,cAAc,EAAEC,iBAAiB,CAAC,GAAGb,QAAQ,CAElD,IAAIE,cAAc,CAAiC,CAAC,CAAC;EACvD,MAAM,CAACY,OAAO,EAAEC,UAAU,CAAC,GAAGf,QAAQ,CACpC,IAAIG,gBAAgB,CAAgBI,QAAQ,CAC9C,CAAC;EACD,MAAM,CAACS,OAAO,EAAEC,UAAU,CAAC,GAAGjB,QAAQ,CAAqB,CAAC;EAC5D,MAAM,CAACkB,aAAa,EAAEC,gBAAgB,CAAC,GAAGnB,QAAQ,CAAW,EAAE,CAAC;EAChE,MAAM,CAACoB,eAAe,EAAEC,kBAAkB,CAAC,GAAGrB,QAAQ,CAAW,EAAE,CAAC;EACpE,MAAM,CAACsB,KAAK,EAAEC,QAAQ,CAAC,GAAGvB,QAAQ,CAA6B,CAAC;EAChE,MAAM,CAACwB,UAAU,EAAEC,aAAa,CAAC,GAAGzB,QAAQ,CAA6B,CAAC;EAC1E,MAAM,CAAC0B,OAAO,EAAEC,UAAU,CAAC,GAAG3B,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAAC4B,SAAS,EAAEC,YAAY,CAAC,GAAG7B,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAAC8B,SAAS,EAAEC,eAAe,CAAC,GAAG9B,aAAa,CAAC,CAAC;EAEpD,MAAM+B,UAAU,GAAGjC,WAAW,CAAC,MAAM;IACnC;IACAQ,QAAQ,CAACyB,UAAU,CAAC,CAAC;;IAErB;IACArB,aAAa,CAAC,IAAIb,WAAW,CAAC,EAAE,CAAC,CAAC;IAClCiB,UAAU,CAAC,IAAIZ,gBAAgB,CAACI,QAAQ,CAAC,CAAC;IAC1CM,iBAAiB,CAAC,IAAIX,cAAc,CAAC,CAAC,CAAC;IACvCiB,gBAAgB,CAAC,EAAE,CAAC;IACpBE,kBAAkB,CAAC,EAAE,CAAC;IACtBZ,eAAe,CAACwB,SAAS,CAAC;IAC1BhB,UAAU,CAACgB,SAAS,CAAC;IACrBV,QAAQ,CAACU,SAAS,CAAC;IACnBR,aAAa,CAACQ,SAAS,CAAC;IACxBN,UAAU,CAAC,KAAK,CAAC;EACnB,CAAC,EAAE,CAACpB,QAAQ,CAAC,CAAC;EAEd,MAAM2B,UAAU,GAAGnC,WAAW,CAAC,YAAY;IACzC,IAAIQ,QAAQ,CAAC4B,SAAS,CAAC,CAAC,IAAI,CAAC5B,QAAQ,CAAC6B,mBAAmB,CAAC,CAAC,EAAE;MAC3D;IACF;IAEA,MAAMC,SAAS,GAAG9B,QAAQ,CAACC,YAAY;IACvC,IAAI,CAAC6B,SAAS,EAAE;MACdL,UAAU,CAAC,CAAC;MACZ;IACF;IAEA,MAAMM,SAAS,GAAG,MAAM/B,QAAQ,CAACgC,IAAI,CAAC,CAAC;IAEvCR,eAAe,CAAC,MAAM;MACpBtB,eAAe,CAAE+B,UAAU,IACzBH,SAAS,KAAKG,UAAU,GAAGA,UAAU,GAAGH,SAC1C,CAAC;MAED,MAAMI,aAAa,GAAGH,SAAS,CAACI,UAAU,CAACC,GAAG,CAC5CvC,cAAc,CAACwC,YACjB,CAAC;MACD,IAAIH,aAAa,EAAE;QACjB9B,aAAa,CAAEkC,WAAW,IACxBA,WAAW,CAACC,MAAM,KAAKL,aAAa,CAACK,MAAM,GACvCD,WAAW,GACXJ,aACN,CAAC;MACH;MAEA1B,UAAU,CAAE8B,WAAW,IACrBxC,iBAAiB,CAACwC,WAAW,EAAEP,SAAS,CAACI,UAAU,CAAC,GAChDG,WAAW,GACXP,SAAS,CAACI,UAChB,CAAC;MAEDvB,gBAAgB,CAAE4B,SAAS,IACzBC,IAAI,CAACC,SAAS,CAACF,SAAS,CAAC,KAAKC,IAAI,CAACC,SAAS,CAACX,SAAS,CAACpB,aAAa,CAAC,GACjE6B,SAAS,GACTT,SAAS,CAACpB,aAChB,CAAC;MAEDG,kBAAkB,CAAE0B,SAAS,IAC3BC,IAAI,CAACC,SAAS,CAACF,SAAS,CAAC,KAAKC,IAAI,CAACC,SAAS,CAACX,SAAS,CAAClB,eAAe,CAAC,GACnE2B,SAAS,GACTT,SAAS,CAAClB,eAChB,CAAC;MAEDH,UAAU,CAAE8B,SAAS,IACnBA,SAAS,KAAKT,SAAS,CAACtB,OAAO,GAAG+B,SAAS,GAAGT,SAAS,CAACtB,OAC1D,CAAC;MAEDO,QAAQ,CAAEwB,SAAS,IAAK;QACtB,MAAMG,YAAY,GAAGH,SAAS,EAAEI,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC;QACtD,MAAMC,WAAW,GAAGhB,SAAS,CAAChB,KAAK,EAAE6B,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAIH,YAAY,KAAKI,WAAW,EAAE;UAChC,OAAOhB,SAAS,CAAChB,KAAK;QACxB;QAEA,OAAOyB,SAAS;MAClB,CAAC,CAAC;MAEFtB,aAAa,CAAEsB,SAAS,IAAK;QAC3B,MAAMG,YAAY,GAAGH,SAAS,EAAEI,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC;QACtD,MAAMC,WAAW,GAAGhB,SAAS,CAAChB,KAAK,EAAE6B,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAIH,YAAY,KAAKI,WAAW,EAAE;UAChC,OAAOhB,SAAS,CAAChB,KAAK;QACxB;QAEA,OAAOyB,SAAS;MAClB,CAAC,CAAC;MAEFpB,UAAU,CAACU,SAAS,CAACkB,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;EACJ,CAAC,EAAE,CAAChD,QAAQ,EAAEyB,UAAU,CAAC,CAAC;EAE1B,MAAMwB,aAAa,GAAGzD,WAAW,CAC/B,MAAO0D,MAAkC,IAAK;IAC5C,IAAIlD,QAAQ,CAAC6B,mBAAmB,CAAC,CAAC,IAAIqB,MAAM,KAAKlD,QAAQ,CAACC,YAAY,EAAE;MACtEqB,YAAY,CAAC,MAAM,IAAI,CAAC;IAC1B;IAEA,MAAMtB,QAAQ,CAACiD,aAAa,CAACC,MAAM,CAAC;IACpC,MAAMvB,UAAU,CAAC,CAAC;IAClBL,YAAY,CAAC,MAAM,KAAK,CAAC;EAC3B,CAAC,EACD,CAACtB,QAAQ,EAAEsB,YAAY,CACzB,CAAC;EAED,OAAO;IACLrB,YAAY;IACZC,eAAe;IACfC,UAAU;IACVC,aAAa;IACbG,OAAO;IACPC,UAAU;IACV2C,OAAO,EAAE9C,cAAc;IACvB+C,UAAU,EAAE9C,iBAAiB;IAC7Ba,OAAO;IACPC,UAAU;IACVX,OAAO;IACPC,UAAU;IACVG,eAAe;IACfC,kBAAkB;IAClBH,aAAa;IACbC,gBAAgB;IAChBG,KAAK;IACLC,QAAQ;IACRC,UAAU;IACVC,aAAa;IACbS,UAAU;IACVF,UAAU;IACVwB,aAAa;IACb5B,SAAS;IACTC,YAAY;IACZC;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/react-components/contexts/observer/types.ts"],"sourcesContent":["import type { TransactionUnspentOutput } from \"@cardano-sdk/core/dist/cjs/Serialization/index.js\";\nimport type { IHandle } from \"@koralabs/adahandle-sdk\";\nimport type { AssetAmount, IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport type { Dispatch, MutableRefObject, SetStateAction } from \"react\";\n\nimport type {\n TSupportedWalletExtensions,\n TWalletObserverOptions,\n} from \"../../../@types/observer.js\";\nimport { WalletBalanceMap } from \"../../../classes/WalletBalanceMap.class.js\";\nimport type { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\n\n/**\n * Available hooks to apply at various events.\n */\nexport type TWalletProviderHooks = {\n onSyncWalletStart?: () => void;\n onSyncWalletEnd?: () => void;\n onConnectWalletStart?: () => void;\n onConnectWalletEnd?: () => void;\n};\n\n/**\n * The resolved internal props of the WalletObserverProvider.\n */\nexport interface IWalletObserverProviderState<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n observerOptions: TWalletObserverOptions<AssetMetadata>;\n hooks: TWalletProviderHooks;\n refreshInterval: number;\n}\n\n/**\n * The main WalletObserverProvider props.\n */\nexport interface IWalletObserverProviderProps<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n options?: Partial<IWalletObserverProviderState<AssetMetadata>>;\n}\n\n/**\n * The WalletObserverProvider's internal state.\n */\nexport interface IWalletObserverState<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n observerRef: MutableRefObject<WalletObserver<AssetMetadata>>;\n refreshInterval: number | false;\n state: {\n isCip45: boolean;\n setIsCip45: Dispatch<SetStateAction<boolean>>;\n activeWallet?: TSupportedWalletExtensions;\n setActiveWallet: Dispatch<\n SetStateAction<TSupportedWalletExtensions | undefined>\n >;\n adaBalance: AssetAmount<AssetMetadata>;\n balance: WalletBalanceMap<AssetMetadata>;\n utxos?: TransactionUnspentOutput[];\n setUtxos: Dispatch<SetStateAction<TransactionUnspentOutput[] | undefined>>;\n collateral?: TransactionUnspentOutput[];\n setCollateral: Dispatch<\n SetStateAction<TransactionUnspentOutput[] | undefined>\n >;\n setBalance: Dispatch<SetStateAction<WalletBalanceMap<AssetMetadata>>>;\n observer: WalletObserver;\n mainAddress?: string;\n stakeAddress?: string;\n network?: number;\n setNetwork: Dispatch<SetStateAction<number | undefined>>;\n unusedAddresses: string[];\n setUnusedAddresses: Dispatch<SetStateAction<string[]>>;\n usedAddresses: string[];\n setUsedAddresses: Dispatch<SetStateAction<string[]>>;\n switching: boolean;\n syncWallet: () => Promise<void>;\n disconnect: () => void;\n connectWallet: (wallet: TSupportedWalletExtensions) => Promise<void>;\n };\n}\n\n/**\n * A generic to extend the default IHandle type that comes\n * back from the Kora Lab's API, and merged with the metadata\n * returned from the metadataResolver.\n */\nexport type THandleMetadata<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> = AssetMetadata & IHandle;\n\n/**\n * The exposed state of the WalletObserverProvider.\n */\nexport type TUseWalletObserverState<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> = Omit<\n IWalletObserverState<AssetMetadata>[\"state\"],\n | \"setActiveWallet\"\n | \"setBalance\"\n | \"setNetwork\"\n | \"setUnusedAddresses\"\n | \"setUsedAddresses\"\n | \"setReady\"\n | \"setIsCip45\"\n | \"setUtxos\"\n | \"setCollateral\"\n>;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/react-components/contexts/observer/types.ts"],"sourcesContent":["import type { IHandle } from \"@koralabs/adahandle-sdk\";\nimport type { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport type { MutableRefObject } from \"react\";\n\nimport type { TWalletObserverOptions } from \"../../../@types/observer.js\";\nimport type { WalletObserver } from \"../../../classes/WalletObserver.class.js\";\nimport { useDerivedState } from \"../../WalletObserverProvider/hooks/effects/useDerivedState.js\";\nimport { useWalletObserverState } from \"../../WalletObserverProvider/hooks/useWalletObserverState.js\";\n\n/**\n * Available hooks to apply at various events.\n */\nexport type TWalletProviderHooks = {\n onSyncWalletStart?: () => void;\n onSyncWalletEnd?: () => void;\n onConnectWalletStart?: () => void;\n onConnectWalletEnd?: () => void;\n};\n\n/**\n * The resolved internal props of the WalletObserverProvider.\n */\nexport interface IWalletObserverProviderState<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n observerOptions: TWalletObserverOptions<AssetMetadata>;\n hooks: TWalletProviderHooks;\n refreshInterval: number;\n}\n\n/**\n * The main WalletObserverProvider props.\n */\nexport interface IWalletObserverProviderProps<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n options?: Partial<IWalletObserverProviderState<AssetMetadata>>;\n}\n\n/**\n * The WalletObserverProvider's internal state.\n */\nexport interface IWalletObserverState<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> {\n observerRef: MutableRefObject<WalletObserver<AssetMetadata>>;\n refreshInterval: number | false;\n state: ReturnType<typeof useWalletObserverState<AssetMetadata>> &\n ReturnType<typeof useDerivedState> & {\n isPending: boolean;\n observer: WalletObserver<AssetMetadata>;\n };\n}\n\n/**\n * A generic to extend the default IHandle type that comes\n * back from the Kora Lab's API, and merged with the metadata\n * returned from the metadataResolver.\n */\nexport type THandleMetadata<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> = AssetMetadata & IHandle;\n\n/**\n * The exposed state of the WalletObserverProvider.\n */\nexport type TUseWalletObserverState<\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n> = Omit<\n IWalletObserverState<AssetMetadata>[\"state\"],\n | \"setActiveWallet\"\n | \"setAdaBalance\"\n | \"setHandles\"\n | \"setSwitching\"\n | \"setBalance\"\n | \"setNetwork\"\n | \"setUnusedAddresses\"\n | \"setUsedAddresses\"\n | \"setReady\"\n | \"setIsCip45\"\n | \"setUtxos\"\n | \"setCollateral\"\n>;\n"],"mappings":"","ignoreList":[]}
@@ -1,81 +1,76 @@
1
- import { useCallback, useEffect, useMemo, useState } from "react";
1
+ import { useCallback, useEffect, useMemo, useState, useTransition } from "react";
2
2
  import { WalletAssetMap } from "../../classes/WalletAssetMap.class.js";
3
3
  import { normalizeAssetIdWithDot } from "../../utils/assets.js";
4
4
  import { useWalletObserver } from "./useWalletObserver.js";
5
5
  export const useWalletHandles = () => {
6
6
  const state = useWalletObserver();
7
- const [loadingHandles, setLoadingHandles] = useState(true);
7
+ const [isPending, startTransition] = useTransition();
8
8
  const [handles, setHandles] = useState(new WalletAssetMap());
9
9
  const memoizedHandleDep = useMemo(() => [...state.balance.getHandles().keys()], [state.balance]);
10
10
  const syncHandles = useCallback(async () => {
11
- // Make a copy of our wallet map.
12
11
  const walletHandles = new WalletAssetMap([...state.balance.getHandles()]);
13
12
  if (walletHandles.size === 0) {
14
13
  return walletHandles;
15
14
  }
16
15
  try {
17
- await import("@koralabs/adahandle-sdk").then(async ({
16
+ const {
18
17
  default: HandleClient,
19
18
  HandleClientContext,
20
19
  KoraLabsProvider
21
- }) => {
22
- setLoadingHandles(true);
23
- const context = state.network === 1 ? HandleClientContext.MAINNET : HandleClientContext.PREVIEW;
24
-
25
- // @ts-ignore Type isn't exported from default.
26
- const sdk = new HandleClient({
27
- context,
28
- provider: new KoraLabsProvider(context)
29
- });
30
-
31
- // Restore once SDK updated
32
- const walletHandlesWithDataArray = [...walletHandles.entries()];
33
- const walletHandleDataArray = await sdk.provider().getAllDataBatch(walletHandlesWithDataArray.map(([key]) => ({
34
- value: key.split(".")[1]
35
- })));
36
- walletHandlesWithDataArray.forEach(([key, asset]) => {
37
- const matchingData = walletHandleDataArray.find(({
38
- hex
39
- }) => hex === key.split(".")[1]);
40
- walletHandles.set(normalizeAssetIdWithDot(key), asset.withMetadata({
41
- ...matchingData,
42
- ...asset.metadata,
43
- assetId: normalizeAssetIdWithDot(asset.metadata.assetId),
44
- decimals: 0
45
- }).withAmount(1n));
46
- });
20
+ } = await import("@koralabs/adahandle-sdk");
21
+ const context = state.network === 1 ? HandleClientContext.MAINNET : HandleClientContext.PREVIEW;
22
+ const sdk = new HandleClient({
23
+ context,
24
+ provider: new KoraLabsProvider(context)
25
+ });
26
+ const walletHandlesWithDataArray = [...walletHandles.entries()];
27
+ const walletHandleDataArray = await sdk.provider().getAllDataBatch(walletHandlesWithDataArray.map(([key]) => ({
28
+ value: key.split(".")[1]
29
+ })));
30
+ walletHandlesWithDataArray.forEach(([key, asset]) => {
31
+ const matchingData = walletHandleDataArray.find(({
32
+ hex
33
+ }) => hex === key.split(".")[1]);
34
+ walletHandles.set(normalizeAssetIdWithDot(key), asset.withMetadata({
35
+ ...matchingData,
36
+ ...asset.metadata,
37
+ assetId: normalizeAssetIdWithDot(asset.metadata.assetId),
38
+ decimals: 0
39
+ }).withAmount(1n));
47
40
  });
48
41
  return walletHandles;
49
42
  } catch (e) {
50
- console.log(e);
43
+ console.error(e);
51
44
  return walletHandles;
52
45
  }
53
- // We only want to update the callback if the Handle keys change.
54
- }, [state.balance]);
46
+ }, [state.balance, state.network]);
55
47
  useEffect(() => {
56
- syncHandles().then(newHandles => {
57
- setHandles(prevHandles => {
58
- let handleMetadataChanged = false;
59
- if (newHandles.size !== prevHandles?.size) {
60
- handleMetadataChanged = true;
61
- } else {
62
- for (const [key, val] of newHandles) {
63
- if (!prevHandles.has(key) || prevHandles.get(key)?.amount !== val?.amount) {
64
- handleMetadataChanged = true;
48
+ const fetchHandles = async () => {
49
+ const newHandles = await syncHandles();
50
+ startTransition(() => {
51
+ setHandles(prevHandles => {
52
+ let handleMetadataChanged = false;
53
+ if (newHandles.size !== prevHandles?.size) {
54
+ handleMetadataChanged = true;
55
+ } else {
56
+ for (const [key, val] of newHandles) {
57
+ if (!prevHandles.has(key) || prevHandles.get(key)?.amount !== val?.amount) {
58
+ handleMetadataChanged = true;
59
+ }
65
60
  }
66
61
  }
67
- }
68
- if (!handleMetadataChanged) {
69
- return prevHandles;
70
- }
71
- return newHandles;
62
+ if (!handleMetadataChanged) {
63
+ return prevHandles;
64
+ }
65
+ return newHandles;
66
+ });
72
67
  });
73
- setLoadingHandles(() => false);
74
- });
75
- }, [memoizedHandleDep, syncHandles, setHandles, setLoadingHandles]);
68
+ };
69
+ fetchHandles();
70
+ }, [memoizedHandleDep, syncHandles]);
76
71
  return {
77
72
  handles,
78
- loadingHandles
73
+ loadingHandles: isPending
79
74
  };
80
75
  };
81
76
  //# sourceMappingURL=useWalletHandles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletHandles.js","names":["useCallback","useEffect","useMemo","useState","WalletAssetMap","normalizeAssetIdWithDot","useWalletObserver","useWalletHandles","state","loadingHandles","setLoadingHandles","handles","setHandles","memoizedHandleDep","balance","getHandles","keys","syncHandles","walletHandles","size","then","default","HandleClient","HandleClientContext","KoraLabsProvider","context","network","MAINNET","PREVIEW","sdk","provider","walletHandlesWithDataArray","entries","walletHandleDataArray","getAllDataBatch","map","key","value","split","forEach","asset","matchingData","find","hex","set","withMetadata","metadata","assetId","decimals","withAmount","e","console","log","newHandles","prevHandles","handleMetadataChanged","val","has","get","amount"],"sources":["../../../../src/react-components/hooks/useWalletHandles.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport { IHandle } from \"@koralabs/adahandle-sdk\";\nimport { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { TAssetAmountMap } from \"../../@types/observer.js\";\nimport { WalletAssetMap } from \"../../classes/WalletAssetMap.class.js\";\nimport { normalizeAssetIdWithDot } from \"../../utils/assets.js\";\nimport { THandleMetadata } from \"../contexts/observer/types.js\";\nimport { useWalletObserver } from \"./useWalletObserver.js\";\n\nexport const useWalletHandles = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n>() => {\n const state = useWalletObserver<THandleMetadata<AssetMetadata>>();\n const [loadingHandles, setLoadingHandles] = useState(true);\n const [handles, setHandles] = useState<\n TAssetAmountMap<THandleMetadata<AssetMetadata>>\n >(new WalletAssetMap());\n const memoizedHandleDep = useMemo(\n () => [...state.balance.getHandles().keys()],\n [state.balance]\n );\n\n const syncHandles = useCallback<\n () => Promise<TAssetAmountMap<THandleMetadata<AssetMetadata>>>\n >(async () => {\n // Make a copy of our wallet map.\n const walletHandles: TAssetAmountMap<THandleMetadata<AssetMetadata>> =\n new WalletAssetMap([...state.balance.getHandles()]);\n\n if (walletHandles.size === 0) {\n return walletHandles;\n }\n\n try {\n await import(\"@koralabs/adahandle-sdk\").then(\n async ({\n default: HandleClient,\n HandleClientContext,\n KoraLabsProvider,\n }) => {\n setLoadingHandles(true);\n const context =\n state.network === 1\n ? HandleClientContext.MAINNET\n : HandleClientContext.PREVIEW;\n\n // @ts-ignore Type isn't exported from default.\n const sdk = new HandleClient({\n context,\n provider: new KoraLabsProvider(context),\n });\n\n // Restore once SDK updated\n const walletHandlesWithDataArray = [...walletHandles.entries()];\n const walletHandleDataArray: IHandle[] = await sdk\n .provider()\n .getAllDataBatch(\n walletHandlesWithDataArray.map(([key]) => ({\n value: key.split(\".\")[1],\n }))\n );\n\n walletHandlesWithDataArray.forEach(([key, asset]) => {\n const matchingData = walletHandleDataArray.find(\n ({ hex }) => hex === key.split(\".\")[1]\n ) as IHandle;\n\n walletHandles.set(\n normalizeAssetIdWithDot(key),\n asset\n .withMetadata({\n ...matchingData,\n ...asset.metadata,\n assetId: normalizeAssetIdWithDot(asset.metadata.assetId),\n decimals: 0,\n })\n .withAmount(1n)\n );\n });\n }\n );\n\n return walletHandles;\n } catch (e) {\n console.log(e);\n return walletHandles;\n }\n // We only want to update the callback if the Handle keys change.\n }, [state.balance]);\n\n useEffect(() => {\n syncHandles().then((newHandles) => {\n setHandles((prevHandles) => {\n let handleMetadataChanged = false;\n\n if (newHandles.size !== prevHandles?.size) {\n handleMetadataChanged = true;\n } else {\n for (const [key, val] of newHandles) {\n if (\n !prevHandles.has(key) ||\n prevHandles.get(key)?.amount !== val?.amount\n ) {\n handleMetadataChanged = true;\n }\n }\n }\n\n if (!handleMetadataChanged) {\n return prevHandles;\n }\n\n return newHandles;\n });\n setLoadingHandles(() => false);\n });\n }, [memoizedHandleDep, syncHandles, setHandles, setLoadingHandles]);\n\n return {\n handles,\n loadingHandles,\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useWalletHandles.js","names":["useCallback","useEffect","useMemo","useState","useTransition","WalletAssetMap","normalizeAssetIdWithDot","useWalletObserver","useWalletHandles","state","isPending","startTransition","handles","setHandles","memoizedHandleDep","balance","getHandles","keys","syncHandles","walletHandles","size","default","HandleClient","HandleClientContext","KoraLabsProvider","context","network","MAINNET","PREVIEW","sdk","provider","walletHandlesWithDataArray","entries","walletHandleDataArray","getAllDataBatch","map","key","value","split","forEach","asset","matchingData","find","hex","set","withMetadata","metadata","assetId","decimals","withAmount","e","console","error","fetchHandles","newHandles","prevHandles","handleMetadataChanged","val","has","get","amount","loadingHandles"],"sources":["../../../../src/react-components/hooks/useWalletHandles.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useTransition,\n} from \"react\";\n\nimport { IHandle } from \"@koralabs/adahandle-sdk\";\nimport { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { TAssetAmountMap } from \"../../@types/observer.js\";\nimport { WalletAssetMap } from \"../../classes/WalletAssetMap.class.js\";\nimport { normalizeAssetIdWithDot } from \"../../utils/assets.js\";\nimport { THandleMetadata } from \"../contexts/observer/types.js\";\nimport { useWalletObserver } from \"./useWalletObserver.js\";\n\nexport const useWalletHandles = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n>() => {\n const state = useWalletObserver<THandleMetadata<AssetMetadata>>();\n const [isPending, startTransition] = useTransition();\n const [handles, setHandles] = useState<\n TAssetAmountMap<THandleMetadata<AssetMetadata>>\n >(new WalletAssetMap());\n\n const memoizedHandleDep = useMemo(\n () => [...state.balance.getHandles().keys()],\n [state.balance]\n );\n\n const syncHandles = useCallback<\n () => Promise<TAssetAmountMap<THandleMetadata<AssetMetadata>>>\n >(async () => {\n const walletHandles: TAssetAmountMap<THandleMetadata<AssetMetadata>> =\n new WalletAssetMap<THandleMetadata<AssetMetadata>>([\n ...state.balance.getHandles(),\n ]);\n\n if (walletHandles.size === 0) {\n return walletHandles;\n }\n\n try {\n const {\n default: HandleClient,\n HandleClientContext,\n KoraLabsProvider,\n } = await import(\"@koralabs/adahandle-sdk\");\n\n const context =\n state.network === 1\n ? HandleClientContext.MAINNET\n : HandleClientContext.PREVIEW;\n\n const sdk = new HandleClient({\n context,\n provider: new KoraLabsProvider(context),\n });\n\n const walletHandlesWithDataArray = [...walletHandles.entries()];\n const walletHandleDataArray: IHandle[] = await sdk\n .provider()\n .getAllDataBatch(\n walletHandlesWithDataArray.map(([key]) => ({\n value: key.split(\".\")[1],\n }))\n );\n\n walletHandlesWithDataArray.forEach(([key, asset]) => {\n const matchingData = walletHandleDataArray.find(\n ({ hex }) => hex === key.split(\".\")[1]\n ) as IHandle;\n\n walletHandles.set(\n normalizeAssetIdWithDot(key),\n asset\n .withMetadata({\n ...matchingData,\n ...asset.metadata,\n assetId: normalizeAssetIdWithDot(asset.metadata.assetId),\n decimals: 0,\n })\n .withAmount(1n)\n );\n });\n\n return walletHandles;\n } catch (e) {\n console.error(e);\n return walletHandles;\n }\n }, [state.balance, state.network]);\n\n useEffect(() => {\n const fetchHandles = async () => {\n const newHandles = await syncHandles();\n startTransition(() => {\n setHandles((prevHandles) => {\n let handleMetadataChanged = false;\n\n if (newHandles.size !== prevHandles?.size) {\n handleMetadataChanged = true;\n } else {\n for (const [key, val] of newHandles) {\n if (\n !prevHandles.has(key) ||\n prevHandles.get(key)?.amount !== val?.amount\n ) {\n handleMetadataChanged = true;\n }\n }\n }\n\n if (!handleMetadataChanged) {\n return prevHandles;\n }\n\n return newHandles;\n });\n });\n };\n\n fetchHandles();\n }, [memoizedHandleDep, syncHandles]);\n\n return {\n handles,\n loadingHandles: isPending,\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -13,16 +13,16 @@ export const useWalletLoadingState = () => {
13
13
  return;
14
14
  }
15
15
  const setConnectingStart = () => {
16
- setConnecting(true);
16
+ setConnecting(() => true);
17
17
  };
18
18
  const setConnectingEnd = () => {
19
- setConnecting(false);
19
+ setConnecting(() => false);
20
20
  };
21
21
  const setSyncingStart = () => {
22
- setSyncing(true);
22
+ setSyncing(() => true);
23
23
  };
24
24
  const setSyncingEnd = () => {
25
- setSyncing(false);
25
+ setSyncing(() => false);
26
26
  };
27
27
  state.observer.addEventListener(EWalletObserverEvents.CONNECT_WALLET_START, setConnectingStart);
28
28
  state.observer.addEventListener(EWalletObserverEvents.CONNECT_WALLET_END, setConnectingEnd);
@@ -34,7 +34,7 @@ export const useWalletLoadingState = () => {
34
34
  state.observer.removeEventListener(EWalletObserverEvents.SYNCING_WALLET_START, setSyncingStart);
35
35
  state.observer.removeEventListener(EWalletObserverEvents.SYNCING_WALLET_END, setSyncingEnd);
36
36
  };
37
- }, [state.observer, setConnecting, setSyncing]);
37
+ }, [state.observer]);
38
38
  return {
39
39
  connectingWallet: connecting,
40
40
  syncingWallet: syncing,
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletLoadingState.js","names":["useEffect","useMemo","useState","EWalletObserverEvents","useWalletObserver","useWalletLoadingState","state","connecting","setConnecting","syncing","setSyncing","ready","Boolean","observer","api","activeWallet","setConnectingStart","setConnectingEnd","setSyncingStart","setSyncingEnd","addEventListener","CONNECT_WALLET_START","CONNECT_WALLET_END","SYNCING_WALLET_START","SYNCING_WALLET_END","removeEventListener","connectingWallet","syncingWallet"],"sources":["../../../../src/react-components/hooks/useWalletLoadingState.ts"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nimport { EWalletObserverEvents } from \"../../@types/events.js\";\nimport { useWalletObserver } from \"./useWalletObserver.js\";\n\nexport const useWalletLoadingState = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n>() => {\n const state = useWalletObserver<AssetMetadata>();\n const [connecting, setConnecting] = useState(false);\n const [syncing, setSyncing] = useState(false);\n const ready = useMemo(() => {\n return Boolean(state.observer.api && state.observer.activeWallet);\n }, [state.observer.api, state.observer.activeWallet]);\n\n useEffect(() => {\n if (!state.observer) {\n return;\n }\n\n const setConnectingStart = () => {\n setConnecting(true);\n };\n const setConnectingEnd = () => {\n setConnecting(false);\n };\n const setSyncingStart = () => {\n setSyncing(true);\n };\n const setSyncingEnd = () => {\n setSyncing(false);\n };\n\n state.observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n state.observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n state.observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n state.observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n\n return () => {\n state.observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n };\n }, [state.observer, setConnecting, setSyncing]);\n\n return {\n connectingWallet: connecting,\n syncingWallet: syncing,\n ready,\n };\n};\n"],"mappings":"AACA,SAASA,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAEpD,SAASC,qBAAqB,QAAQ,wBAAwB;AAC9D,SAASC,iBAAiB,QAAQ,wBAAwB;AAE1D,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAE9B;EACL,MAAMC,KAAK,GAAGF,iBAAiB,CAAgB,CAAC;EAChD,MAAM,CAACG,UAAU,EAAEC,aAAa,CAAC,GAAGN,QAAQ,CAAC,KAAK,CAAC;EACnD,MAAM,CAACO,OAAO,EAAEC,UAAU,CAAC,GAAGR,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMS,KAAK,GAAGV,OAAO,CAAC,MAAM;IAC1B,OAAOW,OAAO,CAACN,KAAK,CAACO,QAAQ,CAACC,GAAG,IAAIR,KAAK,CAACO,QAAQ,CAACE,YAAY,CAAC;EACnE,CAAC,EAAE,CAACT,KAAK,CAACO,QAAQ,CAACC,GAAG,EAAER,KAAK,CAACO,QAAQ,CAACE,YAAY,CAAC,CAAC;EAErDf,SAAS,CAAC,MAAM;IACd,IAAI,CAACM,KAAK,CAACO,QAAQ,EAAE;MACnB;IACF;IAEA,MAAMG,kBAAkB,GAAGA,CAAA,KAAM;MAC/BR,aAAa,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,MAAMS,gBAAgB,GAAGA,CAAA,KAAM;MAC7BT,aAAa,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAMU,eAAe,GAAGA,CAAA,KAAM;MAC5BR,UAAU,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,MAAMS,aAAa,GAAGA,CAAA,KAAM;MAC1BT,UAAU,CAAC,KAAK,CAAC;IACnB,CAAC;IAEDJ,KAAK,CAACO,QAAQ,CAACO,gBAAgB,CAC7BjB,qBAAqB,CAACkB,oBAAoB,EAC1CL,kBACF,CAAC;IACDV,KAAK,CAACO,QAAQ,CAACO,gBAAgB,CAC7BjB,qBAAqB,CAACmB,kBAAkB,EACxCL,gBACF,CAAC;IACDX,KAAK,CAACO,QAAQ,CAACO,gBAAgB,CAC7BjB,qBAAqB,CAACoB,oBAAoB,EAC1CL,eACF,CAAC;IACDZ,KAAK,CAACO,QAAQ,CAACO,gBAAgB,CAC7BjB,qBAAqB,CAACqB,kBAAkB,EACxCL,aACF,CAAC;IAED,OAAO,MAAM;MACXb,KAAK,CAACO,QAAQ,CAACY,mBAAmB,CAChCtB,qBAAqB,CAACkB,oBAAoB,EAC1CL,kBACF,CAAC;MACDV,KAAK,CAACO,QAAQ,CAACY,mBAAmB,CAChCtB,qBAAqB,CAACmB,kBAAkB,EACxCL,gBACF,CAAC;MACDX,KAAK,CAACO,QAAQ,CAACY,mBAAmB,CAChCtB,qBAAqB,CAACoB,oBAAoB,EAC1CL,eACF,CAAC;MACDZ,KAAK,CAACO,QAAQ,CAACY,mBAAmB,CAChCtB,qBAAqB,CAACqB,kBAAkB,EACxCL,aACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACb,KAAK,CAACO,QAAQ,EAAEL,aAAa,EAAEE,UAAU,CAAC,CAAC;EAE/C,OAAO;IACLgB,gBAAgB,EAAEnB,UAAU;IAC5BoB,aAAa,EAAElB,OAAO;IACtBE;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"useWalletLoadingState.js","names":["useEffect","useMemo","useState","EWalletObserverEvents","useWalletObserver","useWalletLoadingState","state","connecting","setConnecting","syncing","setSyncing","ready","Boolean","observer","api","activeWallet","setConnectingStart","setConnectingEnd","setSyncingStart","setSyncingEnd","addEventListener","CONNECT_WALLET_START","CONNECT_WALLET_END","SYNCING_WALLET_START","SYNCING_WALLET_END","removeEventListener","connectingWallet","syncingWallet"],"sources":["../../../../src/react-components/hooks/useWalletLoadingState.ts"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nimport { EWalletObserverEvents } from \"../../@types/events.js\";\nimport { useWalletObserver } from \"./useWalletObserver.js\";\n\nexport const useWalletLoadingState = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n>() => {\n const state = useWalletObserver<AssetMetadata>();\n const [connecting, setConnecting] = useState(false);\n const [syncing, setSyncing] = useState(false);\n const ready = useMemo(() => {\n return Boolean(state.observer.api && state.observer.activeWallet);\n }, [state.observer.api, state.observer.activeWallet]);\n\n useEffect(() => {\n if (!state.observer) {\n return;\n }\n\n const setConnectingStart = () => {\n setConnecting(() => true);\n };\n const setConnectingEnd = () => {\n setConnecting(() => false);\n };\n const setSyncingStart = () => {\n setSyncing(() => true);\n };\n const setSyncingEnd = () => {\n setSyncing(() => false);\n };\n\n state.observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n state.observer.addEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n state.observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n state.observer.addEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n\n return () => {\n state.observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_START,\n setConnectingStart\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.CONNECT_WALLET_END,\n setConnectingEnd\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_START,\n setSyncingStart\n );\n state.observer.removeEventListener(\n EWalletObserverEvents.SYNCING_WALLET_END,\n setSyncingEnd\n );\n };\n }, [state.observer]);\n\n return {\n connectingWallet: connecting,\n syncingWallet: syncing,\n ready,\n };\n};\n"],"mappings":"AACA,SAASA,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAEpD,SAASC,qBAAqB,QAAQ,wBAAwB;AAC9D,SAASC,iBAAiB,QAAQ,wBAAwB;AAE1D,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAE9B;EACL,MAAMC,KAAK,GAAGF,iBAAiB,CAAgB,CAAC;EAChD,MAAM,CAACG,UAAU,EAAEC,aAAa,CAAC,GAAGN,QAAQ,CAAC,KAAK,CAAC;EACnD,MAAM,CAACO,OAAO,EAAEC,UAAU,CAAC,GAAGR,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMS,KAAK,GAAGV,OAAO,CAAC,MAAM;IAC1B,OAAOW,OAAO,CAACN,KAAK,CAACO,QAAQ,CAACC,GAAG,IAAIR,KAAK,CAACO,QAAQ,CAACE,YAAY,CAAC;EACnE,CAAC,EAAE,CAACT,KAAK,CAACO,QAAQ,CAACC,GAAG,EAAER,KAAK,CAACO,QAAQ,CAACE,YAAY,CAAC,CAAC;EAErDf,SAAS,CAAC,MAAM;IACd,IAAI,CAACM,KAAK,CAACO,QAAQ,EAAE;MACnB;IACF;IAEA,MAAMG,kBAAkB,GAAGA,CAAA,KAAM;MAC/BR,aAAa,CAAC,MAAM,IAAI,CAAC;IAC3B,CAAC;IACD,MAAMS,gBAAgB,GAAGA,CAAA,KAAM;MAC7BT,aAAa,CAAC,MAAM,KAAK,CAAC;IAC5B,CAAC;IACD,MAAMU,eAAe,GAAGA,CAAA,KAAM;MAC5BR,UAAU,CAAC,MAAM,IAAI,CAAC;IACxB,CAAC;IACD,MAAMS,aAAa,GAAGA,CAAA,KAAM;MAC1BT,UAAU,CAAC,MAAM,KAAK,CAAC;IACzB,CAAC;IAEDJ,KAAK,CAACO,QAAQ,CAACO,gBAAgB,CAC7BjB,qBAAqB,CAACkB,oBAAoB,EAC1CL,kBACF,CAAC;IACDV,KAAK,CAACO,QAAQ,CAACO,gBAAgB,CAC7BjB,qBAAqB,CAACmB,kBAAkB,EACxCL,gBACF,CAAC;IACDX,KAAK,CAACO,QAAQ,CAACO,gBAAgB,CAC7BjB,qBAAqB,CAACoB,oBAAoB,EAC1CL,eACF,CAAC;IACDZ,KAAK,CAACO,QAAQ,CAACO,gBAAgB,CAC7BjB,qBAAqB,CAACqB,kBAAkB,EACxCL,aACF,CAAC;IAED,OAAO,MAAM;MACXb,KAAK,CAACO,QAAQ,CAACY,mBAAmB,CAChCtB,qBAAqB,CAACkB,oBAAoB,EAC1CL,kBACF,CAAC;MACDV,KAAK,CAACO,QAAQ,CAACY,mBAAmB,CAChCtB,qBAAqB,CAACmB,kBAAkB,EACxCL,gBACF,CAAC;MACDX,KAAK,CAACO,QAAQ,CAACY,mBAAmB,CAChCtB,qBAAqB,CAACoB,oBAAoB,EAC1CL,eACF,CAAC;MACDZ,KAAK,CAACO,QAAQ,CAACY,mBAAmB,CAChCtB,qBAAqB,CAACqB,kBAAkB,EACxCL,aACF,CAAC;IACH,CAAC;EACH,CAAC,EAAE,CAACb,KAAK,CAACO,QAAQ,CAAC,CAAC;EAEpB,OAAO;IACLa,gBAAgB,EAAEnB,UAAU;IAC5BoB,aAAa,EAAElB,OAAO;IACtBE;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -25,7 +25,9 @@ export const useWalletObserver = () => {
25
25
  syncWallet: state.syncWallet,
26
26
  disconnect: state.disconnect,
27
27
  connectWallet: state.connectWallet,
28
- switching: state.switching
28
+ switching: state.switching,
29
+ isPending: state.isPending,
30
+ handles: state.handles
29
31
  };
30
32
  return result;
31
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletObserver.js","names":["useWalletObserverContext","useWalletObserver","state","result","isCip45","activeWallet","adaBalance","balance","mainAddress","stakeAddress","network","utxos","collateral","observer","unusedAddresses","usedAddresses","syncWallet","disconnect","connectWallet","switching"],"sources":["../../../../src/react-components/hooks/useWalletObserver.ts"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\n\nimport {\n TUseWalletObserverState,\n useWalletObserverContext,\n} from \"../contexts/observer/index.js\";\n\n/**\n * Exposes the WalletObserver state.\n *\n * @returns {TUseWalletObserverState<AssetMetadata>}\n */\nexport const useWalletObserver = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n>(): TUseWalletObserverState<AssetMetadata> => {\n const { state } = useWalletObserverContext<AssetMetadata>();\n\n const result: TUseWalletObserverState<AssetMetadata> = {\n isCip45: state.isCip45,\n activeWallet: state.activeWallet,\n adaBalance: state.adaBalance,\n balance: state.balance,\n mainAddress: state.mainAddress,\n stakeAddress: state.stakeAddress,\n network: state.network,\n utxos: state.utxos,\n collateral: state.collateral,\n observer: state.observer,\n unusedAddresses: state.unusedAddresses,\n usedAddresses: state.usedAddresses,\n syncWallet: state.syncWallet,\n disconnect: state.disconnect,\n connectWallet: state.connectWallet,\n switching: state.switching,\n };\n\n return result;\n};\n"],"mappings":"AAEA,SAEEA,wBAAwB,QACnB,+BAA+B;;AAEtC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAEc;EAC7C,MAAM;IAAEC;EAAM,CAAC,GAAGF,wBAAwB,CAAgB,CAAC;EAE3D,MAAMG,MAA8C,GAAG;IACrDC,OAAO,EAAEF,KAAK,CAACE,OAAO;IACtBC,YAAY,EAAEH,KAAK,CAACG,YAAY;IAChCC,UAAU,EAAEJ,KAAK,CAACI,UAAU;IAC5BC,OAAO,EAAEL,KAAK,CAACK,OAAO;IACtBC,WAAW,EAAEN,KAAK,CAACM,WAAW;IAC9BC,YAAY,EAAEP,KAAK,CAACO,YAAY;IAChCC,OAAO,EAAER,KAAK,CAACQ,OAAO;IACtBC,KAAK,EAAET,KAAK,CAACS,KAAK;IAClBC,UAAU,EAAEV,KAAK,CAACU,UAAU;IAC5BC,QAAQ,EAAEX,KAAK,CAACW,QAAQ;IACxBC,eAAe,EAAEZ,KAAK,CAACY,eAAe;IACtCC,aAAa,EAAEb,KAAK,CAACa,aAAa;IAClCC,UAAU,EAAEd,KAAK,CAACc,UAAU;IAC5BC,UAAU,EAAEf,KAAK,CAACe,UAAU;IAC5BC,aAAa,EAAEhB,KAAK,CAACgB,aAAa;IAClCC,SAAS,EAAEjB,KAAK,CAACiB;EACnB,CAAC;EAED,OAAOhB,MAAM;AACf,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"useWalletObserver.js","names":["useWalletObserverContext","useWalletObserver","state","result","isCip45","activeWallet","adaBalance","balance","mainAddress","stakeAddress","network","utxos","collateral","observer","unusedAddresses","usedAddresses","syncWallet","disconnect","connectWallet","switching","isPending","handles"],"sources":["../../../../src/react-components/hooks/useWalletObserver.ts"],"sourcesContent":["import { IAssetAmountMetadata } from \"@sundaeswap/asset\";\n\nimport {\n TUseWalletObserverState,\n useWalletObserverContext,\n} from \"../contexts/observer/index.js\";\n\n/**\n * Exposes the WalletObserver state.\n *\n * @returns {TUseWalletObserverState<AssetMetadata>}\n */\nexport const useWalletObserver = <\n AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata\n>(): TUseWalletObserverState<AssetMetadata> => {\n const { state } = useWalletObserverContext<AssetMetadata>();\n\n const result: TUseWalletObserverState<AssetMetadata> = {\n isCip45: state.isCip45,\n activeWallet: state.activeWallet,\n adaBalance: state.adaBalance,\n balance: state.balance,\n mainAddress: state.mainAddress,\n stakeAddress: state.stakeAddress,\n network: state.network,\n utxos: state.utxos,\n collateral: state.collateral,\n observer: state.observer,\n unusedAddresses: state.unusedAddresses,\n usedAddresses: state.usedAddresses,\n syncWallet: state.syncWallet,\n disconnect: state.disconnect,\n connectWallet: state.connectWallet,\n switching: state.switching,\n isPending: state.isPending,\n handles: state.handles,\n };\n\n return result;\n};\n"],"mappings":"AAEA,SAEEA,wBAAwB,QACnB,+BAA+B;;AAEtC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAEc;EAC7C,MAAM;IAAEC;EAAM,CAAC,GAAGF,wBAAwB,CAAgB,CAAC;EAE3D,MAAMG,MAA8C,GAAG;IACrDC,OAAO,EAAEF,KAAK,CAACE,OAAO;IACtBC,YAAY,EAAEH,KAAK,CAACG,YAAY;IAChCC,UAAU,EAAEJ,KAAK,CAACI,UAAU;IAC5BC,OAAO,EAAEL,KAAK,CAACK,OAAO;IACtBC,WAAW,EAAEN,KAAK,CAACM,WAAW;IAC9BC,YAAY,EAAEP,KAAK,CAACO,YAAY;IAChCC,OAAO,EAAER,KAAK,CAACQ,OAAO;IACtBC,KAAK,EAAET,KAAK,CAACS,KAAK;IAClBC,UAAU,EAAEV,KAAK,CAACU,UAAU;IAC5BC,QAAQ,EAAEX,KAAK,CAACW,QAAQ;IACxBC,eAAe,EAAEZ,KAAK,CAACY,eAAe;IACtCC,aAAa,EAAEb,KAAK,CAACa,aAAa;IAClCC,UAAU,EAAEd,KAAK,CAACc,UAAU;IAC5BC,UAAU,EAAEf,KAAK,CAACe,UAAU;IAC5BC,aAAa,EAAEhB,KAAK,CAACgB,aAAa;IAClCC,SAAS,EAAEjB,KAAK,CAACiB,SAAS;IAC1BC,SAAS,EAAElB,KAAK,CAACkB,SAAS;IAC1BC,OAAO,EAAEnB,KAAK,CAACmB;EACjB,CAAC;EAED,OAAOlB,MAAM;AACf,CAAC","ignoreList":[]}
@@ -1,8 +1,9 @@
1
- import { useEffect, useRef, useState } from "react";
1
+ import { useEffect, useRef, useState, useTransition } from "react";
2
2
  import { useWalletObserver } from "./useWalletObserver.js";
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  export const useWalletPeerConnect = () => {
5
5
  const state = useWalletObserver();
6
+ const [isPending, startTransition] = useTransition();
6
7
  const [peerConnect, setPeerConnect] = useState();
7
8
  const [error, setError] = useState();
8
9
  const qrCode = useRef(null);
@@ -10,7 +11,15 @@ export const useWalletPeerConnect = () => {
10
11
  if (!state.observer) {
11
12
  return;
12
13
  }
13
- state.observer.getCip45Instance().then(res => setPeerConnect(res)).catch(e => setError(e.message));
14
+ state.observer.getCip45Instance().then(res => {
15
+ startTransition(() => {
16
+ try {
17
+ setPeerConnect(res);
18
+ } catch (e) {
19
+ setError(e.message);
20
+ }
21
+ });
22
+ });
14
23
  }, [state.observer, setPeerConnect, setError]);
15
24
  useEffect(() => {
16
25
  if (peerConnect && qrCode.current) {
@@ -22,7 +31,8 @@ export const useWalletPeerConnect = () => {
22
31
  QRCodeElement: /*#__PURE__*/_jsx("div", {
23
32
  ref: qrCode
24
33
  }),
25
- error
34
+ error,
35
+ isLoading: isPending
26
36
  };
27
37
  };
28
38
  //# sourceMappingURL=useWalletPeerConnect.js.map