useEventTrigger without string specifiers (#5166)

* useEventTrigger with section.method string specifiers

* Remove string useEventTrigger

* Adjust useExtrinsicTrigger

* Update packages/react-hooks/src/useExtrinsicTrigger.ts
This commit is contained in:
Jaco 2021-04-30 15:10:21 +03:00 committed by GitHub
parent 61b1ef37a6
commit a298715c6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 20 deletions

View File

@ -34,7 +34,7 @@ function extractScheduled (entries: [StorageKey<[SessionIndex]>, ParaId[]][]): S
export default function useProposals (): Proposals | undefined {
const { api } = useApi();
const mountedRef = useIsMountedRef();
const trigger = useEventTrigger(['proposeParachain']);
const trigger = useEventTrigger([api.events.proposeParachain?.ProposeParachain]);
const proposalIds = useMapKeys(api.query.proposeParachain?.proposals, { at: trigger, transform: extractProposalIds });
const scheduled = useMapEntries(api.query.proposeParachain?.scheduledProposals, { at: trigger, transform: extractScheduled });
const [sessionIndex, approvedIds] = useCallMulti<MultiQuery>([

View File

@ -7,13 +7,11 @@ import type { EventRecord } from '@polkadot/types/interfaces';
import { useEffect, useState } from 'react';
import { isString } from '@polkadot/util';
import { useApi } from './useApi';
import { useCall } from './useCall';
import { useIsMountedRef } from './useIsMountedRef';
type EventCheck = AugmentedEvent<'promise'> | string | false | undefined | null;
type EventCheck = AugmentedEvent<'promise'> | false | undefined | null;
const IDENTITY_FILTER = () => true;
@ -25,12 +23,10 @@ export function useEventTrigger (checks: EventCheck[], filter: (record: EventRec
useEffect((): void => {
mountedRef.current && eventRecords && eventRecords.filter((r) =>
r.event && checks.some((check) => check && (
isString(check)
? r.event.section === check
: check.is(r.event)
)) && filter(r)
).length && setTrigger(() => eventRecords.createdAtHash?.toHex() || '');
r.event &&
checks.some((c) => c && c.is(r.event)) &&
filter(r)
).length && setTrigger(eventRecords.createdAtHash?.toHex() || '');
}, [eventRecords, checks, filter, mountedRef]);
return trigger;

View File

@ -6,28 +6,23 @@ import type { SignedBlockExtended } from '@polkadot/api-derive/types';
import { useEffect, useState } from 'react';
import { isString } from '@polkadot/util';
import { useApi } from './useApi';
import { useCall } from './useCall';
import { useIsMountedRef } from './useIsMountedRef';
type ExtrinsicCheck = SubmittableExtrinsicFunction<'promise'> | string | false | undefined | null;
type ExtrinsicCheck = SubmittableExtrinsicFunction<'promise'> | false | undefined | null;
export function useExtrinsicTrigger (checks: ExtrinsicCheck[]): string {
const { api } = useApi();
const [trigger, setTrigger] = useState('0x00');
const [trigger, setTrigger] = useState('0');
const mountedRef = useIsMountedRef();
const block = useCall<SignedBlockExtended>(api.derive.chain.subscribeNewBlocks);
useEffect((): void => {
mountedRef.current && block && block.extrinsics && block.extrinsics.filter(({ extrinsic }) =>
extrinsic && checks.some((check) => check && (
isString(check)
? extrinsic.method.section === check
: check.is(extrinsic)
))
).length && setTrigger(() => block.createdAtHash?.toHex() || '0x00');
extrinsic &&
checks.some((c) => c && c.is(extrinsic))
).length && setTrigger(() => block.createdAtHash?.toHex() || '');
}, [block, checks, mountedRef]);
return trigger;