|
1 | 1 | /* eslint-disable prefer-const */
|
2 |
| -import { BigInt, BigDecimal, store, Address } from '@graphprotocol/graph-ts' |
| 2 | +import { BigInt, BigDecimal, store, Address, log } from '@graphprotocol/graph-ts' |
3 | 3 | import {
|
4 | 4 | Pair,
|
5 | 5 | Token,
|
|
8 | 8 | Mint as MintEvent,
|
9 | 9 | Burn as BurnEvent,
|
10 | 10 | Swap as SwapEvent,
|
11 |
| - Bundle |
| 11 | + Bundle, LiquidityPosition |
12 | 12 | } from '../types/schema'
|
13 | 13 | import { Pair as PairContract, Mint, Burn, Swap, Transfer, Sync } from '../types/templates/Pair/Pair'
|
14 | 14 | import { updatePairDayData, updateTokenDayData, updateUniswapDayData, updatePairHourData } from './dayUpdates'
|
@@ -197,16 +197,24 @@ export function handleTransfer(event: Transfer): void {
|
197 | 197 |
|
198 | 198 | if (from.toHexString() != ADDRESS_ZERO && from.toHexString() != pair.id) {
|
199 | 199 | let fromUserLiquidityPosition = createLiquidityPosition(event.address, from)
|
200 |
| - fromUserLiquidityPosition.liquidityTokenBalance = convertTokenToDecimal(pairContract.balanceOf(from), BI_18) |
201 |
| - fromUserLiquidityPosition.save() |
202 |
| - createLiquiditySnapshot(fromUserLiquidityPosition, event) |
| 200 | + if (fromUserLiquidityPosition !== null) { |
| 201 | + fromUserLiquidityPosition.liquidityTokenBalance = convertTokenToDecimal(pairContract.balanceOf(from), BI_18) |
| 202 | + fromUserLiquidityPosition.save() |
| 203 | + createLiquiditySnapshot(fromUserLiquidityPosition as LiquidityPosition, event) |
| 204 | + } |
203 | 205 | }
|
204 | 206 |
|
205 | 207 | if (event.params.to.toHexString() != ADDRESS_ZERO && to.toHexString() != pair.id) {
|
206 |
| - let toUserLiquidityPosition = createLiquidityPosition(event.address, to) |
207 |
| - toUserLiquidityPosition.liquidityTokenBalance = convertTokenToDecimal(pairContract.balanceOf(to), BI_18) |
208 |
| - toUserLiquidityPosition.save() |
209 |
| - createLiquiditySnapshot(toUserLiquidityPosition, event) |
| 208 | + if (to.toHexString() !== ADDRESS_ZERO) { |
| 209 | + let toUserLiquidityPosition = createLiquidityPosition(event.address, to) |
| 210 | + if (toUserLiquidityPosition !== null) { |
| 211 | + toUserLiquidityPosition.liquidityTokenBalance = convertTokenToDecimal(pairContract.balanceOf(to), BI_18) |
| 212 | + toUserLiquidityPosition.save() |
| 213 | + createLiquiditySnapshot(toUserLiquidityPosition as LiquidityPosition, event) |
| 214 | + } |
| 215 | + } else { |
| 216 | + log.warning('Detected 0 address in handleTransfer', []) |
| 217 | + } |
210 | 218 | }
|
211 | 219 |
|
212 | 220 | transaction.save()
|
@@ -320,9 +328,17 @@ export function handleMint(event: Mint): void {
|
320 | 328 | mint.amountUSD = amountTotalUSD as BigDecimal
|
321 | 329 | mint.save()
|
322 | 330 |
|
323 |
| - // update the LP position |
324 |
| - let liquidityPosition = createLiquidityPosition(event.address, mint.to as Address) |
325 |
| - createLiquiditySnapshot(liquidityPosition, event) |
| 331 | + let to = mint.to as Address |
| 332 | + if (to.toHexString() !== ADDRESS_ZERO) { |
| 333 | + let liquidityPosition = createLiquidityPosition(event.address, to) |
| 334 | + if (liquidityPosition !== null) { |
| 335 | + createLiquiditySnapshot(liquidityPosition as LiquidityPosition, event) |
| 336 | + } else { |
| 337 | + log.warning('null position in handleMint', []) |
| 338 | + } |
| 339 | + } else { |
| 340 | + log.warning('Detected 0 address in handleMint', []) |
| 341 | + } |
326 | 342 |
|
327 | 343 | // update day entities
|
328 | 344 | updatePairDayData(event)
|
@@ -383,8 +399,22 @@ export function handleBurn(event: Burn): void {
|
383 | 399 | burn.save()
|
384 | 400 |
|
385 | 401 | // update the LP position
|
386 |
| - let liquidityPosition = createLiquidityPosition(event.address, burn.sender as Address) |
387 |
| - createLiquiditySnapshot(liquidityPosition, event) |
| 402 | + let to = burn.sender as Address |
| 403 | + if (burn.sender.toHexString() != '0x') { |
| 404 | + let liquidityPosition = createLiquidityPosition(event.address, to) |
| 405 | + if (liquidityPosition !== null) { |
| 406 | + createLiquiditySnapshot(liquidityPosition as LiquidityPosition, event) |
| 407 | + } else { |
| 408 | + log.warning('null position in handleBurn: ' |
| 409 | + .concat(burn.sender.toHexString()).concat(' ') |
| 410 | + .concat(ADDRESS_ZERO) |
| 411 | + .concat(', tx_hash: ') |
| 412 | + .concat(event.transaction.hash.toHexString()), []) |
| 413 | + } |
| 414 | + } else { |
| 415 | + log.warning('Detected 0x address in handleBurn'.concat(', tx_hash: ') |
| 416 | + .concat(event.transaction.hash.toHexString()), []) |
| 417 | + } |
388 | 418 |
|
389 | 419 | // update day entities
|
390 | 420 | updatePairDayData(event)
|
|
0 commit comments