refactor: retrieve contract address from Instantiated event (#6210)

* refactor: get smart contract address from Instantiated event

* fix: lint
This commit is contained in:
Alex Bean
2025-09-22 09:05:04 -03:00
committed by GitHub
parent d565283163
commit f9fc2c60b0
2 changed files with 20 additions and 18 deletions
+3 -16
View File
@@ -71,22 +71,9 @@ export class Blueprint<ApiType extends ApiTypes> extends Base<ApiType> {
this.abi.findConstructor(constructorOrId).toU8a(params),
encodeSalt(salt)
).withResultTransform((result: ISubmittableResult) =>
new BlueprintSubmittableResult(result,
this._isRevive
? (
(result.status.isInBlock || result.status.isFinalized)
? new Contract<ApiType>(
this.api,
this.abi,
// your fixed address for revive deployments
this.registry.createType('AccountId', '0x'),
this._decorateMethod
)
: undefined
)
: applyOnEvent(result, ['Instantiated'], ([record]: EventRecord[]) =>
new Contract<ApiType>(this.api, this.abi, record.event.data[1] as AccountId, this._decorateMethod), this._isRevive
)
new BlueprintSubmittableResult(result, applyOnEvent(result, ['Instantiated'], ([record]: EventRecord[]) =>
new Contract<ApiType>(this.api, this.abi, record.event.data[1] as AccountId, this._decorateMethod), this._isRevive
)
)
);
};
+17 -2
View File
@@ -85,8 +85,23 @@ export class Code<ApiType extends ApiTypes> extends Base<ApiType> {
).withResultTransform((result: ISubmittableResult) =>
new CodeSubmittableResult(
result,
new Blueprint<ApiType>(this.api, this.abi, this.abi.info.source.hash, this._decorateMethod),
new Contract<ApiType>(this.api, this.abi, '0x', this._decorateMethod)
...(applyOnEvent(result, ['Instantiated'], (records: EventRecord[]) =>
records.reduce<[Blueprint<ApiType> | undefined, Contract<ApiType> | undefined]>(
([blueprint, contract], { event }) =>
this.api.events.revive['Instantiated'].is(event)
? [
blueprint,
new Contract<ApiType>(
this.api,
this.abi,
(event as unknown as { data: [Codec, AccountId] }).data[1],
this._decorateMethod
)
]
: [blueprint, contract],
[undefined, undefined]
), this._isRevive
) || [undefined, undefined])
)
);
}