From 92eb5c441f8634e76563d2b21a60eee450472822 Mon Sep 17 00:00:00 2001 From: sierra19XX <15652887+sierra19XX@users.noreply.github.com> Date: Thu, 6 Aug 2020 14:18:48 +0000 Subject: [PATCH] nft_metadata_update changes --- libraries/chain/nft_evaluator.cpp | 22 ++++++++++++------- .../wallet/include/graphene/wallet/wallet.hpp | 8 ++++--- libraries/wallet/wallet.cpp | 8 ++++--- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/libraries/chain/nft_evaluator.cpp b/libraries/chain/nft_evaluator.cpp index c72be81e..7cd9ac87 100644 --- a/libraries/chain/nft_evaluator.cpp +++ b/libraries/chain/nft_evaluator.cpp @@ -10,10 +10,10 @@ void_result nft_metadata_create_evaluator::do_evaluate( const nft_metadata_creat FC_ASSERT( idx_nft_md_by_name.find(op.name) == idx_nft_md_by_name.end(), "NFT name already in use" ); const auto& idx_nft_md_by_symbol = db().get_index_type().indices().get(); FC_ASSERT( idx_nft_md_by_symbol.find(op.symbol) == idx_nft_md_by_symbol.end(), "NFT symbol already in use" ); - FC_ASSERT( (op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid" ); - if(op.revenue_partner) { - (*op.revenue_partner)(db()); - FC_ASSERT( *op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid" ); + FC_ASSERT((op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid"); + if (op.revenue_partner) { + (*op.revenue_partner)(db()); + FC_ASSERT(*op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid"); } return void_result(); } FC_CAPTURE_AND_RETHROW( (op) ) } @@ -41,10 +41,16 @@ void_result nft_metadata_update_evaluator::do_evaluate( const nft_metadata_updat auto itr_nft_md = idx_nft_md.find(op.nft_metadata_id); FC_ASSERT( itr_nft_md != idx_nft_md.end(), "NFT metadata not found" ); FC_ASSERT( itr_nft_md->owner == op.owner, "Only owner can modify NFT metadata" ); - FC_ASSERT( (op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid" ); - if(op.revenue_partner) { - (*op.revenue_partner)(db()); - FC_ASSERT( *op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid" ); + const auto& idx_nft_md_by_name = db().get_index_type().indices().get(); + const auto& idx_nft_md_by_symbol = db().get_index_type().indices().get(); + if (op.name.valid()) + FC_ASSERT((itr_nft_md->name != *op.name) && (idx_nft_md_by_name.find(*op.name) == idx_nft_md_by_name.end()), "NFT name already in use"); + if (op.symbol.valid()) + FC_ASSERT((itr_nft_md->symbol != *op.symbol) && (idx_nft_md_by_symbol.find(*op.symbol) == idx_nft_md_by_symbol.end()), "NFT symbol already in use"); + FC_ASSERT((op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid"); + if (op.revenue_partner) { + (*op.revenue_partner)(db()); + FC_ASSERT(*op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid"); } return void_result(); } FC_CAPTURE_AND_RETHROW( (op) ) } diff --git a/libraries/wallet/include/graphene/wallet/wallet.hpp b/libraries/wallet/include/graphene/wallet/wallet.hpp index 100b71e1..02e107c5 100644 --- a/libraries/wallet/include/graphene/wallet/wallet.hpp +++ b/libraries/wallet/include/graphene/wallet/wallet.hpp @@ -1955,6 +1955,7 @@ class wallet_api /** * @brief Updates NFT metadata * @param owner_account_id_or_name Owner account ID or name + * @param nft_metadata_id Metadata ID to modify * @param name Name of the token group * @param symbol Symbol of the token group * @param base_uri Base URI for token URI @@ -1966,9 +1967,10 @@ class wallet_api * @return Signed transaction transfering the funds */ signed_transaction nft_metadata_update(string owner_account_id_or_name, - string name, - string symbol, - string base_uri, + nft_metadata_id_type nft_metadata_id, + optional name, + optional symbol, + optional base_uri, optional revenue_partner, optional revenue_split, optional is_transferable, diff --git a/libraries/wallet/wallet.cpp b/libraries/wallet/wallet.cpp index e35b2a4e..34eb8446 100644 --- a/libraries/wallet/wallet.cpp +++ b/libraries/wallet/wallet.cpp @@ -6407,9 +6407,10 @@ signed_transaction wallet_api::nft_metadata_create(string owner_account_id_or_na } signed_transaction wallet_api::nft_metadata_update(string owner_account_id_or_name, - string name, - string symbol, - string base_uri, + nft_metadata_id_type nft_metadata_id, + optional name, + optional symbol, + optional base_uri, optional revenue_partner, optional revenue_split, optional is_transferable, @@ -6419,6 +6420,7 @@ signed_transaction wallet_api::nft_metadata_update(string owner_account_id_or_na account_object owner_account = my->get_account(owner_account_id_or_name); nft_metadata_update_operation op; + op.nft_metadata_id = nft_metadata_id; op.owner = owner_account.id; op.name = name; op.symbol = symbol;