@@ -7,14 +7,15 @@ import {
77 store
88} from '@graphprotocol/graph-ts'
99import {
10+ IPNFT as IPNFTContract ,
1011 IPNFTMinted as IPNFTMintedEvent ,
11- Reserved as ReservedEvent ,
12- ReadAccessGranted as ReadAccessGrantedEvent ,
13- Transfer as TransferEvent ,
1412 MetadataUpdate as MetadataUpdateEvent ,
15- IPNFT as IPNFTContract
13+ ReadAccessGranted as ReadAccessGrantedEvent ,
14+ Reserved as ReservedEvent ,
15+ Transfer as TransferEvent
1616} from '../generated/IPNFT/IPNFT'
17- import { Ipnft , Reservation , CanRead } from '../generated/schema'
17+ import { IpnftMetadata as IpnftMetadataTemplate } from '../generated/templates'
18+ import { CanRead , Ipnft , Reservation } from '../generated/schema'
1819
1920export function handleTransfer ( event : TransferEvent ) : void {
2021 if ( event . params . to == Address . zero ( ) ) {
@@ -80,8 +81,14 @@ export function handleMint(event: IPNFTMintedEvent): void {
8081 ipnft . tokenURI = event . params . tokenURI
8182 ipnft . createdAt = event . block . timestamp
8283 ipnft . symbol = event . params . symbol
84+ let ipfsLocation = event . params . tokenURI . replace ( 'ipfs://' , '' ) ;
85+ ipnft . metadata = ipfsLocation
86+ ipnft . updatedAtTimestamp = event . block . timestamp
87+ IpnftMetadataTemplate . create ( ipfsLocation )
88+
8389 store . remove ( 'Reservation' , event . params . tokenId . toString ( ) )
8490 ipnft . save ( )
91+
8592}
8693
8794export function handleMetadataUpdated ( event : MetadataUpdateEvent ) : void {
@@ -94,8 +101,19 @@ export function handleMetadataUpdated(event: MetadataUpdateEvent): void {
94101 //erc4906 is not emitting the new url, we must query it ourselves
95102 let _ipnftContract = IPNFTContract . bind ( event . params . _event . address ) ;
96103 let newUri = _ipnftContract . tokenURI ( event . params . _tokenId )
104+ if ( ! newUri ) {
105+ log . debug ( "no new uri found for token, likely just minted {}" , [ event . params . _tokenId . toString ( ) ] )
106+ return
107+ }
97108
98109 ipnft . tokenURI = newUri
110+
111+ let ipfsLocation = newUri . replace ( 'ipfs://' , '' ) ;
112+ ipnft . updatedAtTimestamp = event . block . timestamp
113+ ipnft . metadata = ipfsLocation
114+
115+ IpnftMetadataTemplate . create ( ipfsLocation )
116+
99117 ipnft . save ( )
100118}
101119
0 commit comments