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" );
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( (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<nft_metadata_index>().indices().get<by_name>();
const auto& idx_nft_md_by_symbol = db().get_index_type<nft_metadata_index>().indices().get<by_symbol>();
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) ) }

View file

@ -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<string> name,
optional<string> symbol,
optional<string> base_uri,
optional<string> revenue_partner,
optional<double> revenue_split,
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,
string name,
string symbol,
string base_uri,
nft_metadata_id_type nft_metadata_id,
optional<string> name,
optional<string> symbol,
optional<string> base_uri,
optional<string> revenue_partner,
optional<double> revenue_split,
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);
nft_metadata_update_operation op;
op.nft_metadata_id = nft_metadata_id;
op.owner = owner_account.id;
op.name = name;
op.symbol = symbol;