nitro-react/src/views/catalog/CatalogMessageHandler.tsx

41 lines
1.3 KiB
TypeScript
Raw Normal View History

2021-05-05 09:14:54 +02:00
import { CatalogPageEvent, CatalogPagesEvent } from 'nitro-renderer';
import { FC, useCallback } from 'react';
import { CreateMessageHook } from '../../hooks/messages/message-event';
2021-04-22 05:26:30 +02:00
import { CatalogMessageHandlerProps } from './CatalogMessageHandler.types';
2021-05-05 09:14:54 +02:00
import { useCatalogContext } from './context/CatalogContext';
import { CatalogActions } from './reducers/CatalogReducer';
2021-04-22 05:26:30 +02:00
export const CatalogMessageHandler: FC<CatalogMessageHandlerProps> = props =>
{
2021-05-05 09:14:54 +02:00
const { dispatchCatalogState = null } = useCatalogContext();
const onCatalogPagesEvent = useCallback((event: CatalogPagesEvent) =>
{
const parser = event.getParser();
dispatchCatalogState({
type: CatalogActions.SET_CATALOG_ROOT,
payload: {
root: parser.root
}
});
}, [ dispatchCatalogState ]);
const onCatalogPageEvent = useCallback((event: CatalogPageEvent) =>
{
const parser = event.getParser();
dispatchCatalogState({
type: CatalogActions.SET_CATALOG_PAGE_PARSER,
payload: {
pageParser: parser
}
});
}, [ dispatchCatalogState ]);
CreateMessageHook(CatalogPagesEvent, onCatalogPagesEvent);
CreateMessageHook(CatalogPageEvent, onCatalogPageEvent);
return null;
2021-04-22 05:26:30 +02:00
}