@velora-dex/widget 0.3.11-dev.6 → 0.3.11-dev.8
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/components/web3/ConnectExternalProvider/AutoconnectExternal.js +11 -3
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/constants.d.ts +1 -0
- package/dist/components/web3/ConnectExternalProvider/constants.d.ts.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/constants.js +2 -1
- package/dist/components/web3/ConnectExternalProvider/constants.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/utils.d.ts +7 -2
- package/dist/components/web3/ConnectExternalProvider/utils.d.ts.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/utils.js +26 -3
- package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
- package/dist/configurator/Configurator.d.ts.map +1 -1
- package/dist/configurator/Safe/useSafeConnector.d.ts +1 -0
- package/dist/configurator/Safe/useSafeConnector.d.ts.map +1 -1
- package/dist/core/state/externalProviderAtom.d.ts +0 -3
- package/dist/core/state/externalProviderAtom.d.ts.map +1 -1
- package/dist/core/state/externalProviderAtom.js +1 -25
- package/dist/core/state/externalProviderAtom.js.map +1 -1
- package/dist/hooks/connectors/useIsConnectedSafe.js +3 -3
- package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.js +2 -2
- package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
- package/dist/transactions/hash.d.ts.map +1 -1
- package/dist/transactions/hash.js +2 -3
- package/dist/transactions/hash.js.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.d.ts.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.js +3 -3
- package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.d.ts.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js +2 -2
- package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
- package/dist/transactions/state/transactionsActionAtom.d.ts.map +1 -1
- package/dist/transactions/state/transactionsActionAtom.js +6 -3
- package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
- package/dist/transactions/types.d.ts +12 -5
- package/dist/transactions/types.d.ts.map +1 -1
- package/dist/transactions/utils.d.ts.map +1 -1
- package/dist/transactions/utils.js +2 -1
- package/dist/transactions/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@ import { useExternalProvider, isSafeIframeProvider } from '../../../core/state/e
|
|
|
3
3
|
import { useConnect, useDisconnect } from 'wagmi';
|
|
4
4
|
import { injected } from 'wagmi/connectors';
|
|
5
5
|
import { useEffect } from 'react';
|
|
6
|
-
import { EXTERNAL_CONNECTOR_ID } from './constants.js';
|
|
6
|
+
import { EXTERNAL_CONNECTOR_SAFE_ID, EXTERNAL_CONNECTOR_ID } from './constants.js';
|
|
7
7
|
import { getConnections } from '@wagmi/core';
|
|
8
8
|
import { wagmiConfig } from '../../../lib/web3/wagmi/config.js';
|
|
9
9
|
import { useLogger } from '../../../core/logger.js';
|
|
@@ -63,6 +63,7 @@ function wrapExternalProvider(provider) {
|
|
|
63
63
|
removeListener
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
|
+
const initialConnectors = wagmiConfig.connectors.slice();
|
|
66
67
|
async function connectDisconnect({
|
|
67
68
|
externalProvider,
|
|
68
69
|
logger,
|
|
@@ -79,11 +80,18 @@ async function connectDisconnect({
|
|
|
79
80
|
} catch (error) {
|
|
80
81
|
logger.error("Failed to disconnect from active connections", error);
|
|
81
82
|
}
|
|
82
|
-
if (externalProvider === null)
|
|
83
|
+
if (externalProvider === null) {
|
|
84
|
+
if (wagmiConfig.connectors.length === 0) {
|
|
85
|
+
wagmiConfig._internal.connectors.setState(initialConnectors);
|
|
86
|
+
}
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
wagmiConfig._internal.connectors.setState([]);
|
|
83
90
|
try {
|
|
91
|
+
const id = isSafeIframeProvider(externalProvider) ? EXTERNAL_CONNECTOR_SAFE_ID : EXTERNAL_CONNECTOR_ID;
|
|
84
92
|
const connector = injected({
|
|
85
93
|
target: {
|
|
86
|
-
id
|
|
94
|
+
id,
|
|
87
95
|
name: "External",
|
|
88
96
|
provider: wrapExternalProvider(externalProvider)
|
|
89
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoconnectExternal.js","sources":["../../../../src/components/web3/ConnectExternalProvider/AutoconnectExternal.tsx"],"sourcesContent":["import {\n isSafeIframeProvider,\n useExternalProvider,\n} from \"@/core/state/externalProviderAtom\";\nimport { useConnect, useDisconnect } from \"wagmi\";\nimport { injected } from \"wagmi/connectors\";\nimport { useEffect } from \"react\";\nimport { EXTERNAL_CONNECTOR_ID } from \"./constants\";\nimport type { EIP1193Provider } from \"viem\";\nimport { getConnections } from \"@wagmi/core\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { useLogger } from \"@/core/logger\";\nimport type { LoggerInstance } from \"@/lib/utils/logger\";\nimport type { ConnectMutateAsync, DisconnectMutateAsync } from \"wagmi/query\";\n\nexport function AutoconnectExternalProvider() {\n const externalProvider = useExternalProvider();\n\n const { connectAsync } = useConnect();\n const { disconnectAsync } = useDisconnect();\n\n const logger = useLogger(\"AutoconnectExternalProvider\");\n\n useEffect(() => {\n connectDisconnect({\n externalProvider,\n logger,\n disconnectAsync,\n connectAsync,\n });\n }, [externalProvider, connectAsync, disconnectAsync, logger]);\n\n return null;\n}\n\nfunction wrapExternalProvider(provider: EIP1193Provider): EIP1193Provider {\n if (!isSafeIframeProvider(provider)) return provider;\n // Safe iframe provider doesn't support eth_requestAccounts;\n // this isn't a problem with safe() connector (skips eth_requestAccounts), but external provider fails on connect()\n const request = (async (args) => {\n if (args.method === \"eth_requestAccounts\") {\n return provider.request({ method: \"eth_accounts\" });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = await provider.request(args as any);\n return result;\n }) as typeof provider.request;\n\n const on = provider.on?.bind(provider);\n const removeListener = provider.removeListener?.bind(provider);\n return {\n ...provider,\n request,\n on,\n removeListener,\n };\n}\n\ntype ConnectDisconnectProps = {\n externalProvider: EIP1193Provider | null;\n logger: LoggerInstance;\n disconnectAsync: DisconnectMutateAsync;\n connectAsync: ConnectMutateAsync<typeof wagmiConfig>;\n};\n\nasync function connectDisconnect({\n externalProvider,\n logger,\n disconnectAsync,\n connectAsync,\n}: ConnectDisconnectProps) {\n // disconnect any of the current connectors belonging to active connections\n const connections = getConnections(wagmiConfig); // actual connections made, can be multiple active\n\n try {\n for (const connection of connections) {\n // connection.connector.disconnect(); does not work, starts disconnect sync\n\n // make sure to wait for proper disconnection,\n // otherwise if disconnecting injected connector,\n // and then below we connect injected but with a different provider,\n // it doesn't connect, only disconnects\n await disconnectAsync({ connector: connection.connector });\n }\n } catch (error) {\n logger.error(\"Failed to disconnect from active connections\", error);\n }\n\n if (externalProvider === null) return;\n try {\n const connector = injected({\n target: {\n id
|
|
1
|
+
{"version":3,"file":"AutoconnectExternal.js","sources":["../../../../src/components/web3/ConnectExternalProvider/AutoconnectExternal.tsx"],"sourcesContent":["import {\n isSafeIframeProvider,\n useExternalProvider,\n} from \"@/core/state/externalProviderAtom\";\nimport { useConnect, useDisconnect } from \"wagmi\";\nimport { injected } from \"wagmi/connectors\";\nimport { useEffect } from \"react\";\nimport { EXTERNAL_CONNECTOR_ID, EXTERNAL_CONNECTOR_SAFE_ID } from \"./constants\";\nimport type { EIP1193Provider } from \"viem\";\nimport { getConnections } from \"@wagmi/core\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { useLogger } from \"@/core/logger\";\nimport type { LoggerInstance } from \"@/lib/utils/logger\";\nimport type { ConnectMutateAsync, DisconnectMutateAsync } from \"wagmi/query\";\n\nexport function AutoconnectExternalProvider() {\n const externalProvider = useExternalProvider();\n\n const { connectAsync } = useConnect();\n const { disconnectAsync } = useDisconnect();\n\n const logger = useLogger(\"AutoconnectExternalProvider\");\n\n useEffect(() => {\n connectDisconnect({\n externalProvider,\n logger,\n disconnectAsync,\n connectAsync,\n });\n }, [externalProvider, connectAsync, disconnectAsync, logger]);\n\n return null;\n}\n\nfunction wrapExternalProvider(provider: EIP1193Provider): EIP1193Provider {\n if (!isSafeIframeProvider(provider)) return provider;\n // Safe iframe provider doesn't support eth_requestAccounts;\n // this isn't a problem with safe() connector (skips eth_requestAccounts), but external provider fails on connect()\n const request = (async (args) => {\n if (args.method === \"eth_requestAccounts\") {\n return provider.request({ method: \"eth_accounts\" });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = await provider.request(args as any);\n return result;\n }) as typeof provider.request;\n\n const on = provider.on?.bind(provider);\n const removeListener = provider.removeListener?.bind(provider);\n return {\n ...provider,\n request,\n on,\n removeListener,\n };\n}\n\ntype ConnectDisconnectProps = {\n externalProvider: EIP1193Provider | null;\n logger: LoggerInstance;\n disconnectAsync: DisconnectMutateAsync;\n connectAsync: ConnectMutateAsync<typeof wagmiConfig>;\n};\n\nconst initialConnectors = wagmiConfig.connectors.slice();\n\nasync function connectDisconnect({\n externalProvider,\n logger,\n disconnectAsync,\n connectAsync,\n}: ConnectDisconnectProps) {\n // disconnect any of the current connectors belonging to active connections\n const connections = getConnections(wagmiConfig); // actual connections made, can be multiple active\n\n try {\n for (const connection of connections) {\n // connection.connector.disconnect(); does not work, starts disconnect sync\n\n // make sure to wait for proper disconnection,\n // otherwise if disconnecting injected connector,\n // and then below we connect injected but with a different provider,\n // it doesn't connect, only disconnects\n await disconnectAsync({ connector: connection.connector });\n\n // this will also disconnect external provider when removing it from WidgetProps\n }\n } catch (error) {\n logger.error(\"Failed to disconnect from active connections\", error);\n }\n\n if (externalProvider === null) {\n // when disconnecting externalProvider,\n // if connectors were previously removed\n if (wagmiConfig.connectors.length === 0) {\n // restore them\n wagmiConfig._internal.connectors.setState(initialConnectors);\n }\n return;\n }\n // remove all connectors which may autoconnect and override external provider connection\n wagmiConfig._internal.connectors.setState([]); // wagmiConfi.setState doesn't deal with connectors\n try {\n const id = isSafeIframeProvider(externalProvider)\n ? EXTERNAL_CONNECTOR_SAFE_ID\n : EXTERNAL_CONNECTOR_ID;\n const connector = injected({\n target: {\n id,\n name: \"External\",\n provider: wrapExternalProvider(externalProvider),\n },\n });\n // not necessary to await, but for uniformity\n const result = await connectAsync({ connector });\n logger.info(\"Connected to external provider\", {\n connector,\n provider: externalProvider,\n });\n\n return result;\n } catch (error) {\n logger.error(\"Failed to connect to external provider\", error);\n }\n}\n"],"names":["AutoconnectExternalProvider","$","_c","externalProvider","useExternalProvider","connectAsync","useConnect","disconnectAsync","useDisconnect","logger","useLogger","t0","t1","connectDisconnect","useEffect","wrapExternalProvider","provider","isSafeIframeProvider","request","args","method","result","on","bind","removeListener","initialConnectors","wagmiConfig","connectors","slice","connections","getConnections","connection","connector","error","length","_internal","setState","id","EXTERNAL_CONNECTOR_SAFE_ID","EXTERNAL_CONNECTOR_ID","injected","target","name","info"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/web3/ConnectExternalProvider/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/web3/ConnectExternalProvider/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAClE,eAAO,MAAM,0BAA0B,gCAAgC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../../src/components/web3/ConnectExternalProvider/constants.ts"],"sourcesContent":["export const EXTERNAL_CONNECTOR_ID = \"external_provider_from_App\";\n"],"names":["EXTERNAL_CONNECTOR_ID"],"mappings":"AAAO,MAAMA,qBAAAA,GAAwB;;;;"}
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/components/web3/ConnectExternalProvider/constants.ts"],"sourcesContent":["export const EXTERNAL_CONNECTOR_ID = \"external_provider_from_App\";\nexport const EXTERNAL_CONNECTOR_SAFE_ID = \"external_provider_from_Safe\";\n"],"names":["EXTERNAL_CONNECTOR_ID","EXTERNAL_CONNECTOR_SAFE_ID"],"mappings":"AAAO,MAAMA,qBAAAA,GAAwB;AAC9B,MAAMC,0BAAAA,GAA6B;;;;"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { Connector } from '@wagmi/core';
|
|
2
2
|
import { injected } from 'wagmi/connectors';
|
|
3
|
-
import { EXTERNAL_CONNECTOR_ID } from './constants';
|
|
3
|
+
import { EXTERNAL_CONNECTOR_ID, EXTERNAL_CONNECTOR_SAFE_ID } from './constants';
|
|
4
4
|
export declare function isExternalConnector<T extends Pick<Connector, "type" | "id">>(connector: T): connector is T & {
|
|
5
|
-
id: typeof EXTERNAL_CONNECTOR_ID;
|
|
5
|
+
id: typeof EXTERNAL_CONNECTOR_ID | typeof EXTERNAL_CONNECTOR_SAFE_ID;
|
|
6
6
|
type: typeof injected.type;
|
|
7
7
|
};
|
|
8
|
+
export declare function isExternalConnectorSafeIframe<T extends Pick<Connector, "type" | "id">>(connector: T): connector is T & {
|
|
9
|
+
id: typeof EXTERNAL_CONNECTOR_SAFE_ID;
|
|
10
|
+
type: typeof injected.type;
|
|
11
|
+
};
|
|
12
|
+
export declare function useIsExternalConnectorWithSafe(): boolean;
|
|
8
13
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/web3/ConnectExternalProvider/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/components/web3/ConnectExternalProvider/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAGhF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,EAC1E,SAAS,EAAE,CAAC,GACX,SAAS,IAAI,CAAC,GAAG;IAClB,EAAE,EAAE,OAAO,qBAAqB,GAAG,OAAO,0BAA0B,CAAC;IACrE,IAAI,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;CAC5B,CAMA;AAED,wBAAgB,6BAA6B,CAC3C,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,EAExC,SAAS,EAAE,CAAC,GACX,SAAS,IAAI,CAAC,GAAG;IAClB,EAAE,EAAE,OAAO,0BAA0B,CAAC;IACtC,IAAI,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;CAC5B,CAKA;AAED,wBAAgB,8BAA8B,IAAI,OAAO,CAIxD"}
|
|
@@ -1,9 +1,32 @@
|
|
|
1
|
+
import { d as distExports } from '../../../_virtual/index.js';
|
|
1
2
|
import { injected } from 'wagmi/connectors';
|
|
2
|
-
import { EXTERNAL_CONNECTOR_ID } from './constants.js';
|
|
3
|
+
import { EXTERNAL_CONNECTOR_SAFE_ID, EXTERNAL_CONNECTOR_ID } from './constants.js';
|
|
4
|
+
import { useAccount } from 'wagmi';
|
|
3
5
|
|
|
4
6
|
function isExternalConnector(connector) {
|
|
5
|
-
return connector.type === injected.type && connector.id === EXTERNAL_CONNECTOR_ID;
|
|
7
|
+
return connector.type === injected.type && (connector.id === EXTERNAL_CONNECTOR_ID || connector.id === EXTERNAL_CONNECTOR_SAFE_ID);
|
|
8
|
+
}
|
|
9
|
+
function isExternalConnectorSafeIframe(connector) {
|
|
10
|
+
return connector.type === injected.type && connector.id === EXTERNAL_CONNECTOR_SAFE_ID;
|
|
11
|
+
}
|
|
12
|
+
function useIsExternalConnectorWithSafe() {
|
|
13
|
+
const $ = distExports.c(2);
|
|
14
|
+
const {
|
|
15
|
+
connector
|
|
16
|
+
} = useAccount();
|
|
17
|
+
if (!connector) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
let t0;
|
|
21
|
+
if ($[0] !== connector) {
|
|
22
|
+
t0 = isExternalConnectorSafeIframe(connector);
|
|
23
|
+
$[0] = connector;
|
|
24
|
+
$[1] = t0;
|
|
25
|
+
} else {
|
|
26
|
+
t0 = $[1];
|
|
27
|
+
}
|
|
28
|
+
return t0;
|
|
6
29
|
}
|
|
7
30
|
|
|
8
|
-
export { isExternalConnector };
|
|
31
|
+
export { isExternalConnector, isExternalConnectorSafeIframe, useIsExternalConnectorWithSafe };
|
|
9
32
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/components/web3/ConnectExternalProvider/utils.ts"],"sourcesContent":["import type { Connector } from \"@wagmi/core\";\nimport { injected } from \"wagmi/connectors\";\nimport { EXTERNAL_CONNECTOR_ID } from \"./constants\";\n\nexport function isExternalConnector<T extends Pick<Connector, \"type\" | \"id\">>(\n connector: T\n): connector is T & {\n id: typeof EXTERNAL_CONNECTOR_ID;\n type: typeof injected.type;\n} {\n return (\n connector.type === injected.type
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/components/web3/ConnectExternalProvider/utils.ts"],"sourcesContent":["import type { Connector } from \"@wagmi/core\";\nimport { injected } from \"wagmi/connectors\";\nimport { EXTERNAL_CONNECTOR_ID, EXTERNAL_CONNECTOR_SAFE_ID } from \"./constants\";\nimport { useAccount } from \"wagmi\";\n\nexport function isExternalConnector<T extends Pick<Connector, \"type\" | \"id\">>(\n connector: T\n): connector is T & {\n id: typeof EXTERNAL_CONNECTOR_ID | typeof EXTERNAL_CONNECTOR_SAFE_ID;\n type: typeof injected.type;\n} {\n return (\n connector.type === injected.type &&\n (connector.id === EXTERNAL_CONNECTOR_ID ||\n connector.id === EXTERNAL_CONNECTOR_SAFE_ID)\n );\n}\n\nexport function isExternalConnectorSafeIframe<\n T extends Pick<Connector, \"type\" | \"id\">,\n>(\n connector: T\n): connector is T & {\n id: typeof EXTERNAL_CONNECTOR_SAFE_ID;\n type: typeof injected.type;\n} {\n return (\n connector.type === injected.type &&\n connector.id === EXTERNAL_CONNECTOR_SAFE_ID\n );\n}\n\nexport function useIsExternalConnectorWithSafe(): boolean {\n const { connector } = useAccount();\n if (!connector) return false;\n return isExternalConnectorSafeIframe(connector);\n}\n"],"names":["isExternalConnector","connector","type","injected","id","EXTERNAL_CONNECTOR_ID","EXTERNAL_CONNECTOR_SAFE_ID","isExternalConnectorSafeIframe","useIsExternalConnectorWithSafe","$","_c","useAccount","t0"],"mappings":";;;;;AAKO,SAASA,oBACdC,SAAAA,EAIA;AACA,EAAA,OACEA,SAAAA,CAAUC,SAASC,QAAAA,CAASD,IAAAA,KAC3BD,UAAUG,EAAAA,KAAOC,qBAAAA,IAChBJ,UAAUG,EAAAA,KAAOE,0BAAAA,CAAAA;AAEvB;AAEO,SAASC,8BAGdN,SAAAA,EAIA;AACA,EAAA,OACEA,SAAAA,CAAUC,IAAAA,KAASC,QAAAA,CAASD,IAAAA,IAC5BD,UAAUG,EAAAA,KAAOE,0BAAAA;AAErB;AAEO,SAAAE,8BAAAA,GAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACL,EAAA,MAAA;AAAA,IAAAT;AAAAA,MAAsBU,UAAAA,EAAW;AACjC,EAAA,IAAI,CAACV,SAAAA,EAAS;AAAA,IAAA,OAAS,KAAA;AAAA,EAAK;AAAC,EAAA,IAAAW,EAAAA;AAAA,EAAA,IAAAH,CAAAA,QAAAR,SAAAA,EAAA;AACtBW,IAAAA,EAAAA,GAAAL,8BAA8BN,SAAS,CAAA;AAACQ,IAAAA,CAAAA,MAAAR,SAAAA;AAAAQ,IAAAA,CAAAA,MAAAG,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAH,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAAxCG,EAAAA;AAAwC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Configurator.d.ts","sourceRoot":"","sources":["../../src/configurator/Configurator.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Configurator.d.ts","sourceRoot":"","sources":["../../src/configurator/Configurator.tsx"],"names":[],"mappings":"AA0PA,eAAO,MAAM,YAAY,+CAiUxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSafeConnector.d.ts","sourceRoot":"","sources":["../../../src/configurator/Safe/useSafeConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGvE,wBAAgB,gBAAgB,IAAI;IAClC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"useSafeConnector.d.ts","sourceRoot":"","sources":["../../../src/configurator/Safe/useSafeConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGvE,wBAAgB,gBAAgB,IAAI;IAClC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB,CA6BA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { EIP1193Provider } from 'viem';
|
|
2
|
-
import { Connector } from 'wagmi';
|
|
3
2
|
export declare const externalProviderAtom: import('jotai').PrimitiveAtom<{
|
|
4
3
|
on: <event extends keyof import('viem').EIP1193EventMap>(event: event, listener: import('viem').EIP1193EventMap[event]) => void;
|
|
5
4
|
removeListener: <event extends keyof import('viem').EIP1193EventMap>(event: event, listener: import('viem').EIP1193EventMap[event]) => void;
|
|
@@ -21,12 +20,10 @@ export declare const useExternalProvider: () => {
|
|
|
21
20
|
removeListener: <event extends keyof import('viem').EIP1193EventMap>(event: event, listener: import('viem').EIP1193EventMap[event]) => void;
|
|
22
21
|
request: import('viem').EIP1193RequestFn<import('viem').EIP1474Methods>;
|
|
23
22
|
} | null;
|
|
24
|
-
export declare const useIsExternalProviderSafeIframe: () => boolean;
|
|
25
23
|
export declare const useIsDappMode: () => boolean;
|
|
26
24
|
export declare function isSafeIframeProvider(provider: EIP1193Provider & {
|
|
27
25
|
safe?: {
|
|
28
26
|
safeAddress: string;
|
|
29
27
|
};
|
|
30
28
|
}): boolean;
|
|
31
|
-
export declare function isExternalConnectorWithSafeIframe(connector: Connector): Promise<boolean>;
|
|
32
29
|
//# sourceMappingURL=externalProviderAtom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"externalProviderAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/externalProviderAtom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAG5C,
|
|
1
|
+
{"version":3,"file":"externalProviderAtom.d.ts","sourceRoot":"","sources":["../../../src/core/state/externalProviderAtom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAG5C,eAAO,MAAM,oBAAoB;;;;;;;;;;CAAqC,CAAC;AAEvE,eAAO,MAAM,yBAAyB;;;;SAQpC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;QAE/B,CAAC;AAEF,eAAO,MAAM,aAAa,eAEzB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC7D,OAAO,CAET"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { d as distExports } from '../../_virtual/index.js';
|
|
2
1
|
import { atom } from 'jotai';
|
|
3
2
|
import { useAtomValue } from '../store.js';
|
|
4
3
|
import { widgetConfigAtom } from './configAtom.js';
|
|
5
|
-
import { isExternalConnector } from '../../components/web3/ConnectExternalProvider/utils.js';
|
|
6
4
|
|
|
7
5
|
const externalProviderAtom = atom(null);
|
|
8
6
|
const externalProviderToUseAtom = atom((get) => {
|
|
@@ -15,34 +13,12 @@ const externalProviderToUseAtom = atom((get) => {
|
|
|
15
13
|
const useExternalProvider = () => {
|
|
16
14
|
return useAtomValue(externalProviderToUseAtom);
|
|
17
15
|
};
|
|
18
|
-
const useIsExternalProviderSafeIframe = () => {
|
|
19
|
-
const $ = distExports.c(2);
|
|
20
|
-
const externalProvider = useExternalProvider();
|
|
21
|
-
if (!externalProvider) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
let t0;
|
|
25
|
-
if ($[0] !== externalProvider) {
|
|
26
|
-
t0 = isSafeIframeProvider(externalProvider);
|
|
27
|
-
$[0] = externalProvider;
|
|
28
|
-
$[1] = t0;
|
|
29
|
-
} else {
|
|
30
|
-
t0 = $[1];
|
|
31
|
-
}
|
|
32
|
-
const isSafeIframe = t0;
|
|
33
|
-
return isSafeIframe;
|
|
34
|
-
};
|
|
35
16
|
const useIsDappMode = () => {
|
|
36
17
|
return useAtomValue(widgetConfigAtom).widgetMode === "dapp";
|
|
37
18
|
};
|
|
38
19
|
function isSafeIframeProvider(provider) {
|
|
39
20
|
return !!provider.safe?.safeAddress;
|
|
40
21
|
}
|
|
41
|
-
async function isExternalConnectorWithSafeIframe(connector) {
|
|
42
|
-
if (!isExternalConnector(connector)) return false;
|
|
43
|
-
const provider = await connector.getProvider();
|
|
44
|
-
return isSafeIframeProvider(provider);
|
|
45
|
-
}
|
|
46
22
|
|
|
47
|
-
export { externalProviderAtom, externalProviderToUseAtom,
|
|
23
|
+
export { externalProviderAtom, externalProviderToUseAtom, isSafeIframeProvider, useExternalProvider, useIsDappMode };
|
|
48
24
|
//# sourceMappingURL=externalProviderAtom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"externalProviderAtom.js","sources":["../../../src/core/state/externalProviderAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport type { EIP1193Provider } from \"viem\";\nimport { widgetConfigAtom } from \"./configAtom\";\
|
|
1
|
+
{"version":3,"file":"externalProviderAtom.js","sources":["../../../src/core/state/externalProviderAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport type { EIP1193Provider } from \"viem\";\nimport { widgetConfigAtom } from \"./configAtom\";\n\nexport const externalProviderAtom = atom<EIP1193Provider | null>(null);\n\nexport const externalProviderToUseAtom = atom<EIP1193Provider | null>((get) => {\n const widgetConfig = get(widgetConfigAtom);\n\n if (widgetConfig.widgetMode !== \"dapp\") {\n return null;\n }\n\n return get(externalProviderAtom);\n});\n\nexport const useExternalProvider = () => {\n return useAtomValue(externalProviderToUseAtom);\n};\n\nexport const useIsDappMode = () => {\n return useAtomValue(widgetConfigAtom).widgetMode === \"dapp\";\n};\n\nexport function isSafeIframeProvider(\n provider: EIP1193Provider & { safe?: { safeAddress: string } }\n): boolean {\n return !!provider.safe?.safeAddress;\n}\n"],"names":["externalProviderAtom","atom","externalProviderToUseAtom","get","widgetConfig","widgetConfigAtom","widgetMode","useExternalProvider","useAtomValue","useIsDappMode","isSafeIframeProvider","provider","safe","safeAddress"],"mappings":";;;;AAKO,MAAMA,oBAAAA,GAAuBC,KAA6B,IAAI;AAE9D,MAAMC,yBAAAA,GAA4BD,KAA8BE,CAAAA,GAAAA,KAAQ;AAC7E,EAAA,MAAMC,YAAAA,GAAeD,IAAIE,gBAAgB,CAAA;AAEzC,EAAA,IAAID,YAAAA,CAAaE,eAAe,MAAA,EAAQ;AACtC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAOH,IAAIH,oBAAoB,CAAA;AACjC,CAAC;AAEM,MAAMO,sBAAsBA,MAAA;AAAA,EAAA,OAC1BC,aAAaN,yBAAyB,CAAA;AAAC;AAGzC,MAAMO,gBAAgBA,MAAA;AAAA,EAAA,OACpBD,YAAAA,CAAaH,gBAAgB,CAAA,CAACC,UAAAA,KAAgB,MAAA;AAAM;AAGtD,SAASI,qBACdC,QAAAA,EACS;AACT,EAAA,OAAO,CAAC,CAACA,QAAAA,CAASC,IAAAA,EAAMC,WAAAA;AAC1B;;;;"}
|
|
@@ -6,18 +6,18 @@ import '../../_virtual/index.js';
|
|
|
6
6
|
import '@tanstack/react-query';
|
|
7
7
|
import 'ts-essentials';
|
|
8
8
|
import 'wagmi/connectors';
|
|
9
|
+
import { useIsExternalConnectorWithSafe } from '../../components/web3/ConnectExternalProvider/utils.js';
|
|
9
10
|
import '../../lib/queryClient.js';
|
|
10
|
-
import { useIsExternalProviderSafeIframe } from '../../core/state/externalProviderAtom.js';
|
|
11
11
|
|
|
12
12
|
function useConnectedSafe() {
|
|
13
13
|
const isSafeConnector2 = useIsSafeConnector();
|
|
14
14
|
const isSafeThroughWalletConnect = useIsSafeThroughWalletConnect();
|
|
15
|
-
const isExternalProviderSafeIframe =
|
|
15
|
+
const isExternalProviderSafeIframe = useIsExternalConnectorWithSafe();
|
|
16
16
|
return isSafeConnector2 || isSafeThroughWalletConnect || isExternalProviderSafeIframe;
|
|
17
17
|
}
|
|
18
18
|
function useConnectedToSafeIframe() {
|
|
19
19
|
const isSafeConnector2 = useIsSafeConnector();
|
|
20
|
-
const isExternalProviderSafeIframe =
|
|
20
|
+
const isExternalProviderSafeIframe = useIsExternalConnectorWithSafe();
|
|
21
21
|
return isExternalProviderSafeIframe || isSafeConnector2;
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIsConnectedSafe.js","sources":["../../../src/hooks/connectors/useIsConnectedSafe.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport {\n isSafeConnector,\n useIsSafeConnector,\n} from \"./useIsGnosisSafeConnector\";\nimport {\n isSafeConnectorThroughWalletConnect,\n useIsSafeThroughWalletConnect,\n} from \"./useIsSafeThroughWalletConnect\";\nimport { getAccount } from \"@wagmi/core\";\nimport {\n getWalletMetadata,\n walletMetadataQueryKey,\n} from \"@/components/web3/ConnectWallets/walletIcons\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport {\n
|
|
1
|
+
{"version":3,"file":"useIsConnectedSafe.js","sources":["../../../src/hooks/connectors/useIsConnectedSafe.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport {\n isSafeConnector,\n useIsSafeConnector,\n} from \"./useIsGnosisSafeConnector\";\nimport {\n isSafeConnectorThroughWalletConnect,\n useIsSafeThroughWalletConnect,\n} from \"./useIsSafeThroughWalletConnect\";\nimport { getAccount } from \"@wagmi/core\";\nimport {\n getWalletMetadata,\n walletMetadataQueryKey,\n} from \"@/components/web3/ConnectWallets/walletIcons\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport {\n isExternalConnectorSafeIframe,\n useIsExternalConnectorWithSafe,\n} from \"@/components/web3/ConnectExternalProvider/utils\";\n\nexport function useConnectedSafe(): boolean {\n const isSafeConnector = useIsSafeConnector();\n const isSafeThroughWalletConnect = useIsSafeThroughWalletConnect();\n\n const isExternalProviderSafeIframe = useIsExternalConnectorWithSafe();\n\n return (\n isSafeConnector ||\n isSafeThroughWalletConnect ||\n isExternalProviderSafeIframe\n );\n}\n\nexport function useConnectedToSafeIframe(): boolean {\n const isSafeConnector = useIsSafeConnector();\n const isExternalProviderSafeIframe = useIsExternalConnectorWithSafe();\n return isExternalProviderSafeIframe || isSafeConnector;\n}\n\n// for use outside of react\nexport async function connectedSafe() {\n const connector = getAccount(wagmiConfig).connector;\n if (!connector) return false;\n\n if (isSafeConnector(connector)) return true;\n\n if (isExternalConnectorSafeIframe(connector)) return true;\n\n const walletMeta = await queryClient.ensureQueryData({\n queryKey: walletMetadataQueryKey(connector.uid),\n queryFn: () => getWalletMetadata(connector),\n gcTime: Infinity,\n });\n\n return isSafeConnectorThroughWalletConnect(walletMeta);\n}\n"],"names":["useConnectedSafe","isSafeConnector","useIsSafeConnector","isSafeThroughWalletConnect","useIsSafeThroughWalletConnect","isExternalProviderSafeIframe","useIsExternalConnectorWithSafe","useConnectedToSafeIframe"],"mappings":";;;;;;;;;;;AAoBO,SAAAA,gBAAAA,GAAA;AACL,EAAA,MAAAC,mBAAwBC,kBAAAA,EAAmB;AAC3C,EAAA,MAAAC,6BAAmCC,6BAAAA,EAA8B;AAEjE,EAAA,MAAAC,+BAAqCC,8BAAAA,EAA+B;AAAE,EAAA,OAGpEL,oBAAAE,0BAAAA,IAAAE,4BAAAA;AAE4B;AAIzB,SAAAE,wBAAAA,GAAA;AACL,EAAA,MAAAN,mBAAwBC,kBAAAA,EAAmB;AAC3C,EAAA,MAAAG,+BAAqCC,8BAAAA,EAA+B;AAAE,EAAA,OAC/DD,4BAAAA,IAAAJ,gBAAAA;AAA+C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchChain.d.ts","sourceRoot":"","sources":["../../../../src/lib/web3/wagmi/switchChain.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIhD,wBAAsB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"switchChain.d.ts","sourceRoot":"","sources":["../../../../src/lib/web3/wagmi/switchChain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as wagmi from '@wagmi/core';
|
|
2
2
|
import { wagmiConfig } from './config.js';
|
|
3
3
|
import { isSafeConnector } from '../../../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
4
|
-
import {
|
|
4
|
+
import { isExternalConnectorSafeIframe } from '../../../components/web3/ConnectExternalProvider/utils.js';
|
|
5
5
|
|
|
6
6
|
async function switchChain({
|
|
7
7
|
chainId
|
|
@@ -11,7 +11,7 @@ async function switchChain({
|
|
|
11
11
|
isConnected
|
|
12
12
|
} = wagmi.getAccount(wagmiConfig);
|
|
13
13
|
let isSafe = connector && isSafeConnector(connector);
|
|
14
|
-
if (!isSafe && connector &&
|
|
14
|
+
if (!isSafe && connector && isExternalConnectorSafeIframe(connector)) {
|
|
15
15
|
isSafe = true;
|
|
16
16
|
}
|
|
17
17
|
if (isConnected) wagmiConfig.setState((prev) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchChain.js","sources":["../../../../src/lib/web3/wagmi/switchChain.ts"],"sourcesContent":["import * as wagmi from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport type { SupportedChainId } from \"./types\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport {
|
|
1
|
+
{"version":3,"file":"switchChain.js","sources":["../../../../src/lib/web3/wagmi/switchChain.ts"],"sourcesContent":["import * as wagmi from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport type { SupportedChainId } from \"./types\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport { isExternalConnectorSafeIframe } from \"@/components/web3/ConnectExternalProvider/utils\";\n\nexport async function switchChain({ chainId }: { chainId: SupportedChainId }) {\n const { connector, isConnected } = wagmi.getAccount(wagmiConfig);\n let isSafe = connector && isSafeConnector(connector);\n\n // check if external provider is supplied and it's a Safe iframe provider\n if (!isSafe && connector && isExternalConnectorSafeIframe(connector)) {\n isSafe = true;\n }\n\n // wagmi doesn't autoswitch state chainId with syncConnectedChain=false if connected\n if (isConnected) wagmiConfig.setState((prev) => ({ ...prev, chainId }));\n\n // safe doesn't support programmatic chain switching\n if (!isSafe) return wagmi.switchChain(wagmiConfig, { chainId });\n}\n"],"names":["switchChain","chainId","connector","isConnected","wagmi","getAccount","wagmiConfig","isSafe","isSafeConnector","isExternalConnectorSafeIframe","setState","prev"],"mappings":";;;;;AAMA,eAAsBA,WAAAA,CAAY;AAAA,EAAEC;AAAuC,CAAA,EAAG;AAC5E,EAAA,MAAM;AAAA,IAAEC,SAAAA;AAAAA,IAAWC;AAAAA,GAAY,GAAIC,KAAAA,CAAMC,UAAAA,CAAWC,WAAW,CAAA;AAC/D,EAAA,IAAIC,MAAAA,GAASL,SAAAA,IAAaM,eAAAA,CAAgBN,SAAS,CAAA;AAGnD,EAAA,IAAI,CAACK,MAAAA,IAAUL,SAAAA,IAAaO,6BAAAA,CAA8BP,SAAS,CAAA,EAAG;AACpEK,IAAAA,MAAAA,GAAS,IAAA;AAAA,EACX;AAGA,EAAA,IAAIJ,WAAAA,EAAaG,WAAAA,CAAYI,QAAAA,CAAUC,CAAAA,IAAAA,MAAU;AAAA,IAAE,GAAGA,IAAAA;AAAAA,IAAMV;AAAAA,GAAQ,CAAE,CAAA;AAGtE,EAAA,IAAI,CAACM,MAAAA,EAAQ,OAAOH,KAAAA,CAAMJ,YAAYM,WAAAA,EAAa;AAAA,IAAEL;AAAAA,GAAS,CAAA;AAChE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/transactions/hash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAA6B,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/transactions/hash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAA6B,eAAe,EAAE,MAAM,SAAS,CAAC;AAY1E,wBAAgB,mBAAmB,CAAC,EAClC,eAAe,GAChB,EAAE;IACD,eAAe,CAAC,EAAE,IAAI,CAAC;CACxB,GAAG,IAAI,GAAG,IAAI,CAKd;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAgB1D"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jotaiStore } from '../core/store.js';
|
|
2
|
-
import { isBatchTransactionItem } from './utils.js';
|
|
2
|
+
import { isBatchTransactionItem, isGnosisSafeTx } from './utils.js';
|
|
3
3
|
import { allStandaloneTransactionItemsAtom } from './state/transactionsAtom.js';
|
|
4
|
-
import { isSafeConnector } from '../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
5
4
|
|
|
6
5
|
function findStandaloneTx({
|
|
7
6
|
transactionHash
|
|
@@ -25,7 +24,7 @@ function getTxHash(tx) {
|
|
|
25
24
|
if (isBatchTransactionItem(tx)) {
|
|
26
25
|
return tx.receipt?.transactionHash || null;
|
|
27
26
|
}
|
|
28
|
-
if (
|
|
27
|
+
if (isGnosisSafeTx(tx)) {
|
|
29
28
|
return tx.receipt?.transactionHash || null;
|
|
30
29
|
}
|
|
31
30
|
return tx.transactionHash;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sources":["../../src/transactions/hash.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/store\";\nimport type { Hash } from \"viem\";\nimport type { StandaloneTransactionItem, TransactionItem } from \"./types\";\nimport { isBatchTransactionItem } from \"./utils\";\nimport { allStandaloneTransactionItemsAtom } from \"./state/transactionsAtom\";\
|
|
1
|
+
{"version":3,"file":"hash.js","sources":["../../src/transactions/hash.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/store\";\nimport type { Hash } from \"viem\";\nimport type { StandaloneTransactionItem, TransactionItem } from \"./types\";\nimport { isBatchTransactionItem, isGnosisSafeTx } from \"./utils\";\nimport { allStandaloneTransactionItemsAtom } from \"./state/transactionsAtom\";\n\nfunction findStandaloneTx({\n transactionHash,\n}: Pick<StandaloneTransactionItem, \"transactionHash\">) {\n return jotaiStore\n .get(allStandaloneTransactionItemsAtom)\n .find((tx) => tx.transactionHash === transactionHash);\n}\n\nexport function getStandaloneTxHash({\n transactionHash,\n}: {\n transactionHash?: Hash;\n}): Hash | null {\n if (!transactionHash) return null;\n const tx = findStandaloneTx({ transactionHash });\n if (!tx) return null;\n return getTxHash(tx);\n}\n\nexport function getTxHash(tx: TransactionItem): Hash | null {\n if (tx.receipt?.transactionHash) {\n // if tx is mined, receipt is always the source of truth for the transaction hash\n return tx.receipt.transactionHash;\n }\n if (isBatchTransactionItem(tx)) {\n // for batch transactions, we have the real transaction hash in the receipt when the batch is mined\n return tx.receipt?.transactionHash || null;\n }\n if (isGnosisSafeTx(tx)) {\n // for Safe transactions sent through Safe iframe provider,\n // we don't have the real transaction hash until the transaction is mined\n return tx.receipt?.transactionHash || null;\n }\n\n return tx.transactionHash;\n}\n"],"names":["findStandaloneTx","transactionHash","jotaiStore","get","allStandaloneTransactionItemsAtom","find","tx","getStandaloneTxHash","getTxHash","receipt","isBatchTransactionItem","isGnosisSafeTx"],"mappings":";;;;AAMA,SAASA,gBAAAA,CAAiB;AAAA,EACxBC;AACkD,CAAA,EAAG;AACrD,EAAA,OAAOC,UAAAA,CACJC,IAAIC,iCAAiC,CAAA,CACrCC,KAAMC,CAAAA,EAAAA,KAAOA,EAAAA,CAAGL,oBAAoBA,eAAe,CAAA;AACxD;AAEO,SAASM,mBAAAA,CAAoB;AAAA,EAClCN;AAGF,CAAA,EAAgB;AACd,EAAA,IAAI,CAACA,iBAAiB,OAAO,IAAA;AAC7B,EAAA,MAAMK,KAAKN,gBAAAA,CAAiB;AAAA,IAAEC;AAAAA,GAAiB,CAAA;AAC/C,EAAA,IAAI,CAACK,IAAI,OAAO,IAAA;AAChB,EAAA,OAAOE,UAAUF,EAAE,CAAA;AACrB;AAEO,SAASE,UAAUF,EAAAA,EAAkC;AAC1D,EAAA,IAAIA,EAAAA,CAAGG,SAASR,eAAAA,EAAiB;AAE/B,IAAA,OAAOK,GAAGG,OAAAA,CAAQR,eAAAA;AAAAA,EACpB;AACA,EAAA,IAAIS,sBAAAA,CAAuBJ,EAAE,CAAA,EAAG;AAE9B,IAAA,OAAOA,EAAAA,CAAGG,SAASR,eAAAA,IAAmB,IAAA;AAAA,EACxC;AACA,EAAA,IAAIU,cAAAA,CAAeL,EAAE,CAAA,EAAG;AAGtB,IAAA,OAAOA,EAAAA,CAAGG,SAASR,eAAAA,IAAmB,IAAA;AAAA,EACxC;AAEA,EAAA,OAAOK,EAAAA,CAAGL,eAAAA;AACZ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureCallsStatus.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureCallsStatus.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAkC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE;IAC1C,EAAE,EAAE,MAAM,CAAC;CACZ,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAEtC,KAAK,wBAAwB,GAAG,CAAC,MAAM,CAAC,EAAE;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,KAAK,mBAAmB,CAAC;AAE1B,eAAO,MAAM,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"ensureCallsStatus.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureCallsStatus.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAkC,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE;IAC1C,EAAE,EAAE,MAAM,CAAC;CACZ,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAEtC,KAAK,wBAAwB,GAAG,CAAC,MAAM,CAAC,EAAE;IACxC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,KAAK,mBAAmB,CAAC;AAE1B,eAAO,MAAM,wBAAwB,EAAE,wBAiCpC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isExternalConnectorSafeIframe } from '../../components/web3/ConnectExternalProvider/utils.js';
|
|
2
2
|
import { isSafeConnector } from '../../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
3
3
|
import { SAFE_CALLS_WAIT_TIMEOUT } from '../../lib/constants/index.js';
|
|
4
4
|
import { queryClient } from '../../lib/queryClient.js';
|
|
@@ -16,8 +16,8 @@ const ensureCallsStatusFactory = ({
|
|
|
16
16
|
const {
|
|
17
17
|
connector
|
|
18
18
|
} = getAccount(wagmiConfig$1);
|
|
19
|
-
const
|
|
20
|
-
const isSafe = _isSafe ||
|
|
19
|
+
const isConnectedToSafeIframe = !!connector && (isSafeConnector(connector) || isExternalConnectorSafeIframe(connector));
|
|
20
|
+
const isSafe = _isSafe || isConnectedToSafeIframe;
|
|
21
21
|
const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : void 0;
|
|
22
22
|
const queryKey = waitForCallsStatusQueryKey({
|
|
23
23
|
id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureCallsStatus.js","sources":["../../../src/transactions/queries/ensureCallsStatus.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ensureCallsStatus.js","sources":["../../../src/transactions/queries/ensureCallsStatus.ts"],"sourcesContent":["import { isExternalConnectorSafeIframe } from \"@/components/web3/ConnectExternalProvider/utils\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { queryClient as _queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig as _wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport { getAccount, waitForCallsStatus, type Config } from \"@wagmi/core\";\n\nimport {\n waitForCallsStatusQueryKey,\n type WaitForCallsStatusData,\n} from \"wagmi/query\";\n\nexport type EnsureCallsStatusFn = (options: {\n id: string;\n}) => Promise<WaitForCallsStatusData>;\n\ntype EnsureCallsStatusFactory = (params?: {\n queryClient?: QueryClient;\n wagmiConfig?: Config;\n isSafe?: boolean;\n}) => EnsureCallsStatusFn;\n\nexport const ensureCallsStatusFactory: EnsureCallsStatusFactory =\n ({\n queryClient = _queryClient,\n wagmiConfig = _wagmiConfig,\n isSafe: _isSafe,\n } = {}) =>\n async ({ id }) => {\n const { connector } = getAccount(wagmiConfig);\n const isConnectedToSafeIframe =\n !!connector &&\n (isSafeConnector(connector) || isExternalConnectorSafeIframe(connector));\n\n const isSafe = _isSafe || isConnectedToSafeIframe;\n\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n const queryKey = waitForCallsStatusQueryKey({\n id,\n timeout, // important to include timeout into queryKey to match useAwaitCalls queryKey\n throwOnFailure: true,\n });\n const status = await queryClient.ensureQueryData({\n queryKey,\n queryFn: async () => {\n return waitForCallsStatus(wagmiConfig, {\n id,\n throwOnFailure: true,\n timeout,\n });\n },\n });\n\n return status;\n };\n"],"names":["ensureCallsStatusFactory","queryClient","_queryClient","wagmiConfig","_wagmiConfig","isSafe","_isSafe","id","connector","getAccount","isConnectedToSafeIframe","isSafeConnector","isExternalConnectorSafeIframe","timeout","SAFE_CALLS_WAIT_TIMEOUT","undefined","queryKey","waitForCallsStatusQueryKey","throwOnFailure","status","ensureQueryData","queryFn","waitForCallsStatus"],"mappings":";;;;;;;;AAuBO,MAAMA,2BACXA,CAAC;AAAA,eACCC,aAAAA,GAAcC,WAAAA;AAAAA,eACdC,aAAAA,GAAcC,WAAAA;AAAAA,EACdC,MAAAA,EAAQC;AACV,CAAA,GAAI,OACJ,OAAO;AAAA,EAAEC;AAAG,CAAA,KAAM;AAChB,EAAA,MAAM;AAAA,IAAEC;AAAAA,GAAU,GAAIC,WAAWN,aAAW,CAAA;AAC5C,EAAA,MAAMO,uBAAAA,GACJ,CAAC,CAACF,SAAAA,KACDG,gBAAgBH,SAAS,CAAA,IAAKI,8BAA8BJ,SAAS,CAAA,CAAA;AAExE,EAAA,MAAMH,SAASC,OAAAA,IAAWI,uBAAAA;AAE1B,EAAA,MAAMG,OAAAA,GAAUR,SAASS,uBAAAA,GAA0BC,MAAAA;AAEnD,EAAA,MAAMC,WAAWC,0BAAAA,CAA2B;AAAA,IAC1CV,EAAAA;AAAAA,IACAM,OAAAA;AAAAA;AAAAA,IACAK,cAAAA,EAAgB;AAAA,GACjB,CAAA;AACD,EAAA,MAAMC,MAAAA,GAAS,MAAMlB,aAAAA,CAAYmB,eAAAA,CAAgB;AAAA,IAC/CJ,QAAAA;AAAAA,IACAK,SAAS,YAAY;AACnB,MAAA,OAAOC,mBAAmBnB,aAAAA,EAAa;AAAA,QACrCI,EAAAA;AAAAA,QACAW,cAAAA,EAAgB,IAAA;AAAA,QAChBL;AAAAA,OACD,CAAA;AAAA,IACH;AAAA,GACD,CAAA;AAED,EAAA,OAAOM,MAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureTxReceipt.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAI3E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAK1C,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAEjE,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,YAAY,CACnB,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAAC,EAChE,MAAM,GAAG,SAAS,CACnB,GAAG;IACF,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B,KACE,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,KAAK,sBAAsB,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,YAAY,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,KAAK,iBAAiB,CAAC;AAExB,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"ensureTxReceipt.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAI3E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAK1C,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAEjE,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,YAAY,CACnB,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAAC,EAChE,MAAM,GAAG,SAAS,CACnB,GAAG;IACF,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B,KACE,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,KAAK,sBAAsB,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,YAAY,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,KAAK,iBAAiB,CAAC;AAExB,eAAO,MAAM,sBAAsB,EAAE,sBA+ClC,CAAC"}
|
|
@@ -7,7 +7,7 @@ import { SAFE_CALLS_WAIT_TIMEOUT } from '../../lib/constants/index.js';
|
|
|
7
7
|
import 'wagmi/chains';
|
|
8
8
|
import { getAccount, getConnectorClient } from '@wagmi/core';
|
|
9
9
|
import { isSafeConnector } from '../../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
10
|
-
import {
|
|
10
|
+
import { isExternalConnectorSafeIframe } from '../../components/web3/ConnectExternalProvider/utils.js';
|
|
11
11
|
|
|
12
12
|
const ensureTxReceiptFactory = ({
|
|
13
13
|
queryClient: queryClient$1 = queryClient,
|
|
@@ -22,7 +22,7 @@ const ensureTxReceiptFactory = ({
|
|
|
22
22
|
const {
|
|
23
23
|
connector
|
|
24
24
|
} = getAccount(wagmiConfig$1);
|
|
25
|
-
const isConnectedToSafeIframe = !!connector && (isSafeConnector(connector) ||
|
|
25
|
+
const isConnectedToSafeIframe = !!connector && (isSafeConnector(connector) || isExternalConnectorSafeIframe(connector));
|
|
26
26
|
const isSafe = _isSafe || isConnectedToSafeIframe;
|
|
27
27
|
const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : void 0;
|
|
28
28
|
let config = wagmiConfig$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureTxReceipt.js","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"sourcesContent":["import type { UseAwaitTxParameters } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { queryClient as _queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig as _wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { QueryClient } from \"@tanstack/react-query\";\n\nimport { assert, type MarkRequired } from \"ts-essentials\";\nimport { type ReplacementReturnType, type TransactionReceipt } from \"viem\";\n\nimport { waitForTransactionReceiptQueryOptions } from \"wagmi/query\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { type Chain } from \"wagmi/chains\";\nimport { getAccount, getConnectorClient } from \"@wagmi/core\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport {
|
|
1
|
+
{"version":3,"file":"ensureTxReceipt.js","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"sourcesContent":["import type { UseAwaitTxParameters } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { queryClient as _queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig as _wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { QueryClient } from \"@tanstack/react-query\";\n\nimport { assert, type MarkRequired } from \"ts-essentials\";\nimport { type ReplacementReturnType, type TransactionReceipt } from \"viem\";\n\nimport { waitForTransactionReceiptQueryOptions } from \"wagmi/query\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { type Chain } from \"wagmi/chains\";\nimport { getAccount, getConnectorClient } from \"@wagmi/core\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport { isExternalConnectorSafeIframe } from \"@/components/web3/ConnectExternalProvider/utils\";\n\ntype OnReplacedCb = (data: ReplacementReturnType<Chain>) => void;\n\nexport type EnsureTxReceiptFn = (\n options: MarkRequired<\n Pick<UseAwaitTxParameters, \"hash\" | \"chainId\" | \"confirmations\">,\n \"hash\" | \"chainId\"\n > & {\n onReplaced?: OnReplacedCb;\n }\n) => Promise<TransactionReceipt>;\n\ntype EnsureTxReceiptFactory = (params?: {\n queryClient?: QueryClient;\n wagmiConfig?: typeof _wagmiConfig;\n isSafe?: boolean;\n}) => EnsureTxReceiptFn;\n\nexport const ensureTxReceiptFactory: EnsureTxReceiptFactory =\n ({\n queryClient = _queryClient,\n wagmiConfig = _wagmiConfig,\n isSafe: _isSafe,\n } = {}) =>\n async ({ hash, chainId, confirmations, onReplaced }) => {\n const { connector } = getAccount(wagmiConfig);\n const isConnectedToSafeIframe =\n !!connector &&\n (isSafeConnector(connector) || isExternalConnectorSafeIframe(connector));\n const isSafe = _isSafe || isConnectedToSafeIframe;\n\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n let config = wagmiConfig;\n // always use connector client if connected through native safe connector.\n // safe provider returns a safeTxHash that is different from a real tx hash.\n // if connected to safe through WalletConnect - publicClient returns a real tx hash.\n if (isConnectedToSafeIframe) {\n const safeClient = await getConnectorClient(wagmiConfig, {\n chainId,\n connector,\n });\n // force waitForTransactionReceiptQueryOptions to use SafeClient internally\n config = {\n ...wagmiConfig,\n getClient: (options) => {\n assert(!options || options.chainId === chainId, \"chainId mismatch\");\n return safeClient;\n },\n } as typeof wagmiConfig;\n }\n\n // wagmi/core waitForTransactionReceipt throws on receipt.status==\"reverted\",\n // unlike viem waitForTransactionReceipt which returns the receipt as is\n const queryOptions = waitForTransactionReceiptQueryOptions(config, {\n hash,\n chainId,\n confirmations,\n timeout,\n onReplaced,\n });\n\n const receipt = await queryClient.ensureQueryData(queryOptions);\n\n return receipt;\n };\n"],"names":["ensureTxReceiptFactory","queryClient","_queryClient","wagmiConfig","_wagmiConfig","isSafe","_isSafe","hash","chainId","confirmations","onReplaced","connector","getAccount","isConnectedToSafeIframe","isSafeConnector","isExternalConnectorSafeIframe","timeout","SAFE_CALLS_WAIT_TIMEOUT","undefined","config","safeClient","getConnectorClient","getClient","options","assert","queryOptions","waitForTransactionReceiptQueryOptions","receipt","ensureQueryData"],"mappings":";;;;;;;;;;;AAgCO,MAAMA,yBACXA,CAAC;AAAA,eACCC,aAAAA,GAAcC,WAAAA;AAAAA,eACdC,aAAAA,GAAcC,WAAAA;AAAAA,EACdC,MAAAA,EAAQC;AACV,CAAA,GAAI,OACJ,OAAO;AAAA,EAAEC,IAAAA;AAAAA,EAAMC,OAAAA;AAAAA,EAASC,aAAAA;AAAAA,EAAeC;AAAW,CAAA,KAAM;AACtD,EAAA,MAAM;AAAA,IAAEC;AAAAA,GAAU,GAAIC,WAAWT,aAAW,CAAA;AAC5C,EAAA,MAAMU,uBAAAA,GACJ,CAAC,CAACF,SAAAA,KACDG,gBAAgBH,SAAS,CAAA,IAAKI,8BAA8BJ,SAAS,CAAA,CAAA;AACxE,EAAA,MAAMN,SAASC,OAAAA,IAAWO,uBAAAA;AAE1B,EAAA,MAAMG,OAAAA,GAAUX,SAASY,uBAAAA,GAA0BC,MAAAA;AAEnD,EAAA,IAAIC,MAAAA,GAAShB,aAAAA;AAIb,EAAA,IAAIU,uBAAAA,EAAyB;AAC3B,IAAA,MAAMO,UAAAA,GAAa,MAAMC,kBAAAA,CAAmBlB,aAAAA,EAAa;AAAA,MACvDK,OAAAA;AAAAA,MACAG;AAAAA,KACD,CAAA;AAEDQ,IAAAA,MAAAA,GAAS;AAAA,MACP,GAAGhB,aAAAA;AAAAA,MACHmB,WAAYC,CAAAA,OAAAA,KAAY;AACtBC,QAAAA,MAAAA,CAAO,CAACD,OAAAA,IAAWA,OAAAA,CAAQf,OAAAA,KAAYA,SAAS,kBAAkB,CAAA;AAClE,QAAA,OAAOY,UAAAA;AAAAA,MACT;AAAA,KACF;AAAA,EACF;AAIA,EAAA,MAAMK,YAAAA,GAAeC,sCAAsCP,MAAAA,EAAQ;AAAA,IACjEZ,IAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAO,OAAAA;AAAAA,IACAN;AAAAA,GACD,CAAA;AAED,EAAA,MAAMiB,OAAAA,GAAU,MAAM1B,aAAAA,CAAY2B,eAAAA,CAAgBH,YAAY,CAAA;AAE9D,EAAA,OAAOE,OAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsActionAtom.d.ts","sourceRoot":"","sources":["../../../src/transactions/state/transactionsActionAtom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AA2BlB,eAAO,MAAM,SAAS;;
|
|
1
|
+
{"version":3,"file":"transactionsActionAtom.d.ts","sourceRoot":"","sources":["../../../src/transactions/state/transactionsActionAtom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AA2BlB,eAAO,MAAM,SAAS;;CAwBrB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;CAwCnC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;CA8B9B,CAAC;AAEH,eAAO,MAAM,KAAK,GAAU,aAAa,kBAAkB,kBAE1D,CAAC"}
|
|
@@ -21,7 +21,8 @@ const addTxAtom = atom(null, async (get, set, transaction) => {
|
|
|
21
21
|
timestamp: Date.now(),
|
|
22
22
|
dropped: false,
|
|
23
23
|
connectorData: {
|
|
24
|
-
type: connector.type
|
|
24
|
+
type: connector.type,
|
|
25
|
+
id: connector.id
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
28
|
set(transactionsAtom, (current) => assignTx(current, txWithMeta));
|
|
@@ -125,7 +126,8 @@ function sanitizeTx(tx) {
|
|
|
125
126
|
};
|
|
126
127
|
if (tx.connectorData) {
|
|
127
128
|
txItem2.connectorData = {
|
|
128
|
-
type: tx.connectorData.type
|
|
129
|
+
type: tx.connectorData.type,
|
|
130
|
+
id: tx.connectorData.id
|
|
129
131
|
};
|
|
130
132
|
}
|
|
131
133
|
return txItem2;
|
|
@@ -142,7 +144,8 @@ function sanitizeTx(tx) {
|
|
|
142
144
|
};
|
|
143
145
|
if (tx.connectorData) {
|
|
144
146
|
txItem.connectorData = {
|
|
145
|
-
type: tx.connectorData.type
|
|
147
|
+
type: tx.connectorData.type,
|
|
148
|
+
id: tx.connectorData.id
|
|
146
149
|
};
|
|
147
150
|
}
|
|
148
151
|
return txItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsActionAtom.js","sources":["../../../src/transactions/state/transactionsActionAtom.ts"],"sourcesContent":["import type {\n TransactionItem,\n StandaloneTransactionItem,\n BatchTransactionItem,\n MinTransactionItem,\n} from \"../types\";\nimport { atom } from \"jotai\";\nimport { jotaiStore } from \"@/core/store\";\n\nimport { ensureCallsStatusFactory } from \"../queries/ensureCallsStatus\";\nimport { ensureTxReceiptFactory } from \"../queries/ensureTxReceipt\";\nimport {\n WaitForCallsStatusTimeoutError,\n TransactionReceiptNotFoundError,\n WaitForTransactionReceiptTimeoutError,\n MethodNotSupportedRpcError,\n CallExecutionError,\n} from \"viem\";\nimport { transactionLogger } from \"../logger\";\nimport {\n transactionsAtom,\n type TransactionsMap,\n type TransactionsState,\n} from \"./transactionsAtom\";\nimport {\n isBatchTransactionItem,\n isGnosisSafeTx,\n isStandaloneTransactionItem,\n} from \"../utils\";\nimport { assert } from \"ts-essentials\";\nimport { accountAtom } from \"@/lib/web3/wagmi/external\";\n\nexport const addTxAtom = atom<null, [transaction: MinTransactionItem], void>(\n null,\n async (get, set, transaction) => {\n const { connector, address } = get(accountAtom);\n assert(connector && address, \"connector and address are required\");\n\n const txWithMeta: TransactionItem = {\n ...transaction,\n account: address,\n timestamp: Date.now(),\n dropped: false,\n connectorData: {\n type: connector.type,\n },\n };\n set(transactionsAtom, (current) => assignTx(current, txWithMeta));\n\n if (isStandaloneTransactionItem(txWithMeta)) {\n await set(finalizeStandaloneTxAtom, txWithMeta);\n } else {\n await set(finalizeBatchTxAtom, txWithMeta);\n }\n }\n);\n\nexport const finalizeStandaloneTxAtom = atom<\n null,\n [StandaloneTransactionItem],\n Promise<void>\n>(null, async (_, set, transaction) => {\n const finalizedTx: StandaloneTransactionItem = { ...transaction };\n const ensureTxReceipt = ensureTxReceiptFactory();\n const isTxThroughSafe = isGnosisSafeTx(finalizedTx);\n\n try {\n // ensureTxReceipt internally makes sure to use walletClient for Safe connector\n const txReceipt = await ensureTxReceipt({\n hash: finalizedTx.transactionHash,\n chainId: finalizedTx.chainId,\n });\n finalizedTx.receipt = txReceipt;\n } catch (error) {\n if (\n /* \n At different steps of the waitForTransactionReceipt func different errors can be thrown.\n And if tx turned in eth_call with the same params succeeds (which it normally should not if it reverted for a valid reason and not gas or something),\n we can even get a useless Error(\"unknown reason\") or Error(\"0xrandom_hash\")\n */\n error instanceof WaitForTransactionReceiptTimeoutError || // thrown when transaction is not found within the timeout period\n error instanceof TransactionReceiptNotFoundError || // thrown when transaction receipt is not found\n error instanceof CallExecutionError // thrown when the transaction execution fails on-chain (execution reverted, out of gas, etc)\n ) {\n finalizedTx.dropped = true;\n transactionLogger.error(\"tx dropped\", {\n error,\n finalizedTx,\n isTxThroughSafe,\n });\n } else throw error;\n } finally {\n if (finalizedTx.receipt || finalizedTx.dropped) {\n set(transactionsAtom, (current) => assignTx(current, finalizedTx));\n transactionLogger.log(\"tx finalized\", { finalizedTx, isTxThroughSafe });\n }\n }\n});\n\nexport const finalizeBatchTxAtom = atom<\n null,\n [BatchTransactionItem],\n Promise<void>\n>(null, async (_, set, transaction) => {\n const finalizedTx: BatchTransactionItem = { ...transaction };\n const ensureCallsStatus = ensureCallsStatusFactory();\n\n try {\n const { receipts, status } = await ensureCallsStatus({\n id: finalizedTx.callsId,\n });\n finalizedTx.callsStatus = status;\n finalizedTx.receipt = receipts?.[receipts.length - 1];\n } catch (error) {\n if (\n error instanceof WaitForCallsStatusTimeoutError ||\n error instanceof MethodNotSupportedRpcError\n ) {\n finalizedTx.dropped = true;\n transactionLogger.error(\"batch tx dropped\", { error, finalizedTx });\n } else {\n finalizedTx.callsStatus = \"failure\";\n transactionLogger.error(\"batch tx failed\", { error, finalizedTx });\n throw error;\n }\n } finally {\n set(transactionsAtom, (current) => assignTx(current, finalizedTx));\n transactionLogger.log(\"batch tx finalized\", { finalizedTx });\n }\n});\n\nexport const addTx = async (transaction: MinTransactionItem) => {\n return jotaiStore.set(addTxAtom, transaction);\n};\n\nfunction sanitizeTx(tx: TransactionItem): TransactionItem {\n if (isBatchTransactionItem(tx)) {\n const txItem = {\n action: tx.action,\n account: tx.account,\n chainId: tx.chainId,\n callsId: tx.callsId,\n callsStatus: tx.callsStatus,\n timestamp: tx.timestamp,\n dropped: tx.dropped,\n receipt: tx.receipt,\n transactionSpecificData: tx.transactionSpecificData,\n } as BatchTransactionItem;\n\n if (tx.connectorData) {\n txItem.connectorData = {\n type: tx.connectorData.type,\n };\n }\n\n return txItem;\n }\n\n const txItem = {\n action: tx.action,\n chainId: tx.chainId,\n account: tx.account,\n transactionHash: tx.transactionHash,\n timestamp: tx.timestamp,\n dropped: tx.dropped,\n receipt: tx.receipt,\n transactionSpecificData: tx.transactionSpecificData,\n } as StandaloneTransactionItem;\n\n if (tx.connectorData) {\n txItem.connectorData = {\n type: tx.connectorData.type,\n };\n }\n\n return txItem;\n}\n\nfunction assignTx(\n currentTransactions: TransactionsState,\n transaction: TransactionItem\n): TransactionsState {\n transactionLogger.log(\"assignTx\", {\n account: transaction.account,\n transaction,\n });\n\n const accountTransactions = currentTransactions[transaction.account] || {};\n const identifier = isStandaloneTransactionItem(transaction)\n ? transaction.transactionHash\n : transaction.callsId;\n\n const updatedAccountTransactions: TransactionsMap = {\n ...accountTransactions,\n [identifier]: sanitizeTx({\n ...accountTransactions[identifier],\n ...transaction,\n }),\n };\n\n return {\n ...currentTransactions,\n [transaction.account]: updatedAccountTransactions,\n };\n}\n"],"names":["addTxAtom","atom","get","set","transaction","connector","address","accountAtom","assert","txWithMeta","account","timestamp","Date","now","dropped","connectorData","type","transactionsAtom","current","assignTx","isStandaloneTransactionItem","finalizeStandaloneTxAtom","finalizeBatchTxAtom","_","finalizedTx","ensureTxReceipt","ensureTxReceiptFactory","isTxThroughSafe","isGnosisSafeTx","txReceipt","hash","transactionHash","chainId","receipt","error","WaitForTransactionReceiptTimeoutError","TransactionReceiptNotFoundError","CallExecutionError","transactionLogger","log","ensureCallsStatus","ensureCallsStatusFactory","receipts","status","id","callsId","callsStatus","length","WaitForCallsStatusTimeoutError","MethodNotSupportedRpcError","addTx","jotaiStore","sanitizeTx","tx","isBatchTransactionItem","txItem","action","transactionSpecificData","currentTransactions","accountTransactions","identifier","updatedAccountTransactions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transactionsActionAtom.js","sources":["../../../src/transactions/state/transactionsActionAtom.ts"],"sourcesContent":["import type {\n TransactionItem,\n StandaloneTransactionItem,\n BatchTransactionItem,\n MinTransactionItem,\n} from \"../types\";\nimport { atom } from \"jotai\";\nimport { jotaiStore } from \"@/core/store\";\n\nimport { ensureCallsStatusFactory } from \"../queries/ensureCallsStatus\";\nimport { ensureTxReceiptFactory } from \"../queries/ensureTxReceipt\";\nimport {\n WaitForCallsStatusTimeoutError,\n TransactionReceiptNotFoundError,\n WaitForTransactionReceiptTimeoutError,\n MethodNotSupportedRpcError,\n CallExecutionError,\n} from \"viem\";\nimport { transactionLogger } from \"../logger\";\nimport {\n transactionsAtom,\n type TransactionsMap,\n type TransactionsState,\n} from \"./transactionsAtom\";\nimport {\n isBatchTransactionItem,\n isGnosisSafeTx,\n isStandaloneTransactionItem,\n} from \"../utils\";\nimport { assert } from \"ts-essentials\";\nimport { accountAtom } from \"@/lib/web3/wagmi/external\";\n\nexport const addTxAtom = atom<null, [transaction: MinTransactionItem], void>(\n null,\n async (get, set, transaction) => {\n const { connector, address } = get(accountAtom);\n assert(connector && address, \"connector and address are required\");\n\n const txWithMeta: TransactionItem = {\n ...transaction,\n account: address,\n timestamp: Date.now(),\n dropped: false,\n connectorData: {\n type: connector.type,\n id: connector.id,\n },\n };\n set(transactionsAtom, (current) => assignTx(current, txWithMeta));\n\n if (isStandaloneTransactionItem(txWithMeta)) {\n await set(finalizeStandaloneTxAtom, txWithMeta);\n } else {\n await set(finalizeBatchTxAtom, txWithMeta);\n }\n }\n);\n\nexport const finalizeStandaloneTxAtom = atom<\n null,\n [StandaloneTransactionItem],\n Promise<void>\n>(null, async (_, set, transaction) => {\n const finalizedTx: StandaloneTransactionItem = { ...transaction };\n const ensureTxReceipt = ensureTxReceiptFactory();\n const isTxThroughSafe = isGnosisSafeTx(finalizedTx);\n\n try {\n // ensureTxReceipt internally makes sure to use walletClient for Safe connector\n const txReceipt = await ensureTxReceipt({\n hash: finalizedTx.transactionHash,\n chainId: finalizedTx.chainId,\n });\n finalizedTx.receipt = txReceipt;\n } catch (error) {\n if (\n /* \n At different steps of the waitForTransactionReceipt func different errors can be thrown.\n And if tx turned in eth_call with the same params succeeds (which it normally should not if it reverted for a valid reason and not gas or something),\n we can even get a useless Error(\"unknown reason\") or Error(\"0xrandom_hash\")\n */\n error instanceof WaitForTransactionReceiptTimeoutError || // thrown when transaction is not found within the timeout period\n error instanceof TransactionReceiptNotFoundError || // thrown when transaction receipt is not found\n error instanceof CallExecutionError // thrown when the transaction execution fails on-chain (execution reverted, out of gas, etc)\n ) {\n finalizedTx.dropped = true;\n transactionLogger.error(\"tx dropped\", {\n error,\n finalizedTx,\n isTxThroughSafe,\n });\n } else throw error;\n } finally {\n if (finalizedTx.receipt || finalizedTx.dropped) {\n set(transactionsAtom, (current) => assignTx(current, finalizedTx));\n transactionLogger.log(\"tx finalized\", { finalizedTx, isTxThroughSafe });\n }\n }\n});\n\nexport const finalizeBatchTxAtom = atom<\n null,\n [BatchTransactionItem],\n Promise<void>\n>(null, async (_, set, transaction) => {\n const finalizedTx: BatchTransactionItem = { ...transaction };\n const ensureCallsStatus = ensureCallsStatusFactory();\n\n try {\n const { receipts, status } = await ensureCallsStatus({\n id: finalizedTx.callsId,\n });\n finalizedTx.callsStatus = status;\n finalizedTx.receipt = receipts?.[receipts.length - 1];\n } catch (error) {\n if (\n error instanceof WaitForCallsStatusTimeoutError ||\n error instanceof MethodNotSupportedRpcError\n ) {\n finalizedTx.dropped = true;\n transactionLogger.error(\"batch tx dropped\", { error, finalizedTx });\n } else {\n finalizedTx.callsStatus = \"failure\";\n transactionLogger.error(\"batch tx failed\", { error, finalizedTx });\n throw error;\n }\n } finally {\n set(transactionsAtom, (current) => assignTx(current, finalizedTx));\n transactionLogger.log(\"batch tx finalized\", { finalizedTx });\n }\n});\n\nexport const addTx = async (transaction: MinTransactionItem) => {\n return jotaiStore.set(addTxAtom, transaction);\n};\n\nfunction sanitizeTx(tx: TransactionItem): TransactionItem {\n if (isBatchTransactionItem(tx)) {\n const txItem = {\n action: tx.action,\n account: tx.account,\n chainId: tx.chainId,\n callsId: tx.callsId,\n callsStatus: tx.callsStatus,\n timestamp: tx.timestamp,\n dropped: tx.dropped,\n receipt: tx.receipt,\n transactionSpecificData: tx.transactionSpecificData,\n } as BatchTransactionItem;\n\n if (tx.connectorData) {\n txItem.connectorData = {\n type: tx.connectorData.type,\n id: tx.connectorData.id,\n };\n }\n\n return txItem;\n }\n\n const txItem = {\n action: tx.action,\n chainId: tx.chainId,\n account: tx.account,\n transactionHash: tx.transactionHash,\n timestamp: tx.timestamp,\n dropped: tx.dropped,\n receipt: tx.receipt,\n transactionSpecificData: tx.transactionSpecificData,\n } as StandaloneTransactionItem;\n\n if (tx.connectorData) {\n txItem.connectorData = {\n type: tx.connectorData.type,\n id: tx.connectorData.id,\n };\n }\n\n return txItem;\n}\n\nfunction assignTx(\n currentTransactions: TransactionsState,\n transaction: TransactionItem\n): TransactionsState {\n transactionLogger.log(\"assignTx\", {\n account: transaction.account,\n transaction,\n });\n\n const accountTransactions = currentTransactions[transaction.account] || {};\n const identifier = isStandaloneTransactionItem(transaction)\n ? transaction.transactionHash\n : transaction.callsId;\n\n const updatedAccountTransactions: TransactionsMap = {\n ...accountTransactions,\n [identifier]: sanitizeTx({\n ...accountTransactions[identifier],\n ...transaction,\n }),\n };\n\n return {\n ...currentTransactions,\n [transaction.account]: updatedAccountTransactions,\n };\n}\n"],"names":["addTxAtom","atom","get","set","transaction","connector","address","accountAtom","assert","txWithMeta","account","timestamp","Date","now","dropped","connectorData","type","id","transactionsAtom","current","assignTx","isStandaloneTransactionItem","finalizeStandaloneTxAtom","finalizeBatchTxAtom","_","finalizedTx","ensureTxReceipt","ensureTxReceiptFactory","isTxThroughSafe","isGnosisSafeTx","txReceipt","hash","transactionHash","chainId","receipt","error","WaitForTransactionReceiptTimeoutError","TransactionReceiptNotFoundError","CallExecutionError","transactionLogger","log","ensureCallsStatus","ensureCallsStatusFactory","receipts","status","callsId","callsStatus","length","WaitForCallsStatusTimeoutError","MethodNotSupportedRpcError","addTx","jotaiStore","sanitizeTx","tx","isBatchTransactionItem","txItem","action","transactionSpecificData","currentTransactions","accountTransactions","identifier","updatedAccountTransactions"],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { EXTERNAL_CONNECTOR_SAFE_ID } from '../components/web3/ConnectExternalProvider/constants';
|
|
1
2
|
import { CallsReceipt } from '../hooks/batch/useAwaitCalls';
|
|
2
3
|
import { SupportedChainId } from '../lib/web3/wagmi/types';
|
|
3
4
|
import { OrderData } from '@velora-dex/sdk';
|
|
4
5
|
import { DeltaOrderToPost } from '@velora-dex/sdk/dist/methods/delta/postDeltaOrder';
|
|
5
6
|
import { Address, Hash, Prettify, TransactionReceipt } from 'viem';
|
|
6
7
|
import { Connector } from 'wagmi';
|
|
7
|
-
import { safe } from 'wagmi/connectors';
|
|
8
|
-
type ConnectorData = Pick<Connector, "type">;
|
|
8
|
+
import { safe, injected } from 'wagmi/connectors';
|
|
9
|
+
type ConnectorData = Pick<Connector, "type" | "id">;
|
|
9
10
|
export type TransactionCommonData = {
|
|
10
11
|
chainId: SupportedChainId;
|
|
11
12
|
timestamp: number;
|
|
@@ -92,10 +93,16 @@ export type MinTransactionItem = TransactionWithoutMeta<TransactionItem>;
|
|
|
92
93
|
export type StandaloneTransactionItem = Prettify<Extract<TransactionItem, StandaloneTransactionItemData>>;
|
|
93
94
|
export type BatchTransactionItem = Prettify<Extract<TransactionItem, BatchTransactionItemData>>;
|
|
94
95
|
export type TransactionWithoutMeta<T> = T extends Pick<TransactionItem, "dropped" | "timestamp" | "account" | "connectorData"> ? Prettify<Omit<T, "dropped" | "timestamp" | "account" | "connectorData">> : T;
|
|
96
|
+
type SafeConnectorData = {
|
|
97
|
+
type: typeof safe.type;
|
|
98
|
+
id: string;
|
|
99
|
+
};
|
|
100
|
+
type SafeIframeThroughExternalConnectorData = {
|
|
101
|
+
type: typeof injected.type;
|
|
102
|
+
id: typeof EXTERNAL_CONNECTOR_SAFE_ID;
|
|
103
|
+
};
|
|
95
104
|
export type GnosisSafeTransactionItem = Prettify<TransactionItem & {
|
|
96
|
-
connectorData:
|
|
97
|
-
type: typeof safe.type;
|
|
98
|
-
}>;
|
|
105
|
+
connectorData: SafeConnectorData | SafeIframeThroughExternalConnectorData;
|
|
99
106
|
}>;
|
|
100
107
|
export {};
|
|
101
108
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transactions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transactions/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/transactions/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/transactions/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,eAAe,EACf,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,eAAe,GACpB,IAAI,IAAI,yBAAyB,CAEnC;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,eAAe,GACpB,IAAI,IAAI,oBAAoB,CAE9B;AAED,wBAAgB,0BAA0B,CACxC,CAAC,SAAS,yBAAyB,GAAG,oBAAoB,EAC1D,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAQxB;AAED,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,CAAC,yBAAyB,GAAG,oBAAoB,CAAC,EAAE,GACjE,mBAAmB,EAAE,CAEvB;AAID,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC;AAE3E,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,mBAAmB,EACvE,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,GACjB,yBAAyB,EAAE,CAiB7B;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,eAAe,GAClB,EAAE,IAAI,yBAAyB,CAMjC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isExternalConnectorSafeIframe } from '../components/web3/ConnectExternalProvider/utils.js';
|
|
1
2
|
import { isSafeConnector } from '../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
2
3
|
|
|
3
4
|
function isStandaloneTransactionItem(item) {
|
|
@@ -24,7 +25,7 @@ function combineSwapTransactionItems(...txArrays) {
|
|
|
24
25
|
return Object.values(map);
|
|
25
26
|
}
|
|
26
27
|
function isGnosisSafeTx(tx) {
|
|
27
|
-
return !!tx.connectorData && isSafeConnector(tx.connectorData);
|
|
28
|
+
return !!tx.connectorData && (isSafeConnector(tx.connectorData) || isExternalConnectorSafeIframe(tx.connectorData));
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
export { combineSwapTransactionItems, extractPendingTransactions, extractSwapTransactions, isBatchTransactionItem, isGnosisSafeTx, isStandaloneTransactionItem };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/transactions/utils.ts"],"sourcesContent":["import type {\n BatchTransactionItem,\n GnosisSafeTransactionItem,\n StandaloneTransactionItem,\n TransactionItem,\n TransactionItemSwap,\n} from \"./types\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport type { Hash } from \"viem\";\n\nexport function isStandaloneTransactionItem(\n item: TransactionItem\n): item is StandaloneTransactionItem {\n return \"transactionHash\" in item;\n}\n\nexport function isBatchTransactionItem(\n item: TransactionItem\n): item is BatchTransactionItem {\n return \"callsId\" in item;\n}\n\nexport function extractPendingTransactions<\n T extends StandaloneTransactionItem | BatchTransactionItem,\n>(transactions: T[]): T[] {\n return transactions.filter(\n (tx) =>\n !tx.dropped &&\n (isStandaloneTransactionItem(tx)\n ? !tx.receipt\n : !tx.callsStatus || tx.callsStatus === \"pending\")\n );\n}\n\nexport function extractSwapTransactions(\n transactions: (StandaloneTransactionItem | BatchTransactionItem)[]\n): TransactionItemSwap[] {\n return transactions.filter((tx) => tx.action === \"swap\");\n}\n\n// not all TransactionItemSwap have transactionHash\n// id will be either transactionHash (for standalone tx) or receipt.transactionHash (for batch tx)\nexport type TransactionItemSwapWithId = TransactionItemSwap & { id: Hash };\n\nexport function combineSwapTransactionItems<T extends TransactionItemSwap>(\n ...txArrays: T[][]\n): TransactionItemSwapWithId[] {\n const map: Record<Hash, TransactionItemSwapWithId> = {};\n\n txArrays.flat().forEach((item) => {\n const transactionHash = isStandaloneTransactionItem(item)\n ? item.transactionHash\n : item.receipt?.transactionHash;\n\n // we can't rely on callsId for batch swap tx as identifier if we have another source of truth\n // better to not show pending calls until we have transactionHash\n // otherwise it may lead to duplicate entries in the Activities list\n // when transaction appeared in the metabase but we still have pending call in the local storage\n if (transactionHash)\n map[transactionHash] = { ...item, id: transactionHash };\n });\n\n return Object.values(map);\n}\n\nexport function isGnosisSafeTx(\n tx: TransactionItem\n): tx is GnosisSafeTransactionItem {\n return !!tx.connectorData
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/transactions/utils.ts"],"sourcesContent":["import { isExternalConnectorSafeIframe } from \"@/components/web3/ConnectExternalProvider/utils\";\nimport type {\n BatchTransactionItem,\n GnosisSafeTransactionItem,\n StandaloneTransactionItem,\n TransactionItem,\n TransactionItemSwap,\n} from \"./types\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport type { Hash } from \"viem\";\n\nexport function isStandaloneTransactionItem(\n item: TransactionItem\n): item is StandaloneTransactionItem {\n return \"transactionHash\" in item;\n}\n\nexport function isBatchTransactionItem(\n item: TransactionItem\n): item is BatchTransactionItem {\n return \"callsId\" in item;\n}\n\nexport function extractPendingTransactions<\n T extends StandaloneTransactionItem | BatchTransactionItem,\n>(transactions: T[]): T[] {\n return transactions.filter(\n (tx) =>\n !tx.dropped &&\n (isStandaloneTransactionItem(tx)\n ? !tx.receipt\n : !tx.callsStatus || tx.callsStatus === \"pending\")\n );\n}\n\nexport function extractSwapTransactions(\n transactions: (StandaloneTransactionItem | BatchTransactionItem)[]\n): TransactionItemSwap[] {\n return transactions.filter((tx) => tx.action === \"swap\");\n}\n\n// not all TransactionItemSwap have transactionHash\n// id will be either transactionHash (for standalone tx) or receipt.transactionHash (for batch tx)\nexport type TransactionItemSwapWithId = TransactionItemSwap & { id: Hash };\n\nexport function combineSwapTransactionItems<T extends TransactionItemSwap>(\n ...txArrays: T[][]\n): TransactionItemSwapWithId[] {\n const map: Record<Hash, TransactionItemSwapWithId> = {};\n\n txArrays.flat().forEach((item) => {\n const transactionHash = isStandaloneTransactionItem(item)\n ? item.transactionHash\n : item.receipt?.transactionHash;\n\n // we can't rely on callsId for batch swap tx as identifier if we have another source of truth\n // better to not show pending calls until we have transactionHash\n // otherwise it may lead to duplicate entries in the Activities list\n // when transaction appeared in the metabase but we still have pending call in the local storage\n if (transactionHash)\n map[transactionHash] = { ...item, id: transactionHash };\n });\n\n return Object.values(map);\n}\n\nexport function isGnosisSafeTx(\n tx: TransactionItem\n): tx is GnosisSafeTransactionItem {\n return (\n !!tx.connectorData &&\n (isSafeConnector(tx.connectorData) ||\n isExternalConnectorSafeIframe(tx.connectorData))\n );\n}\n"],"names":["isStandaloneTransactionItem","item","isBatchTransactionItem","extractPendingTransactions","transactions","filter","tx","dropped","receipt","callsStatus","extractSwapTransactions","action","combineSwapTransactionItems","txArrays","map","flat","forEach","transactionHash","id","Object","values","isGnosisSafeTx","connectorData","isSafeConnector","isExternalConnectorSafeIframe"],"mappings":";;;AAWO,SAASA,4BACdC,IAAAA,EACmC;AACnC,EAAA,OAAO,iBAAA,IAAqBA,IAAAA;AAC9B;AAEO,SAASC,uBACdD,IAAAA,EAC8B;AAC9B,EAAA,OAAO,SAAA,IAAaA,IAAAA;AACtB;AAEO,SAASE,2BAEdC,YAAAA,EAAwB;AACxB,EAAA,OAAOA,aAAaC,MAAAA,CACjBC,CAAAA,EAAAA,KACC,CAACA,EAAAA,CAAGC,YACHP,2BAAAA,CAA4BM,EAAE,CAAA,GAC3B,CAACA,GAAGE,OAAAA,GACJ,CAACF,GAAGG,WAAAA,IAAeH,EAAAA,CAAGG,gBAAgB,SAAA,CAC9C,CAAA;AACF;AAEO,SAASC,wBACdN,YAAAA,EACuB;AACvB,EAAA,OAAOA,YAAAA,CAAaC,MAAAA,CAAQC,CAAAA,EAAAA,KAAOA,EAAAA,CAAGK,WAAW,MAAM,CAAA;AACzD;AAMO,SAASC,+BACXC,QAAAA,EAC0B;AAC7B,EAAA,MAAMC,MAA+C,EAAC;AAEtDD,EAAAA,QAAAA,CAASE,IAAAA,EAAK,CAAEC,OAAAA,CAASf,CAAAA,IAAAA,KAAS;AAChC,IAAA,MAAMgB,kBAAkBjB,2BAAAA,CAA4BC,IAAI,IACpDA,IAAAA,CAAKgB,eAAAA,GACLhB,KAAKO,OAAAA,EAASS,eAAAA;AAMlB,IAAA,IAAIA,eAAAA,EACFH,GAAAA,CAAIG,eAAe,CAAA,GAAI;AAAA,MAAE,GAAGhB,IAAAA;AAAAA,MAAMiB,EAAAA,EAAID;AAAAA,KAAgB;AAAA,EAC1D,CAAC,CAAA;AAED,EAAA,OAAOE,MAAAA,CAAOC,OAAON,GAAG,CAAA;AAC1B;AAEO,SAASO,eACdf,EAAAA,EACiC;AACjC,EAAA,OACE,CAAC,CAACA,EAAAA,CAAGgB,aAAAA,KACJC,eAAAA,CAAgBjB,GAAGgB,aAAa,CAAA,IAC/BE,6BAAAA,CAA8BlB,EAAAA,CAAGgB,aAAa,CAAA,CAAA;AAEpD;;;;"}
|