nft_metadata_update changes

This commit is contained in:
sierra19XX 2020-08-06 14:18:48 +00:00
parent 218d826e65
commit 92eb5c441f
3 changed files with 24 additions and 14 deletions

View file

@ -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" ); 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<nft_metadata_index>().indices().get<by_symbol>(); const auto& idx_nft_md_by_symbol = db().get_index_type<nft_metadata_index>().indices().get<by_symbol>();
FC_ASSERT( idx_nft_md_by_symbol.find(op.symbol) == idx_nft_md_by_symbol.end(), "NFT symbol already in use" ); 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" ); FC_ASSERT((op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid");
if(op.revenue_partner) { if (op.revenue_partner) {
(*op.revenue_partner)(db()); (*op.revenue_partner)(db());
FC_ASSERT( *op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid" ); FC_ASSERT(*op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid");
} }
return void_result(); return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) } } 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); 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 != idx_nft_md.end(), "NFT metadata not found" );
FC_ASSERT( itr_nft_md->owner == op.owner, "Only owner can modify NFT metadata" ); 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" ); const auto& idx_nft_md_by_name = db().get_index_type<nft_metadata_index>().indices().get<by_name>();
if(op.revenue_partner) { const auto& idx_nft_md_by_symbol = db().get_index_type<nft_metadata_index>().indices().get<by_symbol>();
(*op.revenue_partner)(db()); if (op.name.valid())
FC_ASSERT( *op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid" ); 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(); return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) } } FC_CAPTURE_AND_RETHROW( (op) ) }

View file

@ -1955,6 +1955,7 @@ class wallet_api
/** /**
* @brief Updates NFT metadata * @brief Updates NFT metadata
* @param owner_account_id_or_name Owner account ID or name * @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 name Name of the token group
* @param symbol Symbol of the token group * @param symbol Symbol of the token group
* @param base_uri Base URI for token URI * @param base_uri Base URI for token URI
@ -1966,9 +1967,10 @@ class wallet_api
* @return Signed transaction transfering the funds * @return Signed transaction transfering the funds
*/ */
signed_transaction nft_metadata_update(string owner_account_id_or_name, signed_transaction nft_metadata_update(string owner_account_id_or_name,
string name, nft_metadata_id_type nft_metadata_id,
string symbol, optional<string> name,
string base_uri, optional<string> symbol,
optional<string> base_uri,
optional<string> revenue_partner, optional<string> revenue_partner,
optional<double> revenue_split, optional<double> revenue_split,
optional<bool> is_transferable, optional<bool> is_transferable,

View file

@ -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, signed_transaction wallet_api::nft_metadata_update(string owner_account_id_or_name,
string name, nft_metadata_id_type nft_metadata_id,
string symbol, optional<string> name,
string base_uri, optional<string> symbol,
optional<string> base_uri,
optional<string> revenue_partner, optional<string> revenue_partner,
optional<double> revenue_split, optional<double> revenue_split,
optional<bool> is_transferable, optional<bool> 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); account_object owner_account = my->get_account(owner_account_id_or_name);
nft_metadata_update_operation op; nft_metadata_update_operation op;
op.nft_metadata_id = nft_metadata_id;
op.owner = owner_account.id; op.owner = owner_account.id;
op.name = name; op.name = name;
op.symbol = symbol; op.symbol = symbol;