@@ -13,7 +13,8 @@ import {
1313 MetadataUpdate as MetadataUpdateEvent ,
1414 ReadAccessGranted as ReadAccessGrantedEvent ,
1515 Reserved as ReservedEvent ,
16- Transfer as TransferEvent
16+ Transfer as TransferEvent ,
17+ IPNFTPOI as IPNFTPOIEvent
1718} from '../generated/IPNFT/IPNFT'
1819import { IpnftMetadata as IpnftMetadataTemplate } from '../generated/templates'
1920import { CanRead , Ipnft , Reservation } from '../generated/schema'
@@ -75,17 +76,21 @@ export function handleReservation(event: ReservedEvent): void {
7576 reservation . save ( )
7677}
7778
78- function updateIpnftMetadata ( ipnft : Ipnft , uri : string , timestamp : BigInt ) : void {
79- let ipfsLocation = uri . replace ( 'ipfs://' , '' ) ;
80- if ( ! ipfsLocation || ipfsLocation == uri ) {
81- log . error ( "Invalid URI format for tokenId {}: {}" , [ ipnft . id , uri ] )
82- return
83- }
79+ function updateIpnftMetadata (
80+ ipnft : Ipnft ,
81+ uri : string ,
82+ timestamp : BigInt
83+ ) : void {
84+ let ipfsLocation = uri . replace ( 'ipfs://' , '' )
85+ if ( ! ipfsLocation || ipfsLocation == uri ) {
86+ log . error ( 'Invalid URI format for tokenId {}: {}' , [ ipnft . id , uri ] )
87+ return
88+ }
8489
85- ipnft . tokenURI = uri
86- ipnft . metadata = ipfsLocation
87- ipnft . updatedAtTimestamp = timestamp
88- IpnftMetadataTemplate . create ( ipfsLocation )
90+ ipnft . tokenURI = uri
91+ ipnft . metadata = ipfsLocation
92+ ipnft . updatedAtTimestamp = timestamp
93+ IpnftMetadataTemplate . create ( ipfsLocation )
8994}
9095
9196//the underlying parameter arrays are misaligned, hence we cannot cast or unify both events
@@ -97,7 +102,17 @@ export function handleMint(event: IPNFTMintedEvent): void {
97102 updateIpnftMetadata ( ipnft , event . params . tokenURI , event . block . timestamp )
98103 store . remove ( 'Reservation' , event . params . tokenId . toString ( ) )
99104 ipnft . save ( )
105+ }
106+
107+ export function handlePOI ( event : IPNFTPOIEvent ) : void {
108+ let ipnft = Ipnft . load ( event . params . tokenId . toString ( ) )
109+ if ( ! ipnft ) {
110+ log . error ( 'ipnft {} not found' , [ event . params . tokenId . toString ( ) ] )
111+ return
112+ }
100113
114+ ipnft . poi = event . params . poi
115+ ipnft . save ( )
101116}
102117
103118export function handleMetadataUpdated ( event : MetadataUpdateEvent ) : void {
@@ -108,13 +123,14 @@ export function handleMetadataUpdated(event: MetadataUpdateEvent): void {
108123 }
109124
110125 //erc4906 is not emitting the new url, we must query it ourselves
111- let _ipnftContract = IPNFTContract . bind ( event . params . _event . address ) ;
126+ let _ipnftContract = IPNFTContract . bind ( event . params . _event . address )
112127 let newUri = _ipnftContract . tokenURI ( event . params . _tokenId )
113- if ( ! newUri || newUri == "" ) {
114- log . debug ( "no new uri found for token, likely just minted {}" , [ event . params . _tokenId . toString ( ) ] )
115- return
128+ if ( ! newUri || newUri == '' ) {
129+ log . debug ( 'no new uri found for token, likely just minted {}' , [
130+ event . params . _tokenId . toString ( )
131+ ] )
132+ return
116133 }
117- updateIpnftMetadata ( ipnft , newUri , event . block . timestamp )
134+ updateIpnftMetadata ( ipnft , newUri , event . block . timestamp )
118135 ipnft . save ( )
119136}
120-
0 commit comments