diff --git a/package-lock.json b/package-lock.json index b985887..c7e8347 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "dash-react-tutorial", "version": "0.0.0", "dependencies": { - "@dashevo/evo-sdk": "^3.0.1", + "@dashevo/evo-sdk": "^3.1.0-dev.1", "react": "^19.2.4", "react-dom": "^19.2.4" }, @@ -268,20 +268,20 @@ } }, "node_modules/@dashevo/evo-sdk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@dashevo/evo-sdk/-/evo-sdk-3.0.1.tgz", - "integrity": "sha512-5eSBeUQgEfWYS1QWF//mBl6xABLSs+b3HVHN+FHjIZv1GrJnaUp7hNfZWkaQD0HGFItdqdpQN377DvJdsmgXNA==", + "version": "3.1.0-dev.1", + "resolved": "https://registry.npmjs.org/@dashevo/evo-sdk/-/evo-sdk-3.1.0-dev.1.tgz", + "integrity": "sha512-afVJhPXkgrg2vlLgyAgcWqUeugXhA5XkfssQZWQGNXlZkH7/22yB9sd37UX+tWtvoqEjxKzygryzTngt1SI44w==", "dependencies": { - "@dashevo/wasm-sdk": "3.0.1" + "@dashevo/wasm-sdk": "3.1.0-dev.1" }, "engines": { "node": ">=18.18" } }, "node_modules/@dashevo/wasm-sdk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@dashevo/wasm-sdk/-/wasm-sdk-3.0.1.tgz", - "integrity": "sha512-kWa+VRdNWT12LP9FimZ7PvFE8UlXsuMSf0qmiL3kzTslrUSv7ZkCKDAnffN6a8jUGdnWV0hQAnir5g9nMkpgow==", + "version": "3.1.0-dev.1", + "resolved": "https://registry.npmjs.org/@dashevo/wasm-sdk/-/wasm-sdk-3.1.0-dev.1.tgz", + "integrity": "sha512-s4ECro2+zCehfag7XVqbxrsDqOAZN2yMIGhMNjjeFesaOqOl1bUWffs3QMtEeuMZdYtKcZxUrlKsW1KlfLN/WQ==", "engines": { "node": ">=18.18" } diff --git a/package.json b/package.json index 618ec67..011ed59 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "preview": "vite preview" }, "dependencies": { - "@dashevo/evo-sdk": "^3.0.1", + "@dashevo/evo-sdk": "^3.1.0-dev.1", "react": "^19.2.4", "react-dom": "^19.2.4" }, diff --git a/src/components/CreateListing.tsx b/src/components/CreateListing.tsx index f878ca4..2523bbc 100644 --- a/src/components/CreateListing.tsx +++ b/src/components/CreateListing.tsx @@ -1,9 +1,11 @@ import { useState, useCallback } from 'react'; import { useDashMutation } from '../hooks/useDashMutation'; +import { Document, IdentitySigner } from '@dashevo/evo-sdk'; const CONTRACT_ID = 'YOUR_CONTRACT_ID'; const IDENTITY_ID = 'YOUR_IDENTITY_ID'; -const PRIVATE_KEY = 'YOUR_PRIVATE_KEY_WIF'; +const PRIVATE_KEY_WIF = 'YOUR_PRIVATE_KEY_WIF'; +const SIGNING_KEY_INDEX = 0; export function CreateListing() { const [make, setMake] = useState(''); @@ -13,11 +15,24 @@ export function CreateListing() { const mutation = useDashMutation( useCallback( - (sdk) => - sdk.documents.create({ - contractId: CONTRACT_ID, - documentType: 'listing', - document: { + async (sdk) => { + // Fetch the owner identity to get the signing key + const identity = await sdk.identities.fetch(IDENTITY_ID); + if (!identity) throw new Error('Identity not found'); + + const identityKey = identity.publicKeys[SIGNING_KEY_INDEX]; + if (!identityKey) throw new Error('Signing key not found'); + + // Create a signer with the private key + const signer = new IdentitySigner(); + signer.addKeyFromWif(PRIVATE_KEY_WIF); + + // Build the document + const document = new Document({ + documentTypeName: 'listing', + dataContractId: CONTRACT_ID, + ownerId: IDENTITY_ID, + properties: { make, model, year, @@ -25,11 +40,15 @@ export function CreateListing() { mileageKm: 0, status: 'available', }, - identityId: IDENTITY_ID, - privateKeyWif: PRIVATE_KEY, - signingKeyIndex: 0, - nonce: sdk.identities.contractNonce(IDENTITY_ID, CONTRACT_ID), - }), + }); + + // Broadcast the create transition + await sdk.documents.create({ + document, + identityKey, + signer, + }); + }, [make, model, year, price], ), ); diff --git a/src/components/IdentityViewer.tsx b/src/components/IdentityViewer.tsx index 3730839..28f7630 100644 --- a/src/components/IdentityViewer.tsx +++ b/src/components/IdentityViewer.tsx @@ -22,9 +22,9 @@ export function IdentityViewer() { {error &&

{error}

} {identity && (
-

ID: {identity.getId().toString()}

-

Balance: {identity.getBalance().toString()} credits

-

Public keys: {identity.getPublicKeys().length}

+

ID: {identity.id.toString()}

+

Balance: {identity.balance.toString()} credits

+

Public keys: {identity.publicKeys.length}

)} diff --git a/src/components/ListingsList.tsx b/src/components/ListingsList.tsx index 60ae924..d163c49 100644 --- a/src/components/ListingsList.tsx +++ b/src/components/ListingsList.tsx @@ -4,8 +4,8 @@ const CONTRACT_ID = 'YOUR_CONTRACT_ID'; export function ListingsList() { const { data: results, isLoading, error, refetch } = useDocuments({ - contractId: CONTRACT_ID, - documentType: 'listing', + dataContractId: CONTRACT_ID, + documentTypeName: 'listing', where: [['status', '==', 'available']], orderBy: [['priceUsd', 'asc']], limit: 20, @@ -22,10 +22,10 @@ export function ListingsList() {