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

difftreelog

fix(rmrk) accept/reject nft events

Daniel Shiposha2022-06-08parent: #e451032.patch.diff
in: master

1 file changed

modifiedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth
105 nft_id: RmrkNftId,105 nft_id: RmrkNftId,
106 approval_required: bool,106 approval_required: bool,
107 },107 },
108 NFTAccepted {
109 sender: T::AccountId,
110 recipient: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,
111 collection_id: RmrkCollectionId,
112 nft_id: RmrkNftId,
113 },
114 NFTRejected {
115 sender: T::AccountId,
116 collection_id: RmrkCollectionId,
117 nft_id: RmrkNftId,
118 },
108 PropertySet {119 PropertySet {
109 collection_id: RmrkCollectionId,120 collection_id: RmrkCollectionId,
110 maybe_nft_id: Option<RmrkNftId>,121 maybe_nft_id: Option<RmrkNftId>,
486 new_owner: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,497 new_owner: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,
487 ) -> DispatchResult {498 ) -> DispatchResult {
488 let sender = ensure_signed(origin.clone())?;499 let sender = ensure_signed(origin.clone())?;
489 let cross_sender = T::CrossAccountId::from_sub(sender);500 let cross_sender = T::CrossAccountId::from_sub(sender.clone());
490501
491 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;502 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
492 let nft_id = rmrk_nft_id.into();503 let nft_id = rmrk_nft_id.into();
493504
494 let collection =505 let collection =
495 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;506 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
496507
497 let new_owner = match new_owner {508 let new_cross_owner = match new_owner {
498 RmrkAccountIdOrCollectionNftTuple::AccountId(account_id) => {509 RmrkAccountIdOrCollectionNftTuple::AccountId(ref account_id) => {
499 T::CrossAccountId::from_sub(account_id)510 T::CrossAccountId::from_sub(account_id.clone())
500 }511 }
501 RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(512 RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(
502 target_collection_id,513 target_collection_id,
513524
514 let budget = budget::Value::new(NESTING_BUDGET);525 let budget = budget::Value::new(NESTING_BUDGET);
515526
516 <PalletNft<T>>::transfer(&collection, &cross_sender, &new_owner, nft_id, &budget)527 <PalletNft<T>>::transfer(&collection, &cross_sender, &new_cross_owner, nft_id, &budget)
517 .map_err(|err| {528 .map_err(|err| {
518 if err == <CommonError<T>>::OnlyOwnerAllowedToNest.into() {529 if err == <CommonError<T>>::OnlyOwnerAllowedToNest.into() {
519 <Error<T>>::CannotAcceptNonOwnedNft.into()530 <Error<T>>::CannotAcceptNonOwnedNft.into()
529 Self::rmrk_property(PendingNftAccept, &false)?,540 Self::rmrk_property(PendingNftAccept, &false)?,
530 )?;541 )?;
542
543 Self::deposit_event(Event::NFTAccepted {
544 sender,
545 recipient: new_owner,
546 collection_id: rmrk_collection_id,
547 nft_id: rmrk_nft_id,
548 });
531549
532 Ok(())550 Ok(())
533 }551 }
536 #[transactional]554 #[transactional]
537 pub fn reject_nft(555 pub fn reject_nft(
538 origin: OriginFor<T>,556 origin: OriginFor<T>,
539 collection_id: RmrkCollectionId,557 rmrk_collection_id: RmrkCollectionId,
540 nft_id: RmrkNftId,558 rmrk_nft_id: RmrkNftId,
541 ) -> DispatchResult {559 ) -> DispatchResult {
542 let sender = ensure_signed(origin)?;560 let sender = ensure_signed(origin)?;
543 let cross_sender = T::CrossAccountId::from_sub(sender);561 let cross_sender = T::CrossAccountId::from_sub(sender.clone());
544562
545 let collection_id = Self::unique_collection_id(collection_id)?;563 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;
546 let nft_id = nft_id.into();564 let nft_id = rmrk_nft_id.into();
547565
548 Self::destroy_nft(cross_sender, collection_id, nft_id).map_err(|err| {566 Self::destroy_nft(cross_sender, collection_id, nft_id).map_err(|err| {
549 if err == <CommonError<T>>::NoPermission.into()567 if err == <CommonError<T>>::NoPermission.into()
555 }573 }
556 })?;574 })?;
575
576 Self::deposit_event(Event::NFTRejected {
577 sender,
578 collection_id: rmrk_collection_id,
579 nft_id: rmrk_nft_id,
580 });
557581
558 Ok(())582 Ok(())
559 }583 }