Skip to content

Commit 9a6c46c

Browse files
committed
feat: Add MPT Metadata validation check in MPTokenIssuanceSet transaction
1 parent 0f3ae2f commit 9a6c46c

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

packages/xrpl/src/models/transactions/MPTokenIssuanceSet.ts

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import {
1515
isNumber,
1616
MAX_MPT_META_BYTE_LENGTH,
1717
isDomainID,
18+
validateMPTokenMetadata,
19+
MPT_META_WARNING_HEADER,
1820
} from './common'
1921
import { MAX_TRANSFER_FEE } from './MPTokenIssuanceCreate'
2022

@@ -268,14 +270,28 @@ export function validateMPTokenIssuanceSet(tx: Record<string, unknown>): void {
268270
}
269271
}
270272

271-
if (
272-
typeof tx.MPTokenMetadata === 'string' &&
273-
(!isHex(tx.MPTokenMetadata) ||
274-
tx.MPTokenMetadata.length / 2 > MAX_MPT_META_BYTE_LENGTH)
275-
) {
276-
throw new ValidationError(
277-
`MPTokenIssuanceSet: MPTokenMetadata (hex format) must be non-empty and no more than ${MAX_MPT_META_BYTE_LENGTH} bytes.`,
278-
)
273+
if (tx.MPTokenMetadata != null) {
274+
if (
275+
typeof tx.MPTokenMetadata === 'string' &&
276+
(!isHex(tx.MPTokenMetadata) ||
277+
tx.MPTokenMetadata.length / 2 > MAX_MPT_META_BYTE_LENGTH)
278+
) {
279+
throw new ValidationError(
280+
`MPTokenIssuanceSet: MPTokenMetadata (hex format) must be non-empty and no more than ${MAX_MPT_META_BYTE_LENGTH} bytes.`,
281+
)
282+
}
283+
284+
const validationMessages = validateMPTokenMetadata(tx.MPTokenMetadata)
285+
286+
if (validationMessages.length > 0) {
287+
const message = [
288+
MPT_META_WARNING_HEADER,
289+
...validationMessages.map((msg) => `- ${msg}`),
290+
].join('\n')
291+
292+
// eslint-disable-next-line no-console -- Required here.
293+
console.warn(message)
294+
}
279295
}
280296
}
281297
/* eslint-enable max-lines-per-function, max-statements */

0 commit comments

Comments
 (0)