Skip to content

Commit 63257c9

Browse files
committed
chore: revert to using retrieveExtrinsicFromBlock
1 parent 1224068 commit 63257c9

File tree

2 files changed

+19
-41
lines changed

2 files changed

+19
-41
lines changed

packages/asset-credentials/src/credentials/PublicCredential.chain.ts

+9-20
Original file line numberDiff line numberDiff line change
@@ -146,35 +146,24 @@ export async function fetchCredentialFromChain(
146146
attester: attesterId,
147147
} = publicCredentialEntry.unwrap()
148148

149-
const { extrinsics, events } = await api.derive.chain.getBlockByNumber(
150-
blockNumber
149+
const extrinsic = await Blockchain.retrieveExtrinsicFromBlock(
150+
blockNumber,
151+
({ events }) =>
152+
events.some(
153+
(event) =>
154+
api.events.publicCredentials.CredentialStored.is(event) &&
155+
event.data[1].toString() === credentialId
156+
)
151157
)
152158

153-
const createdEvent = events
154-
.reverse()
155-
.find(
156-
({ event }) =>
157-
api.events.publicCredentials.CredentialStored.is(event) &&
158-
event.data[1].toString() === credentialId
159-
)
160-
161-
if (typeof createdEvent === 'undefined') {
162-
throw new Error(
163-
`A credential stored event was not found at the specified block`
164-
)
165-
}
166-
167-
const extrinsicIndex = createdEvent.phase.asApplyExtrinsic.toNumber()
168-
const extrinsic = extrinsics[extrinsicIndex]
169-
170159
if (extrinsic === null) {
171160
throw new SDKErrors.PublicCredentialError(
172161
`The block number as specified in the provided credential entry (${blockNumber}) does not have any extrinsic that includes a credential creation.`
173162
)
174163
}
175164

176165
// Unpack any nested calls, e.g., within a batch or `submit_did_call`
177-
const extrinsicCalls = Blockchain.flattenCalls(extrinsic.extrinsic, api)
166+
const extrinsicCalls = Blockchain.flattenCalls(extrinsic, api)
178167

179168
// only consider public_credentials::add calls
180169
const publicCredentialCalls = extrinsicCalls.filter(

packages/credentials/src/ctype/CType.chain.ts

+10-21
Original file line numberDiff line numberDiff line change
@@ -137,35 +137,24 @@ export async function fetchFromChain(
137137
'Cannot fetch CType definitions on a chain that does not store the createdAt block'
138138
)
139139

140-
const { extrinsics, events } = await api.derive.chain.getBlockByNumber(
141-
createdAt
140+
const extrinsic = await Blockchain.retrieveExtrinsicFromBlock(
141+
createdAt,
142+
({ events }) =>
143+
events.some(
144+
(event) =>
145+
api.events.ctype.CTypeCreated.is(event) &&
146+
event.data[1].toHex() === cTypeHash
147+
)
142148
)
143149

144-
const createdEvent = events
145-
.reverse()
146-
.find(
147-
({ event }) =>
148-
api.events.ctype.CTypeCreated.is(event) &&
149-
event.data[1].toHex() === cTypeHash
150-
)
151-
152-
if (typeof createdEvent === 'undefined') {
153-
throw new Error(
154-
`A ctype creation event was not found at the specified block`
155-
)
156-
}
157-
158-
const extrinsicIndex = createdEvent.phase.asApplyExtrinsic.toNumber()
159-
const extrinsic = extrinsics[extrinsicIndex]
160-
161-
if (typeof extrinsic === 'undefined') {
150+
if (extrinsic === null) {
162151
throw new SDKErrors.CTypeError(
163152
`There is no CType with the provided ID "${cTypeId}" on chain.`
164153
)
165154
}
166155

167156
// Unpack any nested calls, e.g., within a batch or `submit_did_call`
168-
const extrinsicCalls = Blockchain.flattenCalls(extrinsic.extrinsic, api)
157+
const extrinsicCalls = Blockchain.flattenCalls(extrinsic, api)
169158

170159
// only consider ctype::add calls
171160
const ctypeCreationCalls = extrinsicCalls.filter(

0 commit comments

Comments
 (0)