From 16c94288be87ff06d96f412e14407401374d65a8 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Tue, 23 Mar 2021 12:05:41 +0000 Subject: [PATCH] refactor: remove unnecessary contains_key checks for Allowances --- --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -1295,11 +1295,9 @@ Self::check_white_list(&target_collection, &spender)?; } - let allowance_exists = >::contains_key(collection_id, (item_id, &sender, &spender)); - let mut allowance: u128 = amount; - if allowance_exists { - allowance += >::get(collection_id, (item_id, &sender, &spender)); - } + let allowance: u128 = amount + .checked_add(>::get(collection_id, (item_id, &sender, &spender))) + .ok_or(Error::::NumOverflow)?; if let Some(limit) = allowance_limit { ensure!(limit >= allowance, Error::::TokenValueTooLow); } @@ -1334,23 +1332,16 @@ let sender = ensure_signed(origin)?; let target_collection = Self::get_collection(collection_id)?; - - let mut appoved_transfer = false; // Check approval - let mut approval: u128 = 0; - if >::contains_key(collection_id, (item_id, &from, &sender)) { - approval = >::get(collection_id, (item_id, &from, &sender)); - ensure!(approval >= value, Error::::TokenValueNotEnough); - appoved_transfer = true; - } + let approval: u128 = >::get(collection_id, (item_id, &from, &sender)); // Limits check Self::is_correct_transfer(&target_collection, &recipient)?; // Transfer permissions check ensure!( - appoved_transfer || + approval >= value || ( target_collection.limits.owner_can_transfer && Self::is_owner_or_admin_permissions(&target_collection, sender.clone()) -- gitstuff