• Dastan's avatar
    Expose collection attributes from `Inspect` trait (#1914) · 0bcebac4
    Dastan authored
    # Description
    
    - What does this PR do?
    
    While working with `pallet_nfts` through `nonfungibles_v2` traits
    `Inspect, Mutate`, I found out that once you have set the collection
    attribute with `<Nfts as Mutate>::set_collection_attribute()`, it's not
    possible to read it with `<Nfts as Inspect>::collection_attribute()`
    since they use different `namespace` values. When setting the attribute,
    `AttributeNamespace::Pallet` is used, while
    `AttributeNamespace::CollectionOwner` is used when reading.
    
    more context:
    https://github.com/freeverseio/laos/issues/7#issuecomment-1766137370
    
    This PR makes `item` an optional parameter in
    `Inspect::system_attribute()`, to be able to read collection attributes.
    
    - Why are these changes needed?
    
    To be able to read collection level attributes when reading attributes
    of the collection. It will be possible to read collection attributes by
    passing `None` for `item`
    
    - How were these changes implemented and what do they affect?
    
    `NftsApi` is also affected and `NftsApi::system_attribute()` now accepts
    optional `item` parameter.
    
    ## Breaking change
    
    Because of the change in the `NftsApi::system_attribute()` method's
    `item` param, parachains who integrated the `NftsApi` need to update
    their API code and frontend integrations accordingly. AssetHubs are
    unaffected since the NftsApi wasn't released on those parachains yet.
    0bcebac4