From 99054caef1cef97a53c3f939c85f8b4ada363b31 Mon Sep 17 00:00:00 2001 From: Henrique Nogara Date: Mon, 27 Nov 2023 11:48:25 -0300 Subject: [PATCH] Change NFTOwner map to track holders portfolio (#1566) --- pallets/nft/src/lib.rs | 8 ++++---- pallets/runtime/tests/src/nft.rs | 10 +++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/pallets/nft/src/lib.rs b/pallets/nft/src/lib.rs index 37aec5fc69..ca87f651a4 100644 --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -63,7 +63,7 @@ decl_storage!( pub NFTsInCollection get(fn nfts_in_collection): map hasher(blake2_128_concat) Ticker => NFTCount; /// Tracks the owner of an NFT - pub NFTOwner get(fn nft_owner): double_map hasher(blake2_128_concat) Ticker, hasher(blake2_128_concat) NFTId => Option; + pub NFTOwner get(fn nft_owner): double_map hasher(blake2_128_concat) Ticker, hasher(blake2_128_concat) NFTId => Option; /// Storage version. StorageVersion get(fn storage_version) build(|_| Version::new(1)): Version; @@ -365,7 +365,7 @@ impl Module { MetadataValue::insert((&collection_id, &nft_id), metadata_key, metadata_value); } PortfolioNFT::insert(caller_portfolio, (ticker, nft_id), true); - NFTOwner::insert(ticker, nft_id, caller_portfolio.did); + NFTOwner::insert(ticker, nft_id, caller_portfolio); Self::deposit_event(Event::NFTPortfolioUpdated( caller_portfolio.did, @@ -559,7 +559,7 @@ impl Module { for nft_id in nfts.ids() { PortfolioNFT::remove(sender_portfolio, (nfts.ticker(), nft_id)); PortfolioNFT::insert(receiver_portfolio, (nfts.ticker(), nft_id), true); - NFTOwner::insert(nfts.ticker(), nft_id, receiver_portfolio.did); + NFTOwner::insert(nfts.ticker(), nft_id, receiver_portfolio); } } @@ -638,7 +638,7 @@ pub mod migration { fn initialize_nft_owner() { for (portfolio_id, (ticker, nft_id), _) in PortfolioNFT::iter() { - NFTOwner::insert(ticker, nft_id, portfolio_id.did); + NFTOwner::insert(ticker, nft_id, portfolio_id); } } } diff --git a/pallets/runtime/tests/src/nft.rs b/pallets/runtime/tests/src/nft.rs index afbee26283..a519fa0c51 100644 --- a/pallets/runtime/tests/src/nft.rs +++ b/pallets/runtime/tests/src/nft.rs @@ -399,6 +399,7 @@ fn mint_nft_successfully() { let alice: User = User::new(AccountKeyring::Alice); let ticker: Ticker = Ticker::from_slice_truncated(b"TICKER".as_ref()); + let alice_default_portfolio = PortfolioId::new(alice.did, PortfolioKind::Default); let collection_keys: NFTCollectionKeys = vec![AssetMetadataKey::Local(AssetMetadataLocalKey(1))].into(); @@ -433,7 +434,10 @@ fn mint_nft_successfully() { ), true ); - assert_eq!(NFTOwner::get(ticker, NFTId(1)), Some(alice.did)); + assert_eq!( + NFTOwner::get(ticker, NFTId(1)), + Some(alice_default_portfolio) + ); }); } @@ -909,7 +913,7 @@ fn transfer_nft() { PortfolioNFT::get(PortfolioId::default_portfolio(bob.did), (&ticker, NFTId(1))), true ); - assert_eq!(NFTOwner::get(ticker, NFTId(1)), Some(bob.did)); + assert_eq!(NFTOwner::get(ticker, NFTId(1)), Some(receiver_portfolio)); assert_eq!( super::storage::EventTest::Nft(Event::NFTPortfolioUpdated( IdentityId::default(), @@ -1002,7 +1006,7 @@ fn controller_transfer() { alice_portfolio, (ticker, NFTId(1)) )); - assert_eq!(NFTOwner::get(ticker, NFTId(1)), Some(alice.did)); + assert_eq!(NFTOwner::get(ticker, NFTId(1)), Some(alice_portfolio)); assert_eq!( super::storage::EventTest::Nft(Event::NFTPortfolioUpdated( alice.did,