Add isInBlock, isRetracted (...) to status enum (#1852)

This commit is contained in:
Jaco Greeff
2020-02-14 15:40:56 +01:00
committed by GitHub
parent 49f3e36c46
commit 8e5b43bf62
10 changed files with 28 additions and 11 deletions
+1 -1
View File
@@ -62,7 +62,7 @@ export default class Blueprint<ApiType extends ApiTypes> extends BaseWithTx<ApiT
private createResult = (result: SubmittableResult): BlueprintCreateResult<ApiType> => {
let contract: Contract<ApiType> | undefined;
if (result.isFinalized) {
if (result.isInBlock) {
const record = result.findRecord('contract', 'Instantiated');
if (record) {
+1 -1
View File
@@ -58,7 +58,7 @@ export default class Code<ApiType extends ApiTypes> extends BaseWithTx<ApiType>
private createResult = (result: SubmittableResultImpl): CodePutCodeResult<ApiType> => {
let blueprint: Blueprint<ApiType> | undefined;
if (result.isFinalized) {
if (result.isInBlock) {
const record = result.findRecord('contract', 'CodeStored');
if (record) {
+1 -1
View File
@@ -107,7 +107,7 @@ export function decorateMethod <Method extends AnyFunction> (method: Method): Me
* )
* // subscribe to overall result
* .subscribe(({ status }) => {
* if (status.isFinalized) {
* if (status.isInBlock) {
* console.log('Completed at block hash', status.asFinalized.toHex());
* }
* });
+6 -2
View File
@@ -16,17 +16,21 @@ export default class SubmittableResult implements SubmittableResultImpl {
}
public get isCompleted (): boolean {
return this.isError || this.isFinalized;
return this.isError || this.status.isInBlock || this.status.isFinalized;
}
public get isError (): boolean {
return this.status.isDropped || this.status.isInvalid || this.status.isUsurped;
return this.status.isDropped || this.status.isFinalityTimeout || this.status.isInvalid || this.status.isRetracted || this.status.isUsurped;
}
public get isFinalized (): boolean {
return this.status.isFinalized;
}
public get isInBlock (): boolean {
return this.status.isInBlock;
}
/**
* @description Filters EventRecords for the specified method & section (there could be multiple)
*/
+4 -2
View File
@@ -256,11 +256,13 @@ export default function createClass <ApiType extends ApiTypes> ({ api, apiType,
}
private _statusObservable (status: ExtrinsicStatus): Observable<SubmittableResultImpl> {
if (!status.isFinalized) {
if (!status.isFinalized && !status.isInBlock) {
return of(new SubmittableResult({ status }));
}
const blockHash = status.asFinalized;
const blockHash = status.isInBlock
? status.asInBlock
: status.asFinalized;
return combineLatest([
this._api.rpc.chain.getBlock(blockHash),
+1
View File
@@ -14,6 +14,7 @@ export interface SubmittableResultImpl {
readonly isCompleted: boolean;
readonly isError: boolean;
readonly isFinalized: boolean;
readonly isInBlock: boolean;
filterRecords (section: string, method: string): EventRecord[];
findRecord (section: string, method: string): EventRecord | undefined;
+1 -1
View File
@@ -11,7 +11,7 @@ export const logEvents = (done: () => {}): (r: SubmittableResult) => void =>
({ events, status }: SubmittableResult): void => {
console.log('Transaction status:', status.type);
if (status.isFinalized) {
if (status.isInBlock) {
console.log('Completed at block hash', status.value.toHex());
console.log('Events:');
@@ -21,9 +21,12 @@ export default {
_enum: {
Future: 'Null',
Ready: 'Null',
Broadcast: 'Vec<Text>',
InBlock: 'Hash',
Retracted: 'Hash',
FinalityTimeout: 'Hash',
Finalized: 'Hash',
Usurped: 'Hash',
Broadcast: 'Vec<Text>',
Dropped: 'Null',
Invalid: 'Null'
}
+8 -2
View File
@@ -31,12 +31,18 @@ export interface ExtrinsicOrHash extends Enum {
export interface ExtrinsicStatus extends Enum {
readonly isFuture: boolean;
readonly isReady: boolean;
readonly isBroadcast: boolean;
readonly asBroadcast: Vec<Text>;
readonly isInBlock: boolean;
readonly asInBlock: Hash;
readonly isRetracted: boolean;
readonly asRetracted: Hash;
readonly isFinalityTimeout: boolean;
readonly asFinalityTimeout: Hash;
readonly isFinalized: boolean;
readonly asFinalized: Hash;
readonly isUsurped: boolean;
readonly asUsurped: Hash;
readonly isBroadcast: boolean;
readonly asBroadcast: Vec<Text>;
readonly isDropped: boolean;
readonly isInvalid: boolean;
}