accept undefined node, handle empty message case

This commit is contained in:
Sasha 2023-02-23 00:43:50 +01:00
parent bfaaf2c21e
commit c536d9abda
No known key found for this signature in database
2 changed files with 17 additions and 5 deletions

View File

@ -1,14 +1,14 @@
import React from "react"; import React from "react";
import type { IDecodedMessage, IDecoder, IFilter } from "@waku/interfaces"; import type { IDecodedMessage, IDecoder, IFilter, Waku } from "@waku/interfaces";
import type { HookState } from "./types"; import type { HookState } from "./types";
type AbstractFilterNode = { type AbstractFilterNode = Waku & {
filter: IFilter; filter: IFilter;
}; };
type UseFilterMessagesParams = { type UseFilterMessagesParams = {
node: AbstractFilterNode; node: undefined | AbstractFilterNode;
decoder: IDecoder<IDecodedMessage>; decoder: IDecoder<IDecodedMessage>;
}; };
@ -27,12 +27,20 @@ export const useFilterMessages = (
const pushMessage = React.useCallback( const pushMessage = React.useCallback(
(message: IDecodedMessage): void => { (message: IDecodedMessage): void => {
if (!message) {
return;
}
setMessage((prev) => [...prev, message]); setMessage((prev) => [...prev, message]);
}, },
[setMessage], [setMessage],
); );
React.useEffect(() => { React.useEffect(() => {
if (!node) {
return;
}
let unsubscribe: null | (() => Promise<void>) = null; let unsubscribe: null | (() => Promise<void>) = null;
setLoading(true); setLoading(true);

View File

@ -2,9 +2,9 @@ import React from "react";
import type { import type {
IDecodedMessage, IDecodedMessage,
IDecoder, IDecoder,
Waku,
IStore, IStore,
StoreQueryOptions, StoreQueryOptions,
Waku,
} from "@waku/interfaces"; } from "@waku/interfaces";
import type { HookState } from "./types"; import type { HookState } from "./types";
@ -14,7 +14,7 @@ type AbstractStoreNode = Waku & {
}; };
type UseStoreMessagesParams = { type UseStoreMessagesParams = {
node: AbstractStoreNode; node: undefined | AbstractStoreNode;
decoder: IDecoder<IDecodedMessage>; decoder: IDecoder<IDecodedMessage>;
options: StoreQueryOptions; options: StoreQueryOptions;
}; };
@ -44,6 +44,10 @@ export const useStoreMessages = (
); );
React.useEffect(() => { React.useEffect(() => {
if (!node) {
return;
}
let cancelled = false; let cancelled = false;
setLoading(true); setLoading(true);