From 069306e0b9b9fac998816e70481420fe7171cfed Mon Sep 17 00:00:00 2001 From: Irfianto Date: Tue, 12 Oct 2021 19:24:29 +0700 Subject: [PATCH] fix: nft_transfer sender_id not previous owner when using approval --- paras-nft-contract/src/lib.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/paras-nft-contract/src/lib.rs b/paras-nft-contract/src/lib.rs index c1b87ce..13b931c 100644 --- a/paras-nft-contract/src/lib.rs +++ b/paras-nft-contract/src/lib.rs @@ -741,13 +741,13 @@ impl Contract { ) { let sender_id = env::predecessor_account_id(); let receiver_id_str = receiver_id.to_string(); - self.tokens.internal_transfer(&sender_id, &receiver_id_str, &token_id, approval_id, memo); + let (previous_owner_id, _) = self.tokens.internal_transfer(&sender_id, &receiver_id_str, &token_id, approval_id, memo); env::log( json!({ "type": "nft_transfer", "params": { "token_id": token_id, - "sender_id": sender_id, + "sender_id": previous_owner_id, "receiver_id": receiver_id_str } }) @@ -764,16 +764,15 @@ impl Contract { approval_id: Option, memo: Option, ) { - let receiver_id_str = receiver_id.to_string(); - let sender_id = env::predecessor_account_id(); - self.tokens - .nft_transfer(receiver_id, token_id.clone(), approval_id, memo); + let previous_owner_id = self.tokens.owner_by_id.get(&token_id).expect("Token not found"); + let receiver_id_str = receiver_id.to_string(); + self.tokens.nft_transfer(receiver_id, token_id.clone(), approval_id, memo); env::log( json!({ "type": "nft_transfer", "params": { "token_id": token_id, - "sender_id": sender_id, + "sender_id": previous_owner_id, "receiver_id": receiver_id_str } })