Skip to content

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
};