Skip to content

Commit a80babf

Browse files
committed
adapt revoked and deprecated logic
1 parent a9cc9f7 commit a80babf

File tree

1 file changed

+37
-6
lines changed

1 file changed

+37
-6
lines changed

src/components/Indexer/processors/MetadataEventProcessor.ts

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,47 @@ export class MetadataEventProcessor extends BaseEventProcessor {
6565
signer
6666
)
6767
const metaData = await templateContract.getMetaData()
68-
const metaDataState = Number(metaData[2])
68+
const metadataState = Number(metaData[2])
6969

70-
if ([MetadataStates.DEPRECATED, MetadataStates.REVOKED].includes(metaDataState)) {
70+
if ([MetadataStates.DEPRECATED, MetadataStates.REVOKED].includes(metadataState)) {
7171
INDEXER_LOGGER.logMessage(
72-
`Delete DDO because Metadata state is ${metaDataState}`,
72+
`Delete DDO because Metadata state is ${metadataState}`,
7373
true
7474
)
75-
await ddoDatabase.delete(did)
76-
await ddoState.delete(did)
77-
return
75+
const { ddo: ddoDatabase } = await getDatabase()
76+
const ddo = await ddoDatabase.retrieve(did)
77+
if (!ddo) {
78+
INDEXER_LOGGER.logMessage(
79+
`Detected MetadataState changed for ${did}, but it does not exists.`
80+
)
81+
return
82+
}
83+
84+
const ddoInstance = DDOManager.getDDOClass(ddo)
85+
86+
INDEXER_LOGGER.logMessage(
87+
`DDO became non-visible from ${
88+
ddoInstance.getAssetFields().indexedMetadata.nft.state
89+
} to ${metadataState}`
90+
)
91+
92+
const shortDdoInstance = DDOManager.getDDOClass({
93+
id: ddo.id,
94+
version: 'deprecated',
95+
chainId,
96+
nftAddress: ddo.nftAddress,
97+
indexedMetadata: {
98+
nft: {
99+
state: metadataState
100+
}
101+
}
102+
})
103+
104+
const savedDDO = await this.createOrUpdateDDO(
105+
shortDdoInstance,
106+
EVENTS.METADATA_STATE
107+
)
108+
return savedDDO
78109
}
79110

80111
const ddo = await this.decryptDDO(

0 commit comments

Comments
 (0)