Skip to content

fix: Nft mutable flag#1329

Open
joshuahamsa wants to merge 3 commits into
ripple:mainfrom
joshuahamsa:nft-mutable-flag
Open

fix: Nft mutable flag#1329
joshuahamsa wants to merge 3 commits into
ripple:mainfrom
joshuahamsa:nft-mutable-flag

Conversation

@joshuahamsa

Copy link
Copy Markdown

High Level Overview of Change

Adds support for the lsfMutable flag on NFTs so that an NFT's Mutable setting is surfaced in the explorer UI.

  • Maps the 0x00000010 NFT flag to lsfMutable in src/rippled/lib/utils.ts

  • Renders a new Mutable row (enabled/disabled) in the NFT Settings table (Settings.tsx)

  • Adds the mutable translation string (en-US)

  • Updates the Settings test to expect the additional row

Context of Change

The XLS-46 dynamic NFT (lsfMutable) flag allows an NFT's URI to be modified after minting. The explorer's NFT Settings table decoded lsfBurnable, lsfOnlyXRP, and lsfTransferable, but not lsfMutable, so mutable NFTs gave no indication of their mutability in the UI. This change decodes the flag and displays it alongside the other settings, matching the existing pattern for those flags.

Type of Change

  • Bug fix (non-breaking change which fixes an issue)

  • New feature (non-breaking change which adds functionality)

  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

  • Refactor (non-breaking change that only restructures code)

  • Tests (You added tests for code that already exists, or your new feature included in this PR)

  • Documentation Updates

  • Translation Updates

  • Release

Codebase Modernization

  • [x ] Updated files to React Hooks

  • [x ] Updated files to TypeScript

Before / After

NFT page → Settings

Before: Showed Burnable, Only XRP, Transferable only. Mutable NFTs gave no indication of mutability.

After: Adds a Mutable row showing enabled/disabled.

Screenshot 2026-06-22 at 11 10 42 AM

NFTokenMint → Detailed tab

Before: Flags displayed 0x00000010 as raw, unlabeled hex alongside tfTransferable, tfBurnable.

After: Displays tfMutable for that bit.

Screenshot 2026-06-22 at 11 09 55 AM

Test Plan

  • Updated Settings.test.js to expect 4 rows with the correct enabled/disabled counts; ran the affected unit suites (Settings + NFTokenMint) — all green.

  • Manually verified on testnet (Clio) with a minted dynamic NFT:

    • NFT page Settings shows Mutable: enabled; a non-mutable NFT shows Mutable: disabled.

    • NFTokenMint Detailed tab labels the flag as tfMutable.

Map 0x00000010 to tfMutable so the NFTokenMint Detailed tab labels the
flag instead of rendering it as raw hex.
Add unit tests for buildFlags decoding NFTokenMint type-specific flags,
including the new tfMutable (0x00000010) mapping.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant