Skip to content

Commit

Permalink
fix: resolver null on event
Browse files Browse the repository at this point in the history
  • Loading branch information
TateB committed Dec 12, 2023
1 parent 43d6247 commit 6b56712
Show file tree
Hide file tree
Showing 4 changed files with 510 additions and 17 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -73,4 +73,5 @@ typings/
# intellij
.idea

/tests/.bin
/tests/.bin
/tests/.latest.json
47 changes: 32 additions & 15 deletions src/resolver.ts
Expand Up @@ -57,7 +57,7 @@ export function handleAddrChanged(event: AddrChangedEvent): void {
}

export function handleMulticoinAddrChanged(event: AddressChangedEvent): void {
let resolver = getOrCreateResolver(event.params.node, event.address);
let resolver = getOrCreateResolver(event.params.node, event.address, false);

let coinType = event.params.coinType;
if (resolver.coinTypes == null) {
Expand All @@ -84,26 +84,32 @@ export function handleMulticoinAddrChanged(event: AddressChangedEvent): void {
export function handleNameChanged(event: NameChangedEvent): void {
if (event.params.name.indexOf("\u0000") != -1) return;

const resolver = getOrCreateResolver(event.params.node, event.address, true);

let resolverEvent = new NameChanged(createEventID(event));
resolverEvent.resolver = createResolverID(event.params.node, event.address);
resolverEvent.resolver = resolver.id;
resolverEvent.blockNumber = event.block.number.toI32();
resolverEvent.transactionID = event.transaction.hash;
resolverEvent.name = event.params.name;
resolverEvent.save();
}

export function handleABIChanged(event: ABIChangedEvent): void {
const resolver = getOrCreateResolver(event.params.node, event.address, true);

let resolverEvent = new AbiChanged(createEventID(event));
resolverEvent.resolver = createResolverID(event.params.node, event.address);
resolverEvent.resolver = resolver.id;
resolverEvent.blockNumber = event.block.number.toI32();
resolverEvent.transactionID = event.transaction.hash;
resolverEvent.contentType = event.params.contentType;
resolverEvent.save();
}

export function handlePubkeyChanged(event: PubkeyChangedEvent): void {
const resolver = getOrCreateResolver(event.params.node, event.address, true);

let resolverEvent = new PubkeyChanged(createEventID(event));
resolverEvent.resolver = createResolverID(event.params.node, event.address);
resolverEvent.resolver = resolver.id;
resolverEvent.blockNumber = event.block.number.toI32();
resolverEvent.transactionID = event.transaction.hash;
resolverEvent.x = event.params.x;
Expand All @@ -112,7 +118,7 @@ export function handlePubkeyChanged(event: PubkeyChangedEvent): void {
}

export function handleTextChanged(event: TextChangedEvent): void {
let resolver = getOrCreateResolver(event.params.node, event.address);
let resolver = getOrCreateResolver(event.params.node, event.address, false);

let key = event.params.key;
if (resolver.texts == null) {
Expand All @@ -128,7 +134,7 @@ export function handleTextChanged(event: TextChangedEvent): void {
}

let resolverEvent = new TextChanged(createEventID(event));
resolverEvent.resolver = createResolverID(event.params.node, event.address);
resolverEvent.resolver = resolver.id;
resolverEvent.blockNumber = event.block.number.toI32();
resolverEvent.transactionID = event.transaction.hash;
resolverEvent.key = event.params.key;
Expand All @@ -138,7 +144,7 @@ export function handleTextChanged(event: TextChangedEvent): void {
export function handleTextChangedWithValue(
event: TextChangedWithValueEvent
): void {
let resolver = getOrCreateResolver(event.params.node, event.address);
let resolver = getOrCreateResolver(event.params.node, event.address, false);

let key = event.params.key;
if (resolver.texts == null) {
Expand All @@ -154,7 +160,7 @@ export function handleTextChangedWithValue(
}

let resolverEvent = new TextChanged(createEventID(event));
resolverEvent.resolver = createResolverID(event.params.node, event.address);
resolverEvent.resolver = resolver.id;
resolverEvent.blockNumber = event.block.number.toI32();
resolverEvent.transactionID = event.transaction.hash;
resolverEvent.key = event.params.key;
Expand All @@ -163,21 +169,23 @@ export function handleTextChangedWithValue(
}

export function handleContentHashChanged(event: ContenthashChangedEvent): void {
let resolver = getOrCreateResolver(event.params.node, event.address);
let resolver = getOrCreateResolver(event.params.node, event.address, false);
resolver.contentHash = event.params.hash;
resolver.save();

let resolverEvent = new ContenthashChanged(createEventID(event));
resolverEvent.resolver = createResolverID(event.params.node, event.address);
resolverEvent.resolver = resolver.id;
resolverEvent.blockNumber = event.block.number.toI32();
resolverEvent.transactionID = event.transaction.hash;
resolverEvent.hash = event.params.hash;
resolverEvent.save();
}

export function handleInterfaceChanged(event: InterfaceChangedEvent): void {
const resolver = getOrCreateResolver(event.params.node, event.address, true);

let resolverEvent = new InterfaceChanged(createEventID(event));
resolverEvent.resolver = createResolverID(event.params.node, event.address);
resolverEvent.resolver = resolver.id;
resolverEvent.blockNumber = event.block.number.toI32();
resolverEvent.transactionID = event.transaction.hash;
resolverEvent.interfaceID = event.params.interfaceID;
Expand All @@ -188,10 +196,12 @@ export function handleInterfaceChanged(event: InterfaceChangedEvent): void {
export function handleAuthorisationChanged(
event: AuthorisationChangedEvent
): void {
const resolver = getOrCreateResolver(event.params.node, event.address, true);

let resolverEvent = new AuthorisationChanged(createEventID(event));
resolverEvent.blockNumber = event.block.number.toI32();
resolverEvent.transactionID = event.transaction.hash;
resolverEvent.resolver = createResolverID(event.params.node, event.address);
resolverEvent.resolver = resolver.id;
resolverEvent.owner = event.params.owner;
resolverEvent.target = event.params.target;
resolverEvent.isAuthorized = event.params.isAuthorised;
Expand All @@ -212,21 +222,28 @@ export function handleVersionChanged(event: VersionChangedEvent): void {
domain.save();
}

let resolver = getOrCreateResolver(event.params.node, event.address);
let resolver = getOrCreateResolver(event.params.node, event.address, false);
resolver.addr = null;
resolver.contentHash = null;
resolver.texts = null;
resolver.coinTypes = null;
resolver.save();
}

function getOrCreateResolver(node: Bytes, address: Address): Resolver {
function getOrCreateResolver(
node: Bytes,
address: Address,
saveOnNew: boolean
): Resolver {
let id = createResolverID(node, address);
let resolver = Resolver.load(id);
if (resolver == null) {
resolver = new Resolver(id);
resolver.domain = node.toHexString();
resolver.address = address;
if (saveOnNew) {
resolver.save();
}
}
return resolver as Resolver;
}
Expand All @@ -238,7 +255,7 @@ function createEventID(event: ethereum.Event): string {
.concat(event.logIndex.toString());
}

function createResolverID(node: Bytes, resolver: Address): string {
export function createResolverID(node: Bytes, resolver: Address): string {
return resolver
.toHexString()
.concat("-")
Expand Down
2 changes: 1 addition & 1 deletion tests/.latest.json
@@ -1,4 +1,4 @@
{
"version": "0.6.0",
"timestamp": 1702245606450
"timestamp": 1702332546798
}

0 comments on commit 6b56712

Please sign in to comment.