2021-11-10 13:47:44 +01:00
|
|
|
import { Dispenser } from '../../@types/schema'
|
|
|
|
import { getToken } from './tokenUtils'
|
2022-02-20 09:00:16 +01:00
|
|
|
import { Address, BigDecimal } from '@graphprotocol/graph-ts'
|
|
|
|
import { weiToDecimal } from './generic'
|
|
|
|
import { Dispenser as DispenserContract } from '../../@types/Dispenser/Dispenser'
|
2021-11-10 13:47:44 +01:00
|
|
|
|
2022-02-20 09:00:16 +01:00
|
|
|
export function getDispenserGraphID(
|
|
|
|
contractAddress: Address,
|
|
|
|
datatokenAddress: Address
|
|
|
|
): string {
|
|
|
|
return contractAddress.toHexString() + '-' + datatokenAddress.toHexString()
|
|
|
|
}
|
|
|
|
|
|
|
|
export function createDispenser(dispenserID: string): Dispenser {
|
|
|
|
const dispenser = new Dispenser(dispenserID)
|
2021-11-10 13:47:44 +01:00
|
|
|
dispenser.save()
|
|
|
|
return dispenser
|
|
|
|
}
|
|
|
|
|
2022-02-20 09:00:16 +01:00
|
|
|
export function getDispenser(dispenserID: string): Dispenser {
|
|
|
|
let dispenser = Dispenser.load(dispenserID)
|
2021-11-10 13:47:44 +01:00
|
|
|
if (dispenser === null) {
|
2022-02-20 09:00:16 +01:00
|
|
|
dispenser = createDispenser(dispenserID)
|
2021-11-10 13:47:44 +01:00
|
|
|
}
|
|
|
|
return dispenser
|
|
|
|
}
|
2022-02-20 09:00:16 +01:00
|
|
|
|
|
|
|
export function updateDispenserBalance(
|
|
|
|
contractAddress: Address,
|
|
|
|
datatokenAddress: Address
|
|
|
|
): BigDecimal {
|
|
|
|
const contract = DispenserContract.bind(contractAddress)
|
|
|
|
const dispenserDetails = contract.try_status(datatokenAddress)
|
|
|
|
if (dispenserDetails == null) return BigDecimal.fromString('0')
|
|
|
|
const token = getToken(datatokenAddress, true)
|
|
|
|
return weiToDecimal(
|
|
|
|
dispenserDetails.value.value5.toBigDecimal(),
|
|
|
|
token.decimals
|
|
|
|
)
|
|
|
|
}
|