From 23acc2ad1c40216870abbb6a5ce353d3d52035b0 Mon Sep 17 00:00:00 2001 From: str-mv Date: Wed, 23 Sep 2020 15:49:28 +0000 Subject: [PATCH] panic marcos removed --- --- a/README.md +++ b/README.md @@ -109,6 +109,12 @@ "enable_println": "bool", "max_subject_len": "u32" }, + "AccessMode": { + "_enum": [ + "Normal", + "WhiteList" + ] + }, "CollectionMode": { "_enum": { "Invalid": null, @@ -139,7 +145,7 @@ "CollectionType": { "Owner": "AccountId", "Mode": "CollectionMode", - "Access": "u8", + "Access": "AccessMode", "DecimalPoints": "u32", "Name": "Vec", "Description": "Vec", @@ -155,4 +161,5 @@ "LookupSource": "AccountId", "Weight": "u64" } + ``` \ No newline at end of file --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -475,10 +475,7 @@ let target_collection = >::get(collection_id); if !Self::is_owner_or_admin_permissions(collection_id, sender.clone()) { - if target_collection.mint_mode == false { - panic!("Collection is not in mint mode"); - } - + ensure!(target_collection.mint_mode == true, "Collection is not in mint mode"); Self::check_white_list(collection_id, owner.clone())?; } @@ -628,26 +625,22 @@ let sender = ensure_signed(origin)?; let approved_list_exists = >::contains_key(collection_id, (item_id, from.clone())); - if approved_list_exists - { - Self::check_white_list(collection_id, from.clone())?; - Self::check_white_list(collection_id, recipient.clone())?; - let list_itm = >::get(collection_id, (item_id, from.clone())); - let opt_item = list_itm.iter().find(|i| i.approved == sender.clone()); - ensure!(opt_item.is_some(), "No approve found"); - ensure!(opt_item.unwrap().amount >= value, "Requested value more than approved"); + ensure!(approved_list_exists, "Only approved addresses can call this method"); - // remove approve - let approve_list: Vec> = >::get(collection_id, (item_id, from.clone())) - .into_iter().filter(|i| i.approved != sender.clone()).collect(); - >::insert(collection_id, (item_id, from.clone()), approve_list); - } - else - { - panic!("Only approved addresses can call this method"); - } + Self::check_white_list(collection_id, from.clone())?; + Self::check_white_list(collection_id, recipient.clone())?; + let list_itm = >::get(collection_id, (item_id, from.clone())); + let opt_item = list_itm.iter().find(|i| i.approved == sender.clone()); + ensure!(opt_item.is_some(), "No approve found"); + ensure!(opt_item.unwrap().amount >= value, "Requested value more than approved"); + + // remove approve + let approve_list: Vec> = >::get(collection_id, (item_id, from.clone())) + .into_iter().filter(|i| i.approved != sender.clone()).collect(); + >::insert(collection_id, (item_id, from.clone()), approve_list); + let target_collection = >::get(collection_id); match target_collection.mode @@ -872,11 +865,8 @@ Self::collection_exists(collection_id)?; let result = Self::is_owner_or_admin_permissions(collection_id, subject.clone()); - if result == true { - Ok(()) - } else { - panic!("You do not have permissions to modify this collection") - } + ensure!(result, "You do not have permissions to modify this collection"); + Ok(()) } fn is_item_owner(subject: T::AccountId, collection_id: u64, item_id: u64) -> bool { @@ -902,15 +892,10 @@ fn check_white_list(collection_id: u64, address: T::AccountId) -> DispatchResult { let mes = "Address is not in white list"; - if >::contains_key(collection_id){ - let wl = >::get(collection_id); - if !wl.contains(&address.clone()) { - panic!(mes); - } - } - else { - panic!(mes); - } + ensure!(>::contains_key(collection_id), mes); + let wl = >::get(collection_id); + ensure!(wl.contains(&address.clone()), mes); + Ok(()) } -- gitstuff