@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.
- package/dist/cjs/classes/WalletObserver.class.js +13 -22
- package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
- package/dist/cjs/react-components/RenderWallet.js +18 -3
- package/dist/cjs/react-components/RenderWallet.js.map +1 -1
- package/dist/cjs/react-components/RenderWalletHandles.js +18 -3
- package/dist/cjs/react-components/RenderWalletHandles.js.map +1 -1
- package/dist/cjs/react-components/RenderWalletPeerConnect.js +14 -3
- package/dist/cjs/react-components/RenderWalletPeerConnect.js.map +1 -1
- package/dist/cjs/react-components/RenderWalletState.js +17 -3
- package/dist/cjs/react-components/RenderWalletState.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js +7 -0
- package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +63 -49
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
- package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletHandles.js +111 -107
- package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletLoadingState.js +13 -5
- package/dist/cjs/react-components/hooks/useWalletLoadingState.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletObserver.js +3 -1
- package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletPeerConnect.js +13 -4
- package/dist/cjs/react-components/hooks/useWalletPeerConnect.js.map +1 -1
- package/dist/cjs/utils/getLibs.js +18 -35
- package/dist/cjs/utils/getLibs.js.map +1 -1
- package/dist/esm/classes/WalletObserver.class.js +9 -29
- package/dist/esm/classes/WalletObserver.class.js.map +1 -1
- package/dist/esm/react-components/RenderWallet.js +19 -4
- package/dist/esm/react-components/RenderWallet.js.map +1 -1
- package/dist/esm/react-components/RenderWalletHandles.js +21 -6
- package/dist/esm/react-components/RenderWalletHandles.js.map +1 -1
- package/dist/esm/react-components/RenderWalletPeerConnect.js +16 -5
- package/dist/esm/react-components/RenderWalletPeerConnect.js.map +1 -1
- package/dist/esm/react-components/RenderWalletState.js +19 -6
- package/dist/esm/react-components/RenderWalletState.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js +8 -1
- package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +34 -29
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
- package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletHandles.js +46 -51
- package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletLoadingState.js +5 -5
- package/dist/esm/react-components/hooks/useWalletLoadingState.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletObserver.js +3 -1
- package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletPeerConnect.js +13 -3
- package/dist/esm/react-components/hooks/useWalletPeerConnect.js.map +1 -1
- package/dist/esm/utils/getLibs.js +12 -20
- package/dist/esm/utils/getLibs.js.map +1 -1
- package/dist/types/classes/WalletObserver.class.d.ts +2 -2
- package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
- package/dist/types/react-components/RenderWallet.d.ts +3 -1
- package/dist/types/react-components/RenderWallet.d.ts.map +1 -1
- package/dist/types/react-components/RenderWalletHandles.d.ts +3 -1
- package/dist/types/react-components/RenderWalletHandles.d.ts.map +1 -1
- package/dist/types/react-components/RenderWalletPeerConnect.d.ts +3 -1
- package/dist/types/react-components/RenderWalletPeerConnect.d.ts.map +1 -1
- package/dist/types/react-components/RenderWalletState.d.ts +3 -1
- package/dist/types/react-components/RenderWalletState.d.ts.map +1 -1
- package/dist/types/react-components/WalletObserverProvider/WalletObserverProvider.d.ts.map +1 -1
- package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +9 -8
- package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
- package/dist/types/react-components/contexts/observer/types.d.ts +9 -31
- package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
- package/dist/types/react-components/hooks/useWalletHandles.d.ts.map +1 -1
- package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
- package/dist/types/react-components/hooks/useWalletPeerConnect.d.ts +1 -0
- package/dist/types/react-components/hooks/useWalletPeerConnect.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/utils/getLibs.d.ts +2 -6
- package/dist/types/utils/getLibs.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/classes/WalletObserver.class.ts +11 -23
- package/src/react-components/RenderWallet.tsx +21 -3
- package/src/react-components/RenderWalletHandles.tsx +20 -2
- package/src/react-components/RenderWalletPeerConnect.tsx +16 -3
- package/src/react-components/RenderWalletState.tsx +24 -8
- package/src/react-components/WalletObserverProvider/WalletObserverProvider.tsx +14 -1
- package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +70 -59
- package/src/react-components/contexts/observer/types.ts +13 -38
- package/src/react-components/hooks/useWalletHandles.ts +82 -76
- package/src/react-components/hooks/useWalletLoadingState.ts +5 -5
- package/src/react-components/hooks/useWalletObserver.ts +2 -0
- package/src/react-components/hooks/useWalletPeerConnect.tsx +18 -5
- 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","
|
|
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 {
|
|
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(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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":["
|
|
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;
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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)
|
|
83
|
-
|
|
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
|
package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map
CHANGED
|
@@ -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":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/react-components/contexts/observer/types.ts"],"sourcesContent":["import type {
|
|
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 [
|
|
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
|
-
|
|
16
|
+
const {
|
|
18
17
|
default: HandleClient,
|
|
19
18
|
HandleClientContext,
|
|
20
19
|
KoraLabsProvider
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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.
|
|
43
|
+
console.error(e);
|
|
51
44
|
return walletHandles;
|
|
52
45
|
}
|
|
53
|
-
|
|
54
|
-
}, [state.balance]);
|
|
46
|
+
}, [state.balance, state.network]);
|
|
55
47
|
useEffect(() => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
handleMetadataChanged =
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
62
|
+
if (!handleMetadataChanged) {
|
|
63
|
+
return prevHandles;
|
|
64
|
+
}
|
|
65
|
+
return newHandles;
|
|
66
|
+
});
|
|
72
67
|
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}, [memoizedHandleDep, syncHandles
|
|
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","
|
|
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
|
|
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
|
|
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;
|
|
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 =>
|
|
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
|