Skip to content

Commit 50098d8

Browse files
authored
fix EOL state (#1039)
* fix EOL state
1 parent 0f33ce4 commit 50098d8

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

aquarius/events/constants.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ class MetadataStates(IntEnum):
8484
ORDERING_DISABLED = 4
8585

8686

87+
SoftDeleteMetadataStates = [
88+
MetadataStates.DEPRECATED,
89+
MetadataStates.REVOKED,
90+
]
91+
92+
8793
class AquariusCustomDDOFields(SimpleEnum):
8894
EVENT = "event"
8995
NFT = "nft"

aquarius/events/processors.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
AquariusCustomDDOFields,
1616
EventTypes,
1717
MetadataStates,
18+
SoftDeleteMetadataStates,
1819
)
1920
from aquarius.events.decryptor import decrypt_ddo
2021
from aquarius.events.proof_checker import check_metadata_proofs
@@ -634,24 +635,30 @@ def restore_ddo(self):
634635
def process(self):
635636
self.did = make_did(self.event.address, self._chain_id)
636637
# 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:
639641
logger.warn(
640642
f"Detected MetadataState changed for {self.did}, but it does not exists."
641643
)
642644
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:
644650
return self.restore_ddo()
645651

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+
):
652658
try:
653659
self.soft_delete_ddo(self.did)
654660
except Exception:
655661
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

Comments
 (0)