--- a/client/rpc/src/lib.rs +++ b/client/rpc/src/lib.rs @@ -557,7 +557,10 @@ pass_method!(allowlist(collection: CollectionId) -> Vec, unique_api); pass_method!(allowed(collection: CollectionId, user: CrossAccountId) -> bool, unique_api); pass_method!(last_token_id(collection: CollectionId) -> TokenId, unique_api); - pass_method!(collection_by_id(collection: CollectionId) -> Option>, unique_api); + pass_method!( + collection_by_id(collection: CollectionId) -> Option>, unique_api; + changed_in 3, collection_by_id_before_version_3(collection) => |value| value.map(|coll| coll.into()) + ); pass_method!(collection_stats() -> CollectionStats, unique_api); pass_method!(next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Option, unique_api); pass_method!(effective_collection_limits(collection_id: CollectionId) -> Option, unique_api); --- a/primitives/data-structs/src/lib.rs +++ b/primitives/data-structs/src/lib.rs @@ -447,6 +447,7 @@ } /// Collection parameters, used in RPC calls (see [`Collection`] for the storage version). +#[struct_versioning::versioned(version = 2, upper)] #[derive(Encode, Decode, Clone, PartialEq, TypeInfo)] #[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))] pub struct RpcCollection { @@ -484,6 +485,7 @@ pub read_only: bool, /// Extra collection flags + #[version(2.., upper(RpcCollectionFlags {foreign: false, erc721metadata: false}))] pub flags: RpcCollectionFlags, } --- a/primitives/rpc/src/lib.rs +++ b/primitives/rpc/src/lib.rs @@ -16,9 +16,11 @@ #![cfg_attr(not(feature = "std"), no_std)] +extern crate alloc; + use up_data_structs::{ CollectionId, TokenId, RpcCollection, CollectionStats, CollectionLimits, Property, - PropertyKeyPermission, TokenData, TokenChild, + PropertyKeyPermission, TokenData, TokenChild, RpcCollectionVersion1, }; use sp_std::vec::Vec; @@ -28,15 +30,12 @@ type Result = core::result::Result; sp_api::decl_runtime_apis! { - #[api_version(2)] + #[api_version(3)] /// Trait for generate rpc. pub trait UniqueApi where AccountId: Decode, CrossAccountId: pallet_evm::account::CrossAccountId, { - #[changed_in(2)] - fn token_owner(collection: CollectionId, token: TokenId) -> Result; - /// Get number of tokens in collection owned by account. fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result>; @@ -110,6 +109,9 @@ /// Get collection by id. fn collection_by_id(collection: CollectionId) -> Result>>; + #[changed_in(3)] + fn collection_by_id(collection: CollectionId) -> Result>>; + /// Get collection stats. fn collection_stats() -> Result;