@@ -57,7 +57,7 @@ export function handleAddrChanged(event: AddrChangedEvent): void {
5757}
5858
5959export function handleMulticoinAddrChanged ( event : AddressChangedEvent ) : void {
60- let resolver = getOrCreateResolver ( event . params . node , event . address ) ;
60+ let resolver = getOrCreateResolver ( event . params . node , event . address , false ) ;
6161
6262 let coinType = event . params . coinType ;
6363 if ( resolver . coinTypes == null ) {
@@ -84,26 +84,32 @@ export function handleMulticoinAddrChanged(event: AddressChangedEvent): void {
8484export function handleNameChanged ( event : NameChangedEvent ) : void {
8585 if ( event . params . name . indexOf ( "\u0000" ) != - 1 ) return ;
8686
87+ const resolver = getOrCreateResolver ( event . params . node , event . address , true ) ;
88+
8789 let resolverEvent = new NameChanged ( createEventID ( event ) ) ;
88- resolverEvent . resolver = createResolverID ( event . params . node , event . address ) ;
90+ resolverEvent . resolver = resolver . id ;
8991 resolverEvent . blockNumber = event . block . number . toI32 ( ) ;
9092 resolverEvent . transactionID = event . transaction . hash ;
9193 resolverEvent . name = event . params . name ;
9294 resolverEvent . save ( ) ;
9395}
9496
9597export function handleABIChanged ( event : ABIChangedEvent ) : void {
98+ const resolver = getOrCreateResolver ( event . params . node , event . address , true ) ;
99+
96100 let resolverEvent = new AbiChanged ( createEventID ( event ) ) ;
97- resolverEvent . resolver = createResolverID ( event . params . node , event . address ) ;
101+ resolverEvent . resolver = resolver . id ;
98102 resolverEvent . blockNumber = event . block . number . toI32 ( ) ;
99103 resolverEvent . transactionID = event . transaction . hash ;
100104 resolverEvent . contentType = event . params . contentType ;
101105 resolverEvent . save ( ) ;
102106}
103107
104108export function handlePubkeyChanged ( event : PubkeyChangedEvent ) : void {
109+ const resolver = getOrCreateResolver ( event . params . node , event . address , true ) ;
110+
105111 let resolverEvent = new PubkeyChanged ( createEventID ( event ) ) ;
106- resolverEvent . resolver = createResolverID ( event . params . node , event . address ) ;
112+ resolverEvent . resolver = resolver . id ;
107113 resolverEvent . blockNumber = event . block . number . toI32 ( ) ;
108114 resolverEvent . transactionID = event . transaction . hash ;
109115 resolverEvent . x = event . params . x ;
@@ -112,7 +118,7 @@ export function handlePubkeyChanged(event: PubkeyChangedEvent): void {
112118}
113119
114120export function handleTextChanged ( event : TextChangedEvent ) : void {
115- let resolver = getOrCreateResolver ( event . params . node , event . address ) ;
121+ let resolver = getOrCreateResolver ( event . params . node , event . address , false ) ;
116122
117123 let key = event . params . key ;
118124 if ( resolver . texts == null ) {
@@ -128,7 +134,7 @@ export function handleTextChanged(event: TextChangedEvent): void {
128134 }
129135
130136 let resolverEvent = new TextChanged ( createEventID ( event ) ) ;
131- resolverEvent . resolver = createResolverID ( event . params . node , event . address ) ;
137+ resolverEvent . resolver = resolver . id ;
132138 resolverEvent . blockNumber = event . block . number . toI32 ( ) ;
133139 resolverEvent . transactionID = event . transaction . hash ;
134140 resolverEvent . key = event . params . key ;
@@ -138,7 +144,7 @@ export function handleTextChanged(event: TextChangedEvent): void {
138144export function handleTextChangedWithValue (
139145 event : TextChangedWithValueEvent
140146) : void {
141- let resolver = getOrCreateResolver ( event . params . node , event . address ) ;
147+ let resolver = getOrCreateResolver ( event . params . node , event . address , false ) ;
142148
143149 let key = event . params . key ;
144150 if ( resolver . texts == null ) {
@@ -154,7 +160,7 @@ export function handleTextChangedWithValue(
154160 }
155161
156162 let resolverEvent = new TextChanged ( createEventID ( event ) ) ;
157- resolverEvent . resolver = createResolverID ( event . params . node , event . address ) ;
163+ resolverEvent . resolver = resolver . id ;
158164 resolverEvent . blockNumber = event . block . number . toI32 ( ) ;
159165 resolverEvent . transactionID = event . transaction . hash ;
160166 resolverEvent . key = event . params . key ;
@@ -163,21 +169,23 @@ export function handleTextChangedWithValue(
163169}
164170
165171export function handleContentHashChanged ( event : ContenthashChangedEvent ) : void {
166- let resolver = getOrCreateResolver ( event . params . node , event . address ) ;
172+ let resolver = getOrCreateResolver ( event . params . node , event . address , false ) ;
167173 resolver . contentHash = event . params . hash ;
168174 resolver . save ( ) ;
169175
170176 let resolverEvent = new ContenthashChanged ( createEventID ( event ) ) ;
171- resolverEvent . resolver = createResolverID ( event . params . node , event . address ) ;
177+ resolverEvent . resolver = resolver . id ;
172178 resolverEvent . blockNumber = event . block . number . toI32 ( ) ;
173179 resolverEvent . transactionID = event . transaction . hash ;
174180 resolverEvent . hash = event . params . hash ;
175181 resolverEvent . save ( ) ;
176182}
177183
178184export function handleInterfaceChanged ( event : InterfaceChangedEvent ) : void {
185+ const resolver = getOrCreateResolver ( event . params . node , event . address , true ) ;
186+
179187 let resolverEvent = new InterfaceChanged ( createEventID ( event ) ) ;
180- resolverEvent . resolver = createResolverID ( event . params . node , event . address ) ;
188+ resolverEvent . resolver = resolver . id ;
181189 resolverEvent . blockNumber = event . block . number . toI32 ( ) ;
182190 resolverEvent . transactionID = event . transaction . hash ;
183191 resolverEvent . interfaceID = event . params . interfaceID ;
@@ -188,10 +196,12 @@ export function handleInterfaceChanged(event: InterfaceChangedEvent): void {
188196export function handleAuthorisationChanged (
189197 event : AuthorisationChangedEvent
190198) : void {
199+ const resolver = getOrCreateResolver ( event . params . node , event . address , true ) ;
200+
191201 let resolverEvent = new AuthorisationChanged ( createEventID ( event ) ) ;
192202 resolverEvent . blockNumber = event . block . number . toI32 ( ) ;
193203 resolverEvent . transactionID = event . transaction . hash ;
194- resolverEvent . resolver = createResolverID ( event . params . node , event . address ) ;
204+ resolverEvent . resolver = resolver . id ;
195205 resolverEvent . owner = event . params . owner ;
196206 resolverEvent . target = event . params . target ;
197207 resolverEvent . isAuthorized = event . params . isAuthorised ;
@@ -207,26 +217,33 @@ export function handleVersionChanged(event: VersionChangedEvent): void {
207217 resolverEvent . save ( ) ;
208218
209219 let domain = Domain . load ( event . params . node . toHexString ( ) ) ;
210- if ( domain && domain . resolver === resolverEvent . resolver ) {
220+ if ( domain && domain . resolver == resolverEvent . resolver ) {
211221 domain . resolvedAddress = null ;
212222 domain . save ( ) ;
213223 }
214224
215- let resolver = getOrCreateResolver ( event . params . node , event . address ) ;
225+ let resolver = getOrCreateResolver ( event . params . node , event . address , false ) ;
216226 resolver . addr = null ;
217227 resolver . contentHash = null ;
218228 resolver . texts = null ;
219229 resolver . coinTypes = null ;
220230 resolver . save ( ) ;
221231}
222232
223- function getOrCreateResolver ( node : Bytes , address : Address ) : Resolver {
233+ function getOrCreateResolver (
234+ node : Bytes ,
235+ address : Address ,
236+ saveOnNew : boolean
237+ ) : Resolver {
224238 let id = createResolverID ( node , address ) ;
225239 let resolver = Resolver . load ( id ) ;
226- if ( resolver === null ) {
240+ if ( resolver == null ) {
227241 resolver = new Resolver ( id ) ;
228242 resolver . domain = node . toHexString ( ) ;
229243 resolver . address = address ;
244+ if ( saveOnNew ) {
245+ resolver . save ( ) ;
246+ }
230247 }
231248 return resolver as Resolver ;
232249}
@@ -238,7 +255,7 @@ function createEventID(event: ethereum.Event): string {
238255 . concat ( event . logIndex . toString ( ) ) ;
239256}
240257
241- function createResolverID ( node : Bytes , resolver : Address ) : string {
258+ export function createResolverID ( node : Bytes , resolver : Address ) : string {
242259 return resolver
243260 . toHexString ( )
244261 . concat ( "-" )
0 commit comments