Support for Moonbeam author extraction in derive.chain.* (#5065)

* Support for Moonbeam author extraction in derive.chain.*

* use unwrapOr

* Adjust logic
This commit is contained in:
Jaco
2022-07-13 12:18:07 +03:00
committed by GitHub
parent 51e6e528ce
commit 551a081990
10 changed files with 86 additions and 74 deletions
+11 -12
View File
@@ -9,6 +9,7 @@ import { combineLatest, map, of, switchMap } from 'rxjs';
import { createSignedBlockExtended } from '../type';
import { memo } from '../util';
import { getAuthorDetails } from './util';
/**
* @name getBlock
@@ -27,19 +28,17 @@ export function getBlock (instanceId: string, api: DeriveApi): (hash: Uint8Array
return memo(instanceId, (blockHash: Uint8Array | string): Observable<SignedBlockExtended> =>
combineLatest([
api.rpc.chain.getBlock(blockHash),
api.queryAt(blockHash).pipe(
switchMap((queryAt) =>
combineLatest([
queryAt.system.events(),
queryAt.session
? queryAt.session.validators()
: of([])
])
)
)
api.queryAt(blockHash)
]).pipe(
map(([signedBlock, [events, validators]]) =>
createSignedBlockExtended(events.registry, signedBlock, events, validators)
switchMap(([signedBlock, queryAt]) =>
combineLatest([
of(signedBlock),
queryAt.system.events(),
getAuthorDetails(signedBlock.block.header, queryAt)
])
),
map(([signedBlock, events, [, validators, author]]) =>
createSignedBlockExtended(events.registry, signedBlock, events, validators, author)
)
)
);