From 98ea1f90a2743c46d23eeda8cfe6d545840e53df Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Fri, 25 Jan 2019 11:33:53 +0100 Subject: [PATCH] Add query...{size, hash}(arg? any) (#630) --- packages/api/src/Base.ts | 20 ++++++++++++++------ packages/api/src/promise/types.ts | 4 ++-- packages/api/src/types.ts | 2 ++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/api/src/Base.ts b/packages/api/src/Base.ts index 3c56d2fb32..879b282162 100644 --- a/packages/api/src/Base.ts +++ b/packages/api/src/Base.ts @@ -427,12 +427,20 @@ export default abstract class ApiBase implements ApiBaseInterface onCall( - arg => this._rpcRx.state - .getStorage([method, arg], hash) - .pipe( - // same as above (for single result), in the case of errors on creation, return `undefined` - catchError(() => of()) - ), + // same as above (for single result), in the case of errors on creation, return `undefined` + arg => this._rpcRx.state.getStorage([method, arg], hash).pipe(catchError(() => of())), + [arg] + ); + + decorated.hash = (arg?: any): T => + onCall( + arg => this._rpcRx.state.getStorageSize([method, arg]).pipe(catchError(() => of())), + [arg] + ); + + decorated.size = (arg?: any): T => + onCall( + arg => this._rpcRx.state.getStorageSize([method, arg]).pipe(catchError(() => of())), [arg] ); diff --git a/packages/api/src/promise/types.ts b/packages/api/src/promise/types.ts index c7322f4ebc..4bbfe634e1 100644 --- a/packages/api/src/promise/types.ts +++ b/packages/api/src/promise/types.ts @@ -8,10 +8,10 @@ import { QueryableStorageFunction as QueryableStorageFunctionBase, SubmittableEx import ApiBase from '../Base'; import SubmittableExtrinsicBase from '../SubmittableExtrinsic'; -export type OnCall = Promise | PromiseSubscription; - export type PromiseSubscription = Promise<() => any>; +export type OnCall = Promise | PromiseSubscription; + export interface ApiPromiseInterface extends ApiBase { readonly isReady: Promise; } diff --git a/packages/api/src/types.ts b/packages/api/src/types.ts index 6234523d07..90f45e2f12 100644 --- a/packages/api/src/types.ts +++ b/packages/api/src/types.ts @@ -30,7 +30,9 @@ export interface DecoratedRpc { interface QueryableStorageFunctionBase extends StorageFunction { (arg?: any): OnCall; at: (hash: Uint8Array | string, arg?: any) => OnCall; + hash: (arg?: any) => OnCall; // Observable key: (arg?: any) => string; + size: (arg?: any) => OnCall; // Observable } interface QueryableStorageFunctionPromise extends QueryableStorageFunctionBase {