mirror of
https://github.com/billsonnn/nitro-react.git
synced 2024-10-23 19:33:04 +02:00
68 lines
2.0 KiB
TypeScript
68 lines
2.0 KiB
TypeScript
|
import { IssueInfoMessageEvent, ModeratorInitMessageEvent } from '@nitrots/nitro-renderer';
|
||
|
import { FC, useCallback } from 'react';
|
||
|
import { CreateMessageHook } from '../../hooks';
|
||
|
import { useModToolsContext } from './context/ModToolsContext';
|
||
|
import { ModToolsActions } from './reducers/ModToolsReducer';
|
||
|
|
||
|
export const ModToolsMessageHandler: FC<{}> = props =>
|
||
|
{
|
||
|
const { modToolsState = null, dispatchModToolsState = null } = useModToolsContext();
|
||
|
const { tickets= null } = modToolsState;
|
||
|
|
||
|
const onModeratorInitMessageEvent = useCallback((event: ModeratorInitMessageEvent) =>
|
||
|
{
|
||
|
const parser = event.getParser();
|
||
|
|
||
|
if(!parser) return;
|
||
|
|
||
|
const data = parser.data;
|
||
|
|
||
|
dispatchModToolsState({
|
||
|
type: ModToolsActions.SET_INIT_DATA,
|
||
|
payload: {
|
||
|
settings: data
|
||
|
}
|
||
|
});
|
||
|
|
||
|
dispatchModToolsState({
|
||
|
type: ModToolsActions.SET_TICKETS,
|
||
|
payload: {
|
||
|
tickets: data.issues
|
||
|
}
|
||
|
});
|
||
|
|
||
|
console.log(parser);
|
||
|
}, [dispatchModToolsState]);
|
||
|
|
||
|
const onIssueInfoMessageEvent = useCallback((event: IssueInfoMessageEvent) =>
|
||
|
{
|
||
|
const parser = event.getParser();
|
||
|
|
||
|
if(!parser) return;
|
||
|
|
||
|
const newTickets = tickets ? Array.from(tickets) : [];
|
||
|
const existingIndex = newTickets.findIndex( entry => entry.issueId === parser.issueData.issueId)
|
||
|
|
||
|
if(existingIndex > -1)
|
||
|
{
|
||
|
newTickets[existingIndex] = parser.issueData;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
newTickets.push(parser.issueData);
|
||
|
}
|
||
|
|
||
|
dispatchModToolsState({
|
||
|
type: ModToolsActions.SET_TICKETS,
|
||
|
payload: {
|
||
|
tickets: newTickets
|
||
|
}
|
||
|
})
|
||
|
}, [dispatchModToolsState, tickets]);
|
||
|
|
||
|
CreateMessageHook(ModeratorInitMessageEvent, onModeratorInitMessageEvent);
|
||
|
CreateMessageHook(IssueInfoMessageEvent, onIssueInfoMessageEvent);
|
||
|
|
||
|
return null;
|
||
|
}
|