|
15 | 15 | AquariusCustomDDOFields, |
16 | 16 | EventTypes, |
17 | 17 | MetadataStates, |
| 18 | + SoftDeleteMetadataStates, |
18 | 19 | ) |
19 | 20 | from aquarius.events.decryptor import decrypt_ddo |
20 | 21 | from aquarius.events.proof_checker import check_metadata_proofs |
@@ -634,24 +635,30 @@ def restore_ddo(self): |
634 | 635 | def process(self): |
635 | 636 | self.did = make_did(self.event.address, self._chain_id) |
636 | 637 | # check if assets exists. if not, bail out |
637 | | - exists = self._es_instance.exists(self.did) |
638 | | - if not exists: |
| 638 | + ddo = self._es_instance.read(self.did) |
| 639 | + |
| 640 | + if not ddo: |
639 | 641 | logger.warn( |
640 | 642 | f"Detected MetadataState changed for {self.did}, but it does not exists." |
641 | 643 | ) |
642 | 644 | return |
643 | | - if self.event.args.state == MetadataStates.ACTIVE: |
| 645 | + # if asset was already in soft state, let's check if we need to bring it back |
| 646 | + if ( |
| 647 | + self.event.args.state == MetadataStates.ACTIVE |
| 648 | + or self.event.args.state == MetadataStates.END_OF_LIFE |
| 649 | + ) and ddo[AquariusCustomDDOFields.NFT]["state"] in SoftDeleteMetadataStates: |
644 | 650 | return self.restore_ddo() |
645 | 651 |
|
646 | | - target_state = self.event.args.state |
647 | | - if target_state in [ |
648 | | - MetadataStates.END_OF_LIFE, |
649 | | - MetadataStates.DEPRECATED, |
650 | | - MetadataStates.REVOKED, |
651 | | - ]: |
| 652 | + # check if asset is active before doing soft delete |
| 653 | + if ( |
| 654 | + self.event.args.state in SoftDeleteMetadataStates |
| 655 | + and ddo[AquariusCustomDDOFields.NFT]["state"] |
| 656 | + not in SoftDeleteMetadataStates |
| 657 | + ): |
652 | 658 | try: |
653 | 659 | self.soft_delete_ddo(self.did) |
654 | 660 | except Exception: |
655 | 661 | return |
656 | | - |
657 | | - self.update_aqua_nft_state_data(self.event.args.state, self.did) |
| 662 | + # update only if needed |
| 663 | + if self.event.args.state != ddo[AquariusCustomDDOFields.NFT]["state"]: |
| 664 | + self.update_aqua_nft_state_data(self.event.args.state, self.did) |
0 commit comments