2021-06-23 05:43:37 +02:00
|
|
|
import { FriendListFragmentEvent, GetFriendRequestsComposer, MessengerInitEvent } from 'nitro-renderer';
|
2021-06-23 05:22:32 +02:00
|
|
|
import { FC, useCallback } from 'react';
|
2021-04-22 09:11:27 +02:00
|
|
|
import { CreateMessageHook, SendMessageHook } from '../../hooks/messages/message-event';
|
2021-06-23 05:22:32 +02:00
|
|
|
import { useFriendListContext } from './context/FriendListContext';
|
2021-04-22 08:54:49 +02:00
|
|
|
import { FriendListMessageHandlerProps } from './FriendListMessageHandler.types';
|
2021-06-23 05:22:32 +02:00
|
|
|
import { FriendListActions } from './reducers/FriendListReducer';
|
2021-04-22 09:11:27 +02:00
|
|
|
import { MessengerSettings } from './utils/MessengerSettings';
|
2021-04-22 08:54:49 +02:00
|
|
|
|
2021-06-23 05:22:32 +02:00
|
|
|
export const FriendListMessageHandler: FC<FriendListMessageHandlerProps> = props =>
|
2021-04-22 08:54:49 +02:00
|
|
|
{
|
2021-06-23 05:22:32 +02:00
|
|
|
const { friendListState = null, dispatchFriendListState = null } = useFriendListContext();
|
2021-04-22 08:54:49 +02:00
|
|
|
|
2021-04-22 09:11:27 +02:00
|
|
|
const onMessengerInitEvent = useCallback((event: MessengerInitEvent) =>
|
2021-06-23 05:22:32 +02:00
|
|
|
{
|
|
|
|
const parser = event.getParser();
|
2021-04-22 08:54:49 +02:00
|
|
|
|
2021-06-23 05:22:32 +02:00
|
|
|
dispatchFriendListState({
|
|
|
|
type: FriendListActions.UPDATE_SETTINGS,
|
|
|
|
payload: {
|
|
|
|
settings: new MessengerSettings(
|
|
|
|
parser.userFriendLimit,
|
|
|
|
parser.normalFriendLimit,
|
|
|
|
parser.extendedFriendLimit,
|
|
|
|
parser.categories)
|
|
|
|
}
|
|
|
|
});
|
2021-04-22 08:54:49 +02:00
|
|
|
|
2021-06-23 05:22:32 +02:00
|
|
|
SendMessageHook(new GetFriendRequestsComposer());
|
|
|
|
}, [ dispatchFriendListState ]);
|
2021-04-22 09:11:27 +02:00
|
|
|
|
2021-06-23 05:43:37 +02:00
|
|
|
const onFriendListFragmentEvent = useCallback((event: FriendListFragmentEvent) =>
|
|
|
|
{
|
|
|
|
const parser = event.getParser();
|
|
|
|
|
|
|
|
dispatchFriendListState({
|
|
|
|
type: FriendListActions.PROCESS_FRAGMENT,
|
|
|
|
payload: {
|
|
|
|
fragment: parser.fragment
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}, [ dispatchFriendListState ]);
|
|
|
|
|
2021-04-22 09:11:27 +02:00
|
|
|
CreateMessageHook(MessengerInitEvent, onMessengerInitEvent);
|
2021-06-23 05:43:37 +02:00
|
|
|
CreateMessageHook(FriendListFragmentEvent, onFriendListFragmentEvent);
|
2021-04-22 08:54:49 +02:00
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|