From 301de87143f25854b057443e06f60e69db9e1d92 Mon Sep 17 00:00:00 2001 From: Bobo Date: Tue, 9 Jan 2024 13:15:02 +0100 Subject: [PATCH] Support for Staking v3 dApp registration --- src/client/BaseApi.ts | 41 ++++++++++++++++++++++++++++++++++------- src/networks.ts | 2 +- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/client/BaseApi.ts b/src/client/BaseApi.ts index 7d7e257..e9e0e79 100644 --- a/src/client/BaseApi.ts +++ b/src/client/BaseApi.ts @@ -19,6 +19,16 @@ export interface DappInfo extends Struct { state: string; } +export interface DappInfoV3 extends Struct { + owner: AccountId; + state: string; +} + +export interface RegisteredDapp { + developer: string; + state: string; +} + interface SmartContract extends Enum { readonly Evm: string; readonly Wasm: string; @@ -37,7 +47,7 @@ export interface IAstarApi { sendTransaction(transaction: Transaction): Promise; getCallFromHex(callHex: string): Promise; getRegisterDappPayload(dappAddress: string, developerAddress: string): Promise; - getRegisteredDapp(dappAddress: string): Promise; + getRegisteredDapp(dappAddress: string): Promise; getCurrentEra(): Promise; getApiPromise(): Promise; } @@ -152,18 +162,31 @@ export class BaseApi implements IAstarApi { public async getRegisterDappPayload(dappAddress: string, developerAddress: string): Promise { await this.ensureConnection(); - const payload = this._api.tx.dappsStaking.register(developerAddress, this.getAddressEnum(dappAddress)).toHex(); + const payload = this._api.tx[this.isStakingV3() ? 'dappStaking' : 'dappsStaking'] + .register(developerAddress, this.getAddressEnum(dappAddress)) + .toHex(); return payload; } - public async getRegisteredDapp(dappAddress: string): Promise { + public async getRegisteredDapp(dappAddress: string): Promise { await this.ensureConnection(); - const dapp = await this._api.query.dappsStaking.registeredDapps>( - this.getAddressEnum(dappAddress), - ); + if (this.isStakingV3()) { + const dapp = await this._api.query.dappStaking.integratedDApps>( + this.getAddressEnum(dappAddress), + ); + const dappUnwrapped = dapp.unwrapOrDefault(); + + return { developer: dappUnwrapped.owner.toString(), state: dappUnwrapped.state.toString() }; + } else { + // TODO remove after Astar deployment. + const dapp = await this._api.query.dappsStaking.registeredDapps>( + this.getAddressEnum(dappAddress), + ); + const dappUnwrapped = dapp.unwrapOrDefault(); - return dapp.unwrapOrDefault(); + return { developer: dappUnwrapped.developer.toString(), state: dappUnwrapped.state.toString() }; + } } public async getCurrentEra(): Promise { @@ -253,4 +276,8 @@ export class BaseApi implements IAstarApi { return false; } } + + private isStakingV3(): boolean { + return this._api.tx.hasOwnProperty('dappStaking'); + } } diff --git a/src/networks.ts b/src/networks.ts index 5329f02..895eb86 100644 --- a/src/networks.ts +++ b/src/networks.ts @@ -40,7 +40,7 @@ export const networks = { }, development: { name: 'development', - endpoints: ['ws://localhost:9944'], + endpoints: ['ws://127.0.0.1:9944'], evmRpc: '', evmId: '', token: '',