git.delta.rocks / unique-network / refs/commits / cfe76c116514

difftreelog

fix skip eth allowance event on token transfer

Yaroslav Bolyukin2021-11-04parent: #0aec5e9.patch.diff
in: master

1 file changed

modifiedpallets/nonfungible/src/lib.rsdiffbeforeafterboth
275 <Owned<T>>::remove((collection.id, from.as_sub(), token));275 <Owned<T>>::remove((collection.id, from.as_sub(), token));
276 <Owned<T>>::insert((collection.id, to.as_sub(), token), true);276 <Owned<T>>::insert((collection.id, to.as_sub(), token), true);
277 }277 }
278 Self::set_allowance_unchecked(collection, from, token, None);278 Self::set_allowance_unchecked(collection, from, token, None, true);
279279
280 collection.log_infallible(ERC721Events::Transfer {280 collection.log_infallible(ERC721Events::Transfer {
281 from: *from.as_eth(),281 from: *from.as_eth(),
385 sender: &T::CrossAccountId,385 sender: &T::CrossAccountId,
386 token: TokenId,386 token: TokenId,
387 spender: Option<&T::CrossAccountId>,387 spender: Option<&T::CrossAccountId>,
388 assume_implicit_eth: bool,
388 ) {389 ) {
389 if let Some(spender) = spender {390 if let Some(spender) = spender {
390 let old_spender = <Allowance<T>>::get((collection.id, token));391 let old_spender = <Allowance<T>>::get((collection.id, token));
418 }419 }
419 } else {420 } else {
420 let old_spender = <Allowance<T>>::take((collection.id, token));421 let old_spender = <Allowance<T>>::take((collection.id, token));
422 if !assume_implicit_eth {
421 // In ERC721 there is only one possible approved user of token, so we set423 // In ERC721 there is only one possible approved user of token, so we set
422 // approved user to zero address424 // approved user to zero address
423 collection.log_infallible(ERC721Events::Approval {425 collection.log_infallible(ERC721Events::Approval {
424 owner: *sender.as_eth(),426 owner: *sender.as_eth(),
425 approved: H160::default(),427 approved: H160::default(),
426 token_id: token.into(),428 token_id: token.into(),
427 });429 });
430 }
428 // In Unique chain, any token can have any amount of approved users, so we need to431 // In Unique chain, any token can have any amount of approved users, so we need to
429 // set allowance of old owner to 0432 // set allowance of old owner to 0
430 if let Some(old_spender) = old_spender {433 if let Some(old_spender) = old_spender {
466469
467 // =========470 // =========
468471
469 Self::set_allowance_unchecked(collection, sender, token, spender);472 Self::set_allowance_unchecked(collection, sender, token, spender, false);
470 Ok(())473 Ok(())
471 }474 }
472475