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:
parent
61b1ef37a6
commit
a298715c6e
@ -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>([
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user