getRecords
Usage
connect()
must be called and a connection must be initiated before account information will be returned.
The getRecords()
function returns records for the currently selected account. A filter can be applied to return a subset of records.
import { RecordStatus, getRecords, GetRecordsResponse, RecordWithPlaintext, useAccount} from '@puzzlehq/sdk';import { useState } from 'react';
export const RecordsPage = () => { const [loading, setLoading] = useState(false); const [error, setError] = useState<string | undefined>(); const [records, setRecords] = useState<RecordWithPlaintext[] | undefined>(); const [totalPageCount, setTotalPageCount] = useState(0);
const onClick = async () => { setLoading(true); setError(undefined); try { const response: GetRecordsResponse = await getRecords({ filter: { programId: 'credits.aleo'; type: RecordStatus.Unspent; }, address: "aleo1t5ympyhrn6rgk7d0h0ktvmvzlymsnwg6w0c0ns5nac7s8d39x5qqtlaynz" }); setRecords(response.records); setTotalPageCount(response.pageCount); } catch (e) { setError((e as Error).message); } finally { setLoading(false); } } return ( <div> <button onClick={ onClick } disabled={ loading } > fetch records </button> { records && ( <div> <p>there are {totalPageCount} pages of records</p> {records.map((record) => { <p>{record.plaintext}</p> })} </div> )} { error && <p>error fetching records: {error}</p> } </div> )}
Types
type RecordWithPlaintext = { _id: string; // database id for record eventId: string; // database id for associated Event height: number; // block height timestamp: Date; ciphertext: string; programId: string; functionId: string; name: string; // record name: e.g. Credit or Token network: Network;
transitionId: string; transactionId: string; index: number; // output index owner?: string; spent: boolean; serialNumber?: string; plaintext: string; data: { [key: string]: string }; // JSON object representing plaintext data};
enum RecordStatus { Unspent = 'Unspent', Pending = 'Pending', Spent = 'Spent',}
type RecordStatusFilter = RecordStatus | 'All';
type RecordsFilter = { programIds?: string[]; functionId?: string; status: RecordStatusFilter; names?: string[]; // record names};
type GetRecordsRequest = { filter?: RecordsFilter; // defaults to all records if undefined page?: number; address?: string; network?: Network;};
type GetRecordsResponse = { records: Record[]; pageCount: number; // total page count of all records that meet criteria};