1
1
import {
2
2
NFTCreated ,
3
3
TokenCreated ,
4
- ERC721Factory
4
+ Template721Added ,
5
+ Template20Added
5
6
} from '../@types/ERC721Factory/ERC721Factory'
7
+ import { Erc721Template , Erc20Template } from '../@types/schema'
6
8
import { decimal } from './utils/constants'
7
9
import { weiToDecimal } from './utils/generic'
8
10
9
11
import { getUser } from './utils/userUtils'
10
- import { getToken , getNftToken } from './utils/tokenUtils'
12
+ import { getToken , getNftToken , getErc20TemplateId } from './utils/tokenUtils'
11
13
import { addDatatoken } from './utils/globalUtils'
12
- import { BigInt } from '@graphprotocol/graph-ts'
13
14
14
15
export function handleNftCreated ( event : NFTCreated ) : void {
15
16
// const nft = new Nft(event.params.newTokenAddress.toHexString())
@@ -27,6 +28,7 @@ export function handleNftCreated(event: NFTCreated): void {
27
28
nft . block = event . block . number . toI32 ( )
28
29
nft . eventIndex = event . logIndex . toI32 ( )
29
30
nft . transferable = event . params . transferable
31
+ nft . template = event . params . templateAddress . toHexString ( )
30
32
31
33
nft . save ( )
32
34
}
@@ -49,25 +51,27 @@ export function handleNewToken(event: TokenCreated): void {
49
51
token . decimals = 18
50
52
token . supply = decimal . ZERO
51
53
token . cap = weiToDecimal ( event . params . cap . toBigDecimal ( ) , 18 )
52
- const eventTemplateAddress = event . params . templateAddress
53
- . toHexString ( )
54
- . toLowerCase ( )
55
- const contract = ERC721Factory . bind ( event . address )
56
- const templateCount = contract . try_getCurrentTemplateCount ( )
57
- if ( templateCount . reverted ) return
58
- const templateCountNum = templateCount . value . toI32 ( )
54
+ token . templateId = getErc20TemplateId ( event . params . templateAddress )
55
+ token . save ( )
56
+ addDatatoken ( )
57
+ }
59
58
60
- for ( let i = 0 ; i < templateCountNum ; i ++ ) {
61
- const template = contract . try_getTokenTemplate ( BigInt . fromI32 ( 1 + i ) )
62
- if ( template . reverted ) return
63
- const templateAddress = template . value . templateAddress
64
- . toHexString ( )
65
- . toLowerCase ( )
66
- if ( templateAddress == eventTemplateAddress ) {
67
- token . templateId = 1 + i
68
- }
59
+ export function handleNew721Template ( event : Template721Added ) : void {
60
+ let template = Erc721Template . load (
61
+ event . params . _templateAddress . toHexString ( )
62
+ )
63
+ if ( template === null ) {
64
+ template = new Erc721Template ( event . params . _templateAddress . toHexString ( ) )
65
+ template . templateId = event . params . nftTemplateCount
66
+ template . save ( )
69
67
}
68
+ }
70
69
71
- token . save ( )
72
- addDatatoken ( )
70
+ export function handleNew20Template ( event : Template20Added ) : void {
71
+ let template = Erc20Template . load ( event . params . _templateAddress . toHexString ( ) )
72
+ if ( template === null ) {
73
+ template = new Erc20Template ( event . params . _templateAddress . toHexString ( ) )
74
+ template . templateId = event . params . nftTemplateCount
75
+ template . save ( )
76
+ }
73
77
}
0 commit comments