mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-05 17:57:25 +00:00
0bcebac4fc
# 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.
58 lines
1.5 KiB
Rust
58 lines
1.5 KiB
Rust
// This file is part of Substrate.
|
|
|
|
// Copyright (C) Parity Technologies (UK) Ltd.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
//! Runtime API definition for the FRAME NFTs pallet.
|
|
|
|
#![cfg_attr(not(feature = "std"), no_std)]
|
|
|
|
use codec::{Decode, Encode};
|
|
use sp_api::vec::Vec;
|
|
|
|
sp_api::decl_runtime_apis! {
|
|
pub trait NftsApi<AccountId, CollectionId, ItemId>
|
|
where
|
|
AccountId: Encode + Decode,
|
|
CollectionId: Encode,
|
|
ItemId: Encode,
|
|
{
|
|
fn owner(collection: CollectionId, item: ItemId) -> Option<AccountId>;
|
|
|
|
fn collection_owner(collection: CollectionId) -> Option<AccountId>;
|
|
|
|
fn attribute(
|
|
collection: CollectionId,
|
|
item: ItemId,
|
|
key: Vec<u8>,
|
|
) -> Option<Vec<u8>>;
|
|
|
|
fn custom_attribute(
|
|
account: AccountId,
|
|
collection: CollectionId,
|
|
item: ItemId,
|
|
key: Vec<u8>,
|
|
) -> Option<Vec<u8>>;
|
|
|
|
fn system_attribute(
|
|
collection: CollectionId,
|
|
item: Option<ItemId>,
|
|
key: Vec<u8>,
|
|
) -> Option<Vec<u8>>;
|
|
|
|
fn collection_attribute(collection: CollectionId, key: Vec<u8>) -> Option<Vec<u8>>;
|
|
}
|
|
}
|