diff --git a/subgraph/build/DelegateRegistry/DelegateRegistry.wasm b/subgraph/build/DelegateRegistry/DelegateRegistry.wasm index b7ea545..4d78a72 100644 Binary files a/subgraph/build/DelegateRegistry/DelegateRegistry.wasm and b/subgraph/build/DelegateRegistry/DelegateRegistry.wasm differ diff --git a/subgraph/src/delegate-registry.ts b/subgraph/src/delegate-registry.ts index 3fe6369..00d321d 100644 --- a/subgraph/src/delegate-registry.ts +++ b/subgraph/src/delegate-registry.ts @@ -29,93 +29,97 @@ export function handleDelegateAdded(event: DelegateAddedEvent): void { let ipfsMetadataCid: JSON.Str | null = jsonObj.getString("ipfsMetadata"); - if (ipfsMetadataCid != null) { + if (ipfsMetadataCid != null && ipfsMetadataCid._str.length != 0) { entity.ipfsMetadata = ipfsMetadataCid.valueOf(); - parseIpfsMetadata(entity, ipfsMetadataCid.valueOf()); - } else { - let statusOrNull: JSON.Str | null = jsonObj.getString("status"); - - if (statusOrNull != null) { - entity.status = statusOrNull.valueOf(); + if (!parseIpfsMetadata(entity, ipfsMetadataCid.valueOf())) { + assignEntityFields(entity, jsonObj); } + } else assignEntityFields(entity, jsonObj); - let nameOrNull: JSON.Str | null = jsonObj.getString("name"); + entity.createdAt = entity.createdAt || event.block.timestamp; - if (nameOrNull != null) { - entity.name = nameOrNull.valueOf(); - } + entity.blockNumber = event.block.number; + entity.blockTimestamp = event.block.timestamp; + entity.transactionHash = event.transaction.hash; - let statementOrNull: JSON.Str | null = jsonObj.getString("statement"); + entity.save(); +} - if (statementOrNull != null) { - entity.statement = statementOrNull.valueOf(); - } +export function assignEntityFields(entity: Delegate, jsonObj: JSON.Obj): void { + let statusOrNull: JSON.Str | null = jsonObj.getString("status"); - let profilePictureUrlOrNull: JSON.Str | null = jsonObj.getString( - "profilePictureUrl" - ); + if (statusOrNull != null) { + entity.status = statusOrNull.valueOf(); + } - if (profilePictureUrlOrNull != null) { - entity.profilePictureUrl = profilePictureUrlOrNull.valueOf(); - } + let nameOrNull: JSON.Str | null = jsonObj.getString("name"); + + if (nameOrNull != null) { + entity.name = nameOrNull.valueOf(); + } - let acceptedCoCOrNull: JSON.Str | null = jsonObj.getString("acceptedCoC"); + let statementOrNull: JSON.Str | null = jsonObj.getString("statement"); - if (acceptedCoCOrNull != null) { - entity.acceptedCoC = acceptedCoCOrNull.valueOf(); - } + if (statementOrNull != null) { + entity.statement = statementOrNull.valueOf(); + } - let interestsOrNull: JSON.Str | null = jsonObj.getString("interests"); + let profilePictureUrlOrNull: JSON.Str | null = jsonObj.getString( + "profilePictureUrl" + ); - if (interestsOrNull != null) { - entity.interests = interestsOrNull.valueOf(); - } + if (profilePictureUrlOrNull != null) { + entity.profilePictureUrl = profilePictureUrlOrNull.valueOf(); } - entity.createdAt = entity.createdAt || event.block.timestamp; + let acceptedCoCOrNull: JSON.Str | null = jsonObj.getString("acceptedCoC"); - entity.blockNumber = event.block.number; - entity.blockTimestamp = event.block.timestamp; - entity.transactionHash = event.transaction.hash; + if (acceptedCoCOrNull != null) { + entity.acceptedCoC = acceptedCoCOrNull.valueOf(); + } - entity.save(); + let interestsOrNull: JSON.Str | null = jsonObj.getString("interests"); + + if (interestsOrNull != null) { + entity.interests = interestsOrNull.valueOf(); + } } export function parseIpfsMetadata( entity: Delegate, ipfsMetadataCid: string -): void { +): boolean { let data = ipfs.cat(ipfsMetadataCid); + if (!data) return false; + + const ipfsMetadata = json.fromBytes(data).toObject(); + if (ipfsMetadata) { + let statusOrNull = ipfsMetadata.get("status"); + if (statusOrNull != null) { + entity.status = statusOrNull.toString(); + } + + let nameOrNull = ipfsMetadata.get("name"); + if (nameOrNull != null) { + entity.name = nameOrNull.toString(); + } + + let statementOrNull = ipfsMetadata.get("statement"); + if (statementOrNull != null) { + entity.statement = statementOrNull.toString(); + } + + let profilePictureUrlOrNull = ipfsMetadata.get("profilePictureUrl"); + if (profilePictureUrlOrNull != null) { + entity.profilePictureUrl = profilePictureUrlOrNull.toString(); + } - if (data) { - const ipfsMetadata = json.fromBytes(data).toObject(); - if (ipfsMetadata) { - let statusOrNull = ipfsMetadata.get("status"); - if (statusOrNull != null) { - entity.status = statusOrNull.toString(); - } - - let nameOrNull = ipfsMetadata.get("name"); - if (nameOrNull != null) { - entity.name = nameOrNull.toString(); - } - - let statementOrNull = ipfsMetadata.get("statement"); - if (statementOrNull != null) { - entity.statement = statementOrNull.toString(); - } - - let profilePictureUrlOrNull = ipfsMetadata.get("profilePictureUrl"); - if (profilePictureUrlOrNull != null) { - entity.profilePictureUrl = profilePictureUrlOrNull.toString(); - } - - let acceptedCoC = ipfsMetadata.get("acceptedCoC"); - if (acceptedCoC != null) { - entity.acceptedCoC = acceptedCoC.toString(); - } + let acceptedCoC = ipfsMetadata.get("acceptedCoC"); + if (acceptedCoC != null) { + entity.acceptedCoC = acceptedCoC.toString(); } } + return true; } export function handleDelegateRemoved(event: DelegateRemovedEvent): void {