From 54b22394ab46dfd90d39ed58f68bc6e7809b4610 Mon Sep 17 00:00:00 2001 From: moizahmedd Date: Tue, 26 Nov 2024 14:54:42 -0500 Subject: [PATCH 1/3] support advanced txn --- .../dimo-network-login-with-dimo-0.0.8.tgz | Bin 19947 -> 21705 bytes example-dimo-auth/package-lock.json | 95 +++++++++--------- example-dimo-auth/src/App.tsx | 51 ++++++++-- sdk/src/auth/embedAuth.ts | 13 ++- sdk/src/auth/popupAuth.ts | 13 ++- sdk/src/auth/redirectAuth.ts | 31 ++++-- sdk/src/components/BaseDimoButton.tsx | 27 +++-- .../ExecuteAdvancedTransactionWithDimo.tsx | 48 +++++++++ sdk/src/enums/globalEnums.ts | 2 +- sdk/src/index.ts | 1 + sdk/src/types/TransactionData.ts | 10 ++ sdk/src/utils/eventHandler.ts | 47 ++++++++- 12 files changed, 262 insertions(+), 76 deletions(-) create mode 100644 sdk/src/components/ExecuteAdvancedTransactionWithDimo.tsx create mode 100644 sdk/src/types/TransactionData.ts diff --git a/example-dimo-auth/dimo-network-login-with-dimo-0.0.8.tgz b/example-dimo-auth/dimo-network-login-with-dimo-0.0.8.tgz index 5ec24844507c6504542abb059af793c1b95fdfcc..94401a1c9e24c9a6dd32996a137dbc1eae8eea8e 100644 GIT binary patch literal 21705 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 literal 19947 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

a9MQHS}E^vUj7>H6!?Pk+A`CS z^`(D4X7PriruL@SovYUCKI{-BPUmVrBD&|3{t7Mbt5Bqk2u#Pw#(}=X-lLy&B=e+J zfUqRj{JK#u{}5|)Rut}?c2mvN-5w&&5(8H*@88Jb2}NFB4xfXWy*I3rdPfF_OQ1O* z^xP#nE

=H+*WANu|r>hhO%-_)J{~MFuXV2hn>0bn(Awi$W*6|0s`Cavv5X;rbGs za+c`mC^!0!S7cJ32Jr;VLL*wypIvo2@#9z$I?Slgp5$I@a5narr=fuLcrOLx(AC}e z*}D%Su)P;;M9G+yC$E!N|DyLtpKC7YBjx*=MMhU&Bhd(qiYw31Ix0fo_h zZN#q*p#jhV!!vL1z}e@@C!IcQVuhCRS2r+l-`MNNd>1b!=OLH=;&*Hq0hYzPcesakGyS!UIn9mfHP>CKjV*|T zDrK85wD&d~{H?f0gnrQB-6m{w{)`~{?9NB6)_iowz*07h@;$JB3Ir2JHYnVnFaU#e z_s}T-e-&^8EMb6}%rhJ@qWWj_t3xq`XDGYDX>@}kf22kyy@7BUL61}Xmz$1yD!O?lre7_0!?P+toJ)9kEYF%-^rPIa zq`AakP)#{nf%!?^0bdp>BY#(8aF+balbS?zq(z!Ezm4k9U9}Wmbv9^0`w%5MNh|hHHey$OG(u$9JJj#R< z684TJSAa1AL?giZS_75g6qPhL{v5GcG%1LY z;fN_e$2&ZVcpzHB6MB7;UXbk=vWkRA8I|g;JIt>LYgkjG)== 0.4" @@ -8765,11 +8765,14 @@ } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", + "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10649,9 +10652,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", @@ -13016,17 +13019,17 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", + "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "gopd": "^1.0.1", + "which-builtin-type": "^1.1.4" }, "engines": { "node": ">= 0.4" @@ -14983,16 +14986,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", + "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.13", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -15002,16 +15006,16 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -15627,15 +15631,16 @@ } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz", + "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", "dependencies": { + "call-bind": "^1.0.7", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.1.4", "is-weakref": "^1.0.2", diff --git a/example-dimo-auth/src/App.tsx b/example-dimo-auth/src/App.tsx index 8504263..744f11f 100644 --- a/example-dimo-auth/src/App.tsx +++ b/example-dimo-auth/src/App.tsx @@ -4,14 +4,29 @@ import "./App.css"; import { LoginWithDimo, ShareVehiclesWithDimo, + ExecuteAdvancedTransactionWithDimo, initializeDimoSDK, useDimoAuthState, } from "@dimo-network/login-with-dimo"; +import { Abi } from "viem"; function App() { const [permissionsEnabled, setPermissionsEnabled] = useState(false); const { isAuthenticated, getValidJWT } = useDimoAuthState(); + const sampleAbi: Abi = [ + { + type: "function", + name: "transfer", + stateMutability: "nonpayable", + inputs: [ + { name: "to", type: "address" }, + { name: "amount", type: "uint256" }, + ], + outputs: [], + }, + ]; + // Toggle handler const handleToggle = () => { setPermissionsEnabled(!permissionsEnabled); @@ -47,12 +62,25 @@ function App() {

Popup Example

{isAuthenticated ? ( - console.log("Success:", authData)} - onError={(error: any) => console.error("Error:", error)} - permissionTemplateId={"1"} - /> + <> + console.log("Success:", authData)} + onError={(error: any) => console.error("Error:", error)} + permissionTemplateId={"1"} + /> + + console.log("Success:", transactionHash)} + onError={(error: any) => console.error("Error:", error)} + address="0x21cFE003997fB7c2B3cfe5cf71e7833B7B2eCe10" + value="0" + abi={sampleAbi} + functionName="balanceOf" + args={["0x62b98e019e0d3e4A1Ad8C786202e09017Bd995e1", "0"]} + /> + ) : ( console.error("Error:", error)} permissionTemplateId={"1"} /> + + console.log("Success:", authData)} + onError={(error: any) => console.error("Error:", error)} + address="0x21cFE003997fB7c2B3cfe5cf71e7833B7B2eCe10" + value="0" + abi={sampleAbi} + functionName="transfer" + args={["0x62b98e019e0d3e4A1Ad8C786202e09017Bd995e1", "0"]} + /> diff --git a/sdk/src/auth/embedAuth.ts b/sdk/src/auth/embedAuth.ts index 64163b3..be49361 100644 --- a/sdk/src/auth/embedAuth.ts +++ b/sdk/src/auth/embedAuth.ts @@ -1,9 +1,14 @@ import { EntryState } from "../enums/globalEnums"; +import { TransactionData } from "../types/TransactionData"; import { handleMessageForEmbed } from "../utils/eventHandler"; export const embedAuth = ( entryState: EntryState, - onSuccess: (authData: { token: string }) => void, + onSuccess: (data: { + token: string; + transactionHash?: string; + transactionReceipt?: any; + }) => void, onError: (error: Error) => void, setAuthenticated: React.Dispatch>, dimoLogin: string, @@ -12,7 +17,8 @@ export const embedAuth = ( apiKey?: string, permissionTemplateId?: string, vehicles?: string[], - vehicleMakes?: string[] + vehicleMakes?: string[], + transactionData?: TransactionData ) => { const cleanup = handleMessageForEmbed( dimoLogin, @@ -25,6 +31,7 @@ export const embedAuth = ( apiKey, permissionTemplateId, vehicles, - vehicleMakes + vehicleMakes, + transactionData ); }; diff --git a/sdk/src/auth/popupAuth.ts b/sdk/src/auth/popupAuth.ts index 5dc397a..b79263e 100644 --- a/sdk/src/auth/popupAuth.ts +++ b/sdk/src/auth/popupAuth.ts @@ -1,9 +1,14 @@ import { EntryState } from "../enums/globalEnums"; +import { TransactionData } from "../types/TransactionData"; import { handleMessageForPopup } from "../utils/eventHandler"; export const popupAuth = ( entryState: EntryState, - onSuccess: (authData: { token: string }) => void, + onSuccess: (data: { + token: string; + transactionHash?: string; + transactionReceipt?: any; + }) => void, onError: (error: Error) => void, setAuthenticated: React.Dispatch>, dimoLogin: string, @@ -12,7 +17,8 @@ export const popupAuth = ( apiKey?: string, permissionTemplateId?: string, vehicles?: string[], - vehicleMakes?: string[] + vehicleMakes?: string[], + transactionData?: TransactionData ) => { try { const popup = window.open( @@ -38,7 +44,8 @@ export const popupAuth = ( apiKey, permissionTemplateId, vehicles, - vehicleMakes + vehicleMakes, + transactionData ); } catch (error: unknown) { if (error instanceof Error) { diff --git a/sdk/src/auth/redirectAuth.ts b/sdk/src/auth/redirectAuth.ts index f66974a..79e7505 100644 --- a/sdk/src/auth/redirectAuth.ts +++ b/sdk/src/auth/redirectAuth.ts @@ -1,4 +1,5 @@ import { EntryState } from "../enums/globalEnums"; +import { TransactionData } from "../types/TransactionData"; export const redirectAuth = ( entryState: EntryState, @@ -11,22 +12,40 @@ export const redirectAuth = ( permissionTemplateId?: string, vehicles?: string[], vehicleMakes?: string[], + transactionData?: TransactionData // Add transactionData as a parameter ) => { - // Create URLSearchParams instance const params = new URLSearchParams(); if (clientId) params.append("clientId", clientId); if (redirectUri) params.append("redirectUri", redirectUri); - if (permissionTemplateId) params.append("permissionTemplateId", permissionTemplateId); + if (permissionTemplateId) + params.append("permissionTemplateId", permissionTemplateId); if (entryState) params.append("entryState", entryState); if (vehicles && vehicles.length > 0) { - vehicles.forEach(vehicle => params.append("vehicles", vehicle)); - } + vehicles.forEach((vehicle) => params.append("vehicles", vehicle)); + } if (vehicleMakes && vehicleMakes.length > 0) { - vehicleMakes.forEach(vehicleMake => params.append("vehicleMakes", vehicleMake)); - } + vehicleMakes.forEach((vehicleMake) => + params.append("vehicleMakes", vehicleMake) + ); + } + + // Serialize and encode transactionData + if (transactionData) { + const serializedTransactionData = encodeURIComponent( + JSON.stringify(transactionData) + ); + + if (serializedTransactionData.length > 1000) { + console.warn( + "Serialized transactionData is too large for a URL parameter." + ); + } else { + params.append("transactionData", serializedTransactionData); + } + } // Construct the full URL window.location.href = `${dimoLogin}?${params.toString()}`; diff --git a/sdk/src/components/BaseDimoButton.tsx b/sdk/src/components/BaseDimoButton.tsx index 5b5ad7f..f3ec73a 100644 --- a/sdk/src/components/BaseDimoButton.tsx +++ b/sdk/src/components/BaseDimoButton.tsx @@ -5,18 +5,28 @@ import { redirectAuth } from "../auth/redirectAuth"; import { getDimoConfig } from "../config/sdkConfig"; import { EntryState } from "../enums/globalEnums"; import "../styles/BaseDimoButton.css"; -import { DimoAuthProvider, useDimoAuthState, useDimoAuthUpdater } from "../auth/context/DimoAuthContext"; +import { + DimoAuthProvider, + useDimoAuthState, + useDimoAuthUpdater, +} from "../auth/context/DimoAuthContext"; +import { TransactionData } from "../types/TransactionData"; interface BaseDimoButtonProps { mode: "popup" | "embed" | "redirect"; entryState: EntryState; - onSuccess: (authData: { token: string }) => void; // Success callback + onSuccess: (data: { + token: string; + transactionHash?: string; + transactionReceipt?: any; + }) => void; // Success callback onError: (error: Error) => void; // Error callback buttonLabel: (authenticated: boolean) => string; // Function to determine button label dynamically disableIfAuthenticated?: boolean; // Disable button if authenticated (default: false) permissionTemplateId?: string; vehicles?: string[]; vehicleMakes?: string[]; + transactionData?: TransactionData; } const BaseDimoButton: React.FC = ({ @@ -29,14 +39,14 @@ const BaseDimoButton: React.FC = ({ permissionTemplateId, vehicles, vehicleMakes, + transactionData, }) => { const { clientId, redirectUri, apiKey, environment } = getDimoConfig(); //DimoAuthProvider contexts, the following can only be used when the component using them is wrapped in a - const { isAuthenticated } = useDimoAuthState(); + const { isAuthenticated } = useDimoAuthState(); const { setAuthenticated } = useDimoAuthUpdater(); - const dimoLogin = environment === "development" ? "https://login.dev.dimo.org" @@ -56,7 +66,8 @@ const BaseDimoButton: React.FC = ({ apiKey, permissionTemplateId, vehicles, - vehicleMakes + vehicleMakes, + transactionData ); break; case "redirect": @@ -70,7 +81,8 @@ const BaseDimoButton: React.FC = ({ apiKey, permissionTemplateId, vehicles, - vehicleMakes + vehicleMakes, + transactionData ); break; default: @@ -92,7 +104,8 @@ const BaseDimoButton: React.FC = ({ apiKey, permissionTemplateId, vehicles, - vehicleMakes + vehicleMakes, + transactionData ); } }; diff --git a/sdk/src/components/ExecuteAdvancedTransactionWithDimo.tsx b/sdk/src/components/ExecuteAdvancedTransactionWithDimo.tsx new file mode 100644 index 0000000..6bd4880 --- /dev/null +++ b/sdk/src/components/ExecuteAdvancedTransactionWithDimo.tsx @@ -0,0 +1,48 @@ +import React from "react"; +import BaseDimoButton from "./BaseDimoButton"; +import { EntryState } from "../enums/globalEnums"; +import { TransactionData } from "../types/TransactionData"; +import { Abi } from "viem"; // Assuming `Abi` is imported from viem types + +interface ExecuteAdvancedTransactionProps { + mode: "popup" | "embed" | "redirect"; + onSuccess: (data: { + token: string; + transactionHash?: string; + transactionReceipt?: any; + }) => void; // Success callback + onError: (error: Error) => void; // Error callback + address: string; + value: string; + abi: Abi; + functionName: string; + args: string[]; +} + +const ExecuteAdvancedTransactionWithDimo: React.FC< + ExecuteAdvancedTransactionProps +> = ({ mode, onSuccess, onError, address, value, abi, functionName, args }) => { + if (!address || !value || !abi || !functionName || !args) { + throw new Error("Missing required transaction parameters."); + } + const transactionData: TransactionData = { + address, + value, // BigInt to string + abi, + functionName, + args, + }; + + return ( + "Execute Advanced Transaction with Dimo"} + transactionData={transactionData} + /> + ); +}; + +export default ExecuteAdvancedTransactionWithDimo; diff --git a/sdk/src/enums/globalEnums.ts b/sdk/src/enums/globalEnums.ts index 2fe9503..86cb6de 100644 --- a/sdk/src/enums/globalEnums.ts +++ b/sdk/src/enums/globalEnums.ts @@ -3,7 +3,7 @@ export enum EntryState { OTP_INPUT = "OTP_INPUT", SUCCESS = "SUCCESS", VEHICLE_MANAGER = "VEHICLE_MANAGER", - EXECUTE_TRANSACTION = "EXECUTE_TRANSACTION", + ADVANCED_TRANSACTION = "ADVANCED_TRANSACTION", ERROR = "ERROR", LOADING = "LOADING", } diff --git a/sdk/src/index.ts b/sdk/src/index.ts index a012481..ebe2814 100644 --- a/sdk/src/index.ts +++ b/sdk/src/index.ts @@ -1,6 +1,7 @@ // Export components export { default as LoginWithDimo } from './components/LoginWithDimo'; export { default as ShareVehiclesWithDimo } from './components/ShareVehiclesWithDimo'; +export { default as ExecuteAdvancedTransactionWithDimo } from './components/ExecuteAdvancedTransactionWithDimo'; // Export config initialization export { initializeDimoSDK, getDimoConfig } from './config/sdkConfig'; diff --git a/sdk/src/types/TransactionData.ts b/sdk/src/types/TransactionData.ts new file mode 100644 index 0000000..11a9dba --- /dev/null +++ b/sdk/src/types/TransactionData.ts @@ -0,0 +1,10 @@ +import { Abi } from "viem"; // Assuming `Abi` is imported from viem types + + +export interface TransactionData { + address: string; + value: string; + abi: Abi; // Serialized ABI + functionName: string; + args: string[]; +} diff --git a/sdk/src/utils/eventHandler.ts b/sdk/src/utils/eventHandler.ts index 3a1d271..6418ee9 100644 --- a/sdk/src/utils/eventHandler.ts +++ b/sdk/src/utils/eventHandler.ts @@ -1,5 +1,6 @@ import { EntryState } from "../enums/globalEnums"; import { storeJWTInCookies } from "../storage/storageManager"; +import { TransactionData } from "../types/TransactionData"; /** * @file eventHandler.ts @@ -21,7 +22,11 @@ function getDomain(url: string) { export const handleMessageForPopup = ( expectedOrigin: string, entryState: EntryState, - onSuccess: (authData: { token: string }) => void, + onSuccess: (data: { + token: string; + transactionHash?: string; + transactionReceipt?: any; + }) => void, onError: (error: Error) => void, setAuthenticated: React.Dispatch>, popup?: Window | null, @@ -31,6 +36,7 @@ export const handleMessageForPopup = ( permissionTemplateId?: string, vehicles?: string[], vehicleMakes?: string[], + transactionData?: TransactionData ) => { const popupListener = (event: MessageEvent) => { if (getDomain(event.origin) !== getDomain(expectedOrigin)) { @@ -38,13 +44,13 @@ export const handleMessageForPopup = ( return; } - const { eventType, token, authType } = event.data; + const { eventType, token, authType, transactionHash, message } = + event.data; // Handle the "READY" message if (eventType === "READY") { // Once the "READY" message is received, send the credentials if (popup) { - //Temporary Fix //Seems like on Safari, and Mobile Browsers - the popup is not ready to receive messages, even after sending a "READY" message //The set timeout acts as a solution, by modifying the callback loop @@ -57,6 +63,7 @@ export const handleMessageForPopup = ( permissionTemplateId, vehicles, vehicleMakes, + transactionData, entryState, eventType: "AUTH_INIT", }, @@ -82,6 +89,21 @@ export const handleMessageForPopup = ( window.removeEventListener("message", popupListener); } + + if (eventType === "transactionResponse") { + if (transactionHash) { + onSuccess({ token: "", transactionHash }); + } + + if (popup && !popup.closed) { + popup.close(); + console.log("Popup closed successfully."); + } + } + + if ( eventType === "DIMO_ERROR" ) { + onError(message); + } }; // Add event listener specifically for popup auth @@ -94,7 +116,11 @@ export const handleMessageForPopup = ( export const handleMessageForEmbed = ( expectedOrigin: string, entryState: EntryState, - onSuccess: (authData: { token: string }) => void, + onSuccess: (data: { + token: string; + transactionHash?: string; + transactionReceipt?: any; + }) => void, onError: (error: Error) => void, setAuthenticated: React.Dispatch>, clientId?: string, @@ -103,6 +129,7 @@ export const handleMessageForEmbed = ( permissionTemplateId?: string, vehicles?: string[], vehicleMakes?: string[], + transactionData?: TransactionData ) => { const embedListener = (event: MessageEvent) => { if (getDomain(event.origin) !== getDomain(expectedOrigin)) { @@ -110,7 +137,8 @@ export const handleMessageForEmbed = ( return; } - const { eventType, token, authType } = event.data; + const { eventType, token, authType, transactionHash, transactionReceipt } = + event.data; if (eventType === "READY") { // Once the "READY" message is received, send the credentials @@ -126,6 +154,7 @@ export const handleMessageForEmbed = ( vehicles, vehicleMakes, entryState, + transactionData, eventType: "AUTH_INIT", }; @@ -140,6 +169,14 @@ export const handleMessageForEmbed = ( setAuthenticated(true); onSuccess({ token }); } + + if (eventType === "transactionResponse") { + if (transactionHash || transactionReceipt) { + onSuccess({ token: "", transactionHash, transactionReceipt }); + } else { + onError(Error("Could not execute transaction")); + } + } }; // Add event listener specifically for embed auth From 38c2bffa90b1dd0bf1736eb1ca9c9e6c11108c0c Mon Sep 17 00:00:00 2001 From: moizahmedd Date: Tue, 26 Nov 2024 16:37:29 -0500 Subject: [PATCH 2/3] add whole abi --- .../dimo-network-login-with-dimo-0.0.8.tgz | Bin 21705 -> 21654 bytes .../dimo-network-login-with-dimo-0.0.9.tgz | Bin 0 -> 21641 bytes example-dimo-auth/package-lock.json | 8 +- example-dimo-auth/package.json | 2 +- example-dimo-auth/src/App.tsx | 1073 ++++++++++++++++- sdk/package.json | 2 +- sdk/src/utils/eventHandler.ts | 10 +- 7 files changed, 1077 insertions(+), 18 deletions(-) create mode 100644 example-dimo-auth/dimo-network-login-with-dimo-0.0.9.tgz diff --git a/example-dimo-auth/dimo-network-login-with-dimo-0.0.8.tgz b/example-dimo-auth/dimo-network-login-with-dimo-0.0.8.tgz index 94401a1c9e24c9a6dd32996a137dbc1eae8eea8e..a3928b42d65ff0bfc88a56324c9d1332f5d0440d 100644 GIT binary patch delta 21640 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 Jzs&&L0RUzK(l7u3 diff --git a/example-dimo-auth/dimo-network-login-with-dimo-0.0.9.tgz b/example-dimo-auth/dimo-network-login-with-dimo-0.0.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..84e00456859bcfab7afefce10f83478a672185ff GIT binary patch literal 21641 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 Y6m|JoewLr*=g0W`|9wesEdbg909Y#h^Z)<= literal 0 HcmV?d00001 diff --git a/example-dimo-auth/package-lock.json b/example-dimo-auth/package-lock.json index 92aab2a..2283468 100644 --- a/example-dimo-auth/package-lock.json +++ b/example-dimo-auth/package-lock.json @@ -8,7 +8,7 @@ "name": "example-dimo-auth", "version": "0.1.0", "dependencies": { - "@dimo-network/login-with-dimo": "file:./dimo-network-login-with-dimo-0.0.8.tgz", + "@dimo-network/login-with-dimo": "file:./dimo-network-login-with-dimo-0.0.9.tgz", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -2235,9 +2235,9 @@ } }, "node_modules/@dimo-network/login-with-dimo": { - "version": "0.0.8", - "resolved": "file:dimo-network-login-with-dimo-0.0.8.tgz", - "integrity": "sha512-qVwzTcoG96v5L/lClRMeEogWg/rSuv617kHBlc7XYz9Cb2NB5dLTtbrv9fRXDnRgd4WCar8LezI5K9AezVwvfA==", + "version": "0.0.9", + "resolved": "file:dimo-network-login-with-dimo-0.0.9.tgz", + "integrity": "sha512-m1JnrFmLBb/Z2Sj1QFjcNGg7XpdtMAa/28wBvFDPlV9XfUSzkp4USW2jZBw/utlLD+vW/pRiNUDcCaPO6pCSSw==", "license": "ISC", "peerDependencies": { "react": "^18.0.0", diff --git a/example-dimo-auth/package.json b/example-dimo-auth/package.json index 68a8946..d5f9e57 100644 --- a/example-dimo-auth/package.json +++ b/example-dimo-auth/package.json @@ -10,7 +10,7 @@ "@types/node": "^16.18.114", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.1", - "@dimo-network/login-with-dimo": "file:./dimo-network-login-with-dimo-0.0.8.tgz", + "@dimo-network/login-with-dimo": "file:./dimo-network-login-with-dimo-0.0.9.tgz", "react": "^18.3.1", "react-dom": "^18.3.1", "react-scripts": "5.0.1", diff --git a/example-dimo-auth/src/App.tsx b/example-dimo-auth/src/App.tsx index 744f11f..bb11ed4 100644 --- a/example-dimo-auth/src/App.tsx +++ b/example-dimo-auth/src/App.tsx @@ -16,14 +16,1077 @@ function App() { const sampleAbi: Abi = [ { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "previousAdmin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newAdmin", + type: "address", + }, + ], + name: "AdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "beacon", + type: "address", + }, + ], + name: "BeaconUpgraded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "delegator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "fromDelegate", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "toDelegate", + type: "address", + }, + ], + name: "DelegateChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "delegate", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "previousBalance", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "newBalance", + type: "uint256", + }, + ], + name: "DelegateVotesChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Paused", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "previousAdminRole", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "newAdminRole", + type: "bytes32", + }, + ], + name: "RoleAdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleGranted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleRevoked", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "Unpaused", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "Upgraded", + type: "event", + }, + { + inputs: [], + name: "DEFAULT_ADMIN_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "DEPOSITOR_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "MINTER_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PAUSER_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "UPGRADER_ROLE", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "burnFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint32", + name: "pos", + type: "uint32", + }, + ], + name: "checkpoints", + outputs: [ + { + components: [ + { + internalType: "uint32", + name: "fromBlock", + type: "uint32", + }, + { + internalType: "uint224", + name: "votes", + type: "uint224", + }, + ], + internalType: "struct ERC20VotesUpgradeable.Checkpoint", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "delegatee", + type: "address", + }, + ], + name: "delegate", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "delegatee", + type: "address", + }, + { + internalType: "uint256", + name: "nonce", + type: "uint256", + }, + { + internalType: "uint256", + name: "expiry", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "delegateBySig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "delegates", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "user", + type: "address", + }, + { + internalType: "bytes", + name: "depositData", + type: "bytes", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + ], + name: "getPastTotalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "blockNumber", + type: "uint256", + }, + ], + name: "getPastVotes", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + ], + name: "getRoleAdmin", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getVotes", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "hasRole", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "user", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "mint", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "nonces", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "numCheckpoints", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pause", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "paused", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "permit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "proxiableUUID", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], stateMutability: "nonpayable", + type: "function", + }, + { inputs: [ - { name: "to", type: "address" }, - { name: "amount", type: "uint256" }, + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "unpause", outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + ], + name: "upgradeTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newImplementation", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "upgradeToAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, ]; @@ -72,12 +1135,14 @@ function App() { console.log("Success:", transactionHash)} + onSuccess={(transactionHash: any) => + console.log("Success:", transactionHash) + } onError={(error: any) => console.error("Error:", error)} address="0x21cFE003997fB7c2B3cfe5cf71e7833B7B2eCe10" value="0" abi={sampleAbi} - functionName="balanceOf" + functionName="transfer" args={["0x62b98e019e0d3e4A1Ad8C786202e09017Bd995e1", "0"]} /> diff --git a/sdk/package.json b/sdk/package.json index 7846f94..bc1dbff 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@dimo-network/login-with-dimo", - "version": "0.0.8", + "version": "0.0.9", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/sdk/src/utils/eventHandler.ts b/sdk/src/utils/eventHandler.ts index 6418ee9..01e1a6b 100644 --- a/sdk/src/utils/eventHandler.ts +++ b/sdk/src/utils/eventHandler.ts @@ -44,8 +44,7 @@ export const handleMessageForPopup = ( return; } - const { eventType, token, authType, transactionHash, message } = - event.data; + const { eventType, token, authType, transactionHash, message } = event.data; // Handle the "READY" message if (eventType === "READY") { @@ -94,14 +93,9 @@ export const handleMessageForPopup = ( if (transactionHash) { onSuccess({ token: "", transactionHash }); } - - if (popup && !popup.closed) { - popup.close(); - console.log("Popup closed successfully."); - } } - if ( eventType === "DIMO_ERROR" ) { + if (eventType === "DIMO_ERROR") { onError(message); } }; From 78048bb5863a719c058f83915297a082e9a31320 Mon Sep 17 00:00:00 2001 From: moizahmedd Date: Tue, 26 Nov 2024 16:41:16 -0500 Subject: [PATCH 3/3] remove viem import --- .../dimo-network-login-with-dimo-0.0.9.tgz | Bin 21641 -> 21567 bytes example-dimo-auth/package-lock.json | 2 +- example-dimo-auth/src/App.tsx | 3 +-- .../ExecuteAdvancedTransactionWithDimo.tsx | 3 +-- sdk/src/types/TransactionData.ts | 5 +---- 5 files changed, 4 insertions(+), 9 deletions(-) diff --git a/example-dimo-auth/dimo-network-login-with-dimo-0.0.9.tgz b/example-dimo-auth/dimo-network-login-with-dimo-0.0.9.tgz index 84e00456859bcfab7afefce10f83478a672185ff..33d1c0d53645c7ad9696b7cda2dbaabb15321d98 100644 GIT binary patch delta 8906 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 Y)a7USS$>wEALH}?17xvK`vBSj03`U-PXGV_ delta 8979 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 diff --git a/example-dimo-auth/package-lock.json b/example-dimo-auth/package-lock.json index 2283468..4de133b 100644 --- a/example-dimo-auth/package-lock.json +++ b/example-dimo-auth/package-lock.json @@ -2237,7 +2237,7 @@ "node_modules/@dimo-network/login-with-dimo": { "version": "0.0.9", "resolved": "file:dimo-network-login-with-dimo-0.0.9.tgz", - "integrity": "sha512-m1JnrFmLBb/Z2Sj1QFjcNGg7XpdtMAa/28wBvFDPlV9XfUSzkp4USW2jZBw/utlLD+vW/pRiNUDcCaPO6pCSSw==", + "integrity": "sha512-F2xCQOcB+QkMIN/4gbSr88m9+k1kGfF6lBaDUjxcdAqyYMO0lCHVRBLwAl8J5e8jA4aIWHDerDhX+JWu6Roc1Q==", "license": "ISC", "peerDependencies": { "react": "^18.0.0", diff --git a/example-dimo-auth/src/App.tsx b/example-dimo-auth/src/App.tsx index bb11ed4..c09f1fc 100644 --- a/example-dimo-auth/src/App.tsx +++ b/example-dimo-auth/src/App.tsx @@ -8,13 +8,12 @@ import { initializeDimoSDK, useDimoAuthState, } from "@dimo-network/login-with-dimo"; -import { Abi } from "viem"; function App() { const [permissionsEnabled, setPermissionsEnabled] = useState(false); const { isAuthenticated, getValidJWT } = useDimoAuthState(); - const sampleAbi: Abi = [ + const sampleAbi = [ { anonymous: false, inputs: [ diff --git a/sdk/src/components/ExecuteAdvancedTransactionWithDimo.tsx b/sdk/src/components/ExecuteAdvancedTransactionWithDimo.tsx index 6bd4880..f6c9f9c 100644 --- a/sdk/src/components/ExecuteAdvancedTransactionWithDimo.tsx +++ b/sdk/src/components/ExecuteAdvancedTransactionWithDimo.tsx @@ -2,7 +2,6 @@ import React from "react"; import BaseDimoButton from "./BaseDimoButton"; import { EntryState } from "../enums/globalEnums"; import { TransactionData } from "../types/TransactionData"; -import { Abi } from "viem"; // Assuming `Abi` is imported from viem types interface ExecuteAdvancedTransactionProps { mode: "popup" | "embed" | "redirect"; @@ -14,7 +13,7 @@ interface ExecuteAdvancedTransactionProps { onError: (error: Error) => void; // Error callback address: string; value: string; - abi: Abi; + abi: any; functionName: string; args: string[]; } diff --git a/sdk/src/types/TransactionData.ts b/sdk/src/types/TransactionData.ts index 11a9dba..e916390 100644 --- a/sdk/src/types/TransactionData.ts +++ b/sdk/src/types/TransactionData.ts @@ -1,10 +1,7 @@ -import { Abi } from "viem"; // Assuming `Abi` is imported from viem types - - export interface TransactionData { address: string; value: string; - abi: Abi; // Serialized ABI + abi: any; // Serialized ABI functionName: string; args: string[]; }