mirror of
https://github.com/billsonnn/nitro-react.git
synced 2024-11-22 22:30:52 +01:00
Navigator updates
This commit is contained in:
parent
5a4dd89319
commit
0fb8a46b0e
@ -1,45 +0,0 @@
|
||||
import { NavigatorCategoryDataParser, NavigatorEventCategoryDataParser, NavigatorSearchResultSet, NavigatorTopLevelContext, RoomDataParser } from '@nitrots/nitro-renderer';
|
||||
import { createContext, Dispatch, FC, ProviderProps, SetStateAction, useContext } from 'react';
|
||||
import { INavigatorData } from '../../api';
|
||||
|
||||
interface INavigatorContext
|
||||
{
|
||||
categories: NavigatorCategoryDataParser[];
|
||||
setCategories: Dispatch<SetStateAction<NavigatorCategoryDataParser[]>>;
|
||||
eventCategories: NavigatorEventCategoryDataParser[];
|
||||
setEventCategories: Dispatch<SetStateAction<NavigatorEventCategoryDataParser[]>>;
|
||||
topLevelContext: NavigatorTopLevelContext;
|
||||
setTopLevelContext: Dispatch<SetStateAction<NavigatorTopLevelContext>>;
|
||||
topLevelContexts: NavigatorTopLevelContext[];
|
||||
setTopLevelContexts: Dispatch<SetStateAction<NavigatorTopLevelContext[]>>;
|
||||
navigatorData: INavigatorData;
|
||||
setNavigatorData: Dispatch<SetStateAction<INavigatorData>>;
|
||||
doorData: { roomInfo: RoomDataParser, state: number };
|
||||
setDoorData: Dispatch<SetStateAction<{ roomInfo: RoomDataParser, state: number }>>;
|
||||
searchResult: NavigatorSearchResultSet;
|
||||
setSearchResult: Dispatch<SetStateAction<NavigatorSearchResultSet>>;
|
||||
}
|
||||
|
||||
const NavigatorContext = createContext<INavigatorContext>({
|
||||
categories: null,
|
||||
setCategories: null,
|
||||
topLevelContext: null,
|
||||
setEventCategories: null,
|
||||
eventCategories: null,
|
||||
setTopLevelContext: null,
|
||||
topLevelContexts: null,
|
||||
setTopLevelContexts: null,
|
||||
navigatorData: null,
|
||||
setNavigatorData: null,
|
||||
doorData: null,
|
||||
setDoorData: null,
|
||||
searchResult: null,
|
||||
setSearchResult: null
|
||||
});
|
||||
|
||||
export const NavigatorContextProvider: FC<ProviderProps<INavigatorContext>> = props =>
|
||||
{
|
||||
return <NavigatorContext.Provider value={ props.value }>{ props.children }</NavigatorContext.Provider>
|
||||
}
|
||||
|
||||
export const useNavigatorContext = () => useContext(NavigatorContext);
|
@ -1,11 +1,9 @@
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import { ConvertGlobalRoomIdMessageComposer, HabboWebTools, ILinkEventTracker, LegacyExternalInterface, NavigatorCategoryDataParser, NavigatorEventCategoryDataParser, NavigatorInitComposer, NavigatorSearchComposer, NavigatorSearchResultSet, NavigatorTopLevelContext, RoomDataParser, RoomSessionEvent } from '@nitrots/nitro-renderer';
|
||||
import { ConvertGlobalRoomIdMessageComposer, HabboWebTools, ILinkEventTracker, LegacyExternalInterface, NavigatorInitComposer, NavigatorSearchComposer, RoomSessionEvent } from '@nitrots/nitro-renderer';
|
||||
import { FC, useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { AddEventLinkTracker, DoorStateType, LocalizeText, RemoveLinkEventTracker, SendMessageComposer, TryVisitRoom } from '../../api';
|
||||
import { AddEventLinkTracker, LocalizeText, RemoveLinkEventTracker, SendMessageComposer, TryVisitRoom } from '../../api';
|
||||
import { Base, Column, NitroCardContentView, NitroCardHeaderView, NitroCardTabsItemView, NitroCardTabsView, NitroCardView } from '../../common';
|
||||
import { useRoomSessionManagerEvent, useSharedNavigatorData } from '../../hooks';
|
||||
import { NavigatorContextProvider } from './NavigatorContext';
|
||||
import { NavigatorMessageHandler } from './NavigatorMessageHandler';
|
||||
import { useNavigator, useRoomSessionManagerEvent } from '../../hooks';
|
||||
import { NavigatorDoorStateView } from './views/NavigatorDoorStateView';
|
||||
import { NavigatorRoomCreatorView } from './views/NavigatorRoomCreatorView';
|
||||
import { NavigatorRoomInfoView } from './views/NavigatorRoomInfoView';
|
||||
@ -24,27 +22,14 @@ export const NavigatorView: FC<{}> = props =>
|
||||
const [ isLoading, setIsLoading ] = useState(false);
|
||||
const [ needsInit, setNeedsInit ] = useState(true);
|
||||
const [ needsSearch, setNeedsSearch ] = useState(false);
|
||||
const [ categories, setCategories ] = useState<NavigatorCategoryDataParser[]>(null);
|
||||
const [ eventCategories, setEventCategories ] = useState<NavigatorEventCategoryDataParser[]>(null);
|
||||
const [ topLevelContext, setTopLevelContext ] = useState<NavigatorTopLevelContext>(null);
|
||||
const [ topLevelContexts, setTopLevelContexts ] = useState<NavigatorTopLevelContext[]>(null);
|
||||
const [ navigatorData, setNavigatorData ] = useSharedNavigatorData();
|
||||
const [ doorData, setDoorData ] = useState<{ roomInfo: RoomDataParser, state: number }>({ roomInfo: null, state: DoorStateType.NONE });
|
||||
const [ searchResult, setSearchResult ] = useState<NavigatorSearchResultSet>(null);
|
||||
const { searchResult = null, topLevelContext = null, topLevelContexts = null, navigatorData = null } = useNavigator();
|
||||
const pendingSearch = useRef<{ value: string, code: string }>(null);
|
||||
|
||||
const onRoomSessionEvent = useCallback((event: RoomSessionEvent) =>
|
||||
useRoomSessionManagerEvent<RoomSessionEvent>(RoomSessionEvent.CREATED, event =>
|
||||
{
|
||||
switch(event.type)
|
||||
{
|
||||
case RoomSessionEvent.CREATED:
|
||||
setIsVisible(false);
|
||||
setCreatorOpen(false);
|
||||
return;
|
||||
}
|
||||
}, []);
|
||||
|
||||
useRoomSessionManagerEvent(RoomSessionEvent.CREATED, onRoomSessionEvent);
|
||||
setIsVisible(false);
|
||||
setCreatorOpen(false);
|
||||
});
|
||||
|
||||
const sendSearch = useCallback((searchValue: string, contextCode: string) =>
|
||||
{
|
||||
@ -206,8 +191,7 @@ export const NavigatorView: FC<{}> = props =>
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<NavigatorContextProvider value={ { categories, setCategories, eventCategories, setEventCategories, topLevelContext, setTopLevelContext, topLevelContexts, setTopLevelContexts, navigatorData, setNavigatorData, doorData, setDoorData, searchResult, setSearchResult } }>
|
||||
<NavigatorMessageHandler />
|
||||
<>
|
||||
{ isVisible &&
|
||||
<NitroCardView uniqueKey="navigator" className="nitro-navigator">
|
||||
<NitroCardHeaderView headerText={ LocalizeText(isCreatorOpen ? 'navigator.createroom.title' : 'navigator.title') } onCloseClick={ event => setIsVisible(false) } />
|
||||
@ -241,6 +225,6 @@ export const NavigatorView: FC<{}> = props =>
|
||||
{ isRoomInfoOpen && <NavigatorRoomInfoView onCloseClick={ () => setRoomInfoOpen(false) } /> }
|
||||
{ isRoomLinkOpen && <NavigatorRoomLinkView onCloseClick={ () => setRoomLinkOpen(false) } /> }
|
||||
<NavigatorRoomSettingsView />
|
||||
</NavigatorContextProvider>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { FC, useEffect, useState } from 'react';
|
||||
import { CreateRoomSession, DoorStateType, GoToDesktop, LocalizeText } from '../../../api';
|
||||
import { Button, Column, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../common';
|
||||
import { useNavigatorContext } from '../NavigatorContext';
|
||||
import { useNavigator } from '../../../hooks';
|
||||
|
||||
const VISIBLE_STATES = [ DoorStateType.START_DOORBELL, DoorStateType.STATE_WAITING, DoorStateType.STATE_NO_ANSWER, DoorStateType.START_PASSWORD, DoorStateType.STATE_WRONG_PASSWORD ];
|
||||
const DOORBELL_STATES = [ DoorStateType.START_DOORBELL, DoorStateType.STATE_WAITING, DoorStateType.STATE_NO_ANSWER ];
|
||||
@ -10,7 +10,7 @@ const PASSWORD_STATES = [ DoorStateType.START_PASSWORD, DoorStateType.STATE_WRON
|
||||
export const NavigatorDoorStateView: FC<{}> = props =>
|
||||
{
|
||||
const [ password, setPassword ] = useState('');
|
||||
const { doorData = null, setDoorData = null } = useNavigatorContext();
|
||||
const { doorData = null, setDoorData = null } = useNavigator();
|
||||
|
||||
const onClose = () =>
|
||||
{
|
||||
|
@ -3,7 +3,7 @@ import { CreateFlatMessageComposer, HabboClubLevelEnum } from '@nitrots/nitro-re
|
||||
import { FC, useEffect, useState } from 'react';
|
||||
import { GetClubMemberLevel, GetConfiguration, IRoomModel, LocalizeText, SendMessageComposer } from '../../../api';
|
||||
import { Button, Column, Flex, Grid, LayoutCurrencyIcon, LayoutGridItem, Text } from '../../../common';
|
||||
import { useNavigatorContext } from '../NavigatorContext';
|
||||
import { useNavigator } from '../../../hooks';
|
||||
|
||||
export const NavigatorRoomCreatorView: FC<{}> = props =>
|
||||
{
|
||||
@ -15,7 +15,7 @@ export const NavigatorRoomCreatorView: FC<{}> = props =>
|
||||
const [ tradesSetting, setTradesSetting ] = useState<number>(0);
|
||||
const [ roomModels, setRoomModels ] = useState<IRoomModel[]>([]);
|
||||
const [ selectedModelName, setSelectedModelName ] = useState<string>('');
|
||||
const { categories = null } = useNavigatorContext();
|
||||
const { categories = null } = useNavigator();
|
||||
|
||||
const hcDisabled = GetConfiguration<boolean>('hc.disabled', false);
|
||||
|
||||
|
@ -5,7 +5,7 @@ import { FC, useEffect, useState } from 'react';
|
||||
import { CreateLinkEvent, DispatchUiEvent, GetGroupInformation, GetSessionDataManager, LocalizeText, SendMessageComposer } from '../../../api';
|
||||
import { Button, Column, Flex, LayoutBadgeImageView, LayoutRoomThumbnailView, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text, UserProfileIconView } from '../../../common';
|
||||
import { RoomWidgetThumbnailEvent } from '../../../events';
|
||||
import { useNavigatorContext } from '../NavigatorContext';
|
||||
import { useNavigator } from '../../../hooks';
|
||||
|
||||
export class NavigatorRoomInfoViewProps
|
||||
{
|
||||
@ -17,8 +17,7 @@ export const NavigatorRoomInfoView: FC<NavigatorRoomInfoViewProps> = props =>
|
||||
const { onCloseClick = null } = props;
|
||||
const [ isRoomPicked, setIsRoomPicked ] = useState(false);
|
||||
const [ isRoomMuted, setIsRoomMuted ] = useState(false);
|
||||
const { navigatorData = null } = useNavigatorContext();
|
||||
|
||||
const { navigatorData = null } = useNavigator();
|
||||
|
||||
const hasPermission = (permission: string) =>
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { FC } from 'react';
|
||||
import { GetConfiguration, LocalizeText } from '../../../api';
|
||||
import { Column, Flex, LayoutRoomThumbnailView, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../common';
|
||||
import { useNavigatorContext } from '../NavigatorContext';
|
||||
import { useNavigator } from '../../../hooks';
|
||||
|
||||
export class NavigatorRoomLinkViewProps
|
||||
{
|
||||
@ -11,7 +11,7 @@ export class NavigatorRoomLinkViewProps
|
||||
export const NavigatorRoomLinkView: FC<NavigatorRoomLinkViewProps> = props =>
|
||||
{
|
||||
const { onCloseClick = null } = props;
|
||||
const { navigatorData = null } = useNavigatorContext();
|
||||
const { navigatorData = null } = useNavigator();
|
||||
|
||||
if(!navigatorData.enteredGuestRoom) return null;
|
||||
|
||||
|
@ -3,8 +3,7 @@ import { RoomDeleteComposer } from '@nitrots/nitro-renderer';
|
||||
import { FC, useEffect, useState } from 'react';
|
||||
import { CreateLinkEvent, GetMaxVisitorsList, IRoomData, LocalizeText, SendMessageComposer } from '../../../../api';
|
||||
import { Base, Column, Flex, Text } from '../../../../common';
|
||||
import { useNotification } from '../../../../hooks';
|
||||
import { useNavigatorContext } from '../../NavigatorContext';
|
||||
import { useNavigator, useNotification } from '../../../../hooks';
|
||||
|
||||
const ROOM_NAME_MIN_LENGTH = 3;
|
||||
const ROOM_NAME_MAX_LENGTH = 60;
|
||||
@ -24,7 +23,7 @@ export const NavigatorRoomSettingsBasicTabView: FC<NavigatorRoomSettingsTabViewP
|
||||
const [ roomName, setRoomName ] = useState<string>('');
|
||||
const [ roomDescription, setRoomDescription ] = useState<string>('');
|
||||
const { showConfirm = null } = useNotification();
|
||||
const { categories = null } = useNavigatorContext();
|
||||
const { categories = null } = useNavigator();
|
||||
|
||||
const deleteRoom = () =>
|
||||
{
|
||||
|
@ -3,7 +3,7 @@ import { RoomDataParser } from '@nitrots/nitro-renderer';
|
||||
import { FC, MouseEvent } from 'react';
|
||||
import { CreateRoomSession, DoorStateType, GetSessionDataManager, TryVisitRoom } from '../../../../api';
|
||||
import { Column, Flex, LayoutBadgeImageView, LayoutGridItemProps, LayoutRoomThumbnailView, Text } from '../../../../common';
|
||||
import { useNavigatorContext } from '../../NavigatorContext';
|
||||
import { useNavigator } from '../../../../hooks';
|
||||
import { NavigatorSearchResultItemInfoView } from './NavigatorSearchResultItemInfoView';
|
||||
|
||||
export interface NavigatorSearchResultItemViewProps extends LayoutGridItemProps
|
||||
@ -15,7 +15,7 @@ export interface NavigatorSearchResultItemViewProps extends LayoutGridItemProps
|
||||
export const NavigatorSearchResultItemView: FC<NavigatorSearchResultItemViewProps> = props =>
|
||||
{
|
||||
const { roomData = null, children = null, thumbnail = false, ...rest } = props;
|
||||
const { setDoorData = null } = useNavigatorContext();
|
||||
const { setDoorData = null } = useNavigator();
|
||||
|
||||
const getUserCounterColor = () =>
|
||||
{
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import React, { FC, KeyboardEvent, useEffect, useState } from 'react';
|
||||
import { FC, KeyboardEvent, useEffect, useState } from 'react';
|
||||
import { INavigatorSearchFilter, LocalizeText, SearchFilterOptions } from '../../../../api';
|
||||
import { Button, Flex } from '../../../../common';
|
||||
import { useNavigatorContext } from '../../NavigatorContext';
|
||||
import { useNavigator } from '../../../../hooks';
|
||||
|
||||
export interface NavigatorSearchViewProps
|
||||
{
|
||||
@ -14,7 +14,7 @@ export const NavigatorSearchView: FC<NavigatorSearchViewProps> = props =>
|
||||
const { sendSearch = null } = props;
|
||||
const [ searchFilterIndex, setSearchFilterIndex ] = useState(0);
|
||||
const [ searchValue, setSearchValue ] = useState('');
|
||||
const { topLevelContext = null, searchResult = null } = useNavigatorContext();
|
||||
const { topLevelContext = null, searchResult = null } = useNavigator();
|
||||
|
||||
const processSearch = () =>
|
||||
{
|
||||
|
@ -3,7 +3,7 @@ import classNames from 'classnames';
|
||||
import { FC, useEffect, useState } from 'react';
|
||||
import { CreateLinkEvent, GetRoomEngine, LocalizeText, SendMessageComposer } from '../../../../api';
|
||||
import { Base, Column, Flex, Text, TransitionAnimation, TransitionAnimationTypes } from '../../../../common';
|
||||
import { useMessageEvent, useRoom, useSharedNavigatorData } from '../../../../hooks';
|
||||
import { useMessageEvent, useNavigator, useRoom } from '../../../../hooks';
|
||||
|
||||
export const RoomToolsWidgetView: FC<{}> = props =>
|
||||
{
|
||||
@ -12,7 +12,7 @@ export const RoomToolsWidgetView: FC<{}> = props =>
|
||||
const [ roomOwner, setRoomOwner ] = useState<string>(null);
|
||||
const [ roomTags, setRoomTags ] = useState<string[]>(null);
|
||||
const [ isOpen, setIsOpen ] = useState<boolean>(false);
|
||||
const [ navigatorData, setNavigatorData ] = useSharedNavigatorData();
|
||||
const { navigatorData = null } = useNavigator();
|
||||
const { roomSession = null } = useRoom();
|
||||
|
||||
const handleToolClick = (action: string) =>
|
||||
|
@ -1 +1 @@
|
||||
export * from './useSharedNavigatorData';
|
||||
export * from './useNavigator';
|
||||
|
@ -1,24 +1,42 @@
|
||||
import { CanCreateRoomEventEvent, CantConnectMessageParser, DoorbellMessageEvent, FlatAccessDeniedMessageEvent, FlatCreatedEvent, FollowFriendMessageComposer, GenericErrorEvent, GetGuestRoomMessageComposer, GetGuestRoomResultEvent, GetUserEventCatsMessageComposer, GetUserFlatCatsMessageComposer, HabboWebTools, LegacyExternalInterface, NavigatorHomeRoomEvent, NavigatorMetadataEvent, NavigatorOpenRoomCreatorEvent, NavigatorSearchEvent, RoomDataParser, RoomDoorbellAcceptedEvent, RoomEnterErrorEvent, RoomEntryInfoMessageEvent, RoomForwardEvent, RoomScoreEvent, RoomSettingsUpdatedEvent, SecurityLevel, UserEventCatsEvent, UserFlatCatsEvent, UserInfoEvent, UserPermissionsEvent } from '@nitrots/nitro-renderer';
|
||||
import { FC, useCallback } from 'react';
|
||||
import { CreateLinkEvent, CreateRoomSession, DoorStateType, GetConfiguration, GetSessionDataManager, LocalizeText, NotificationAlertType, SendMessageComposer, TryVisitRoom, VisitDesktop } from '../../api';
|
||||
import { useMessageEvent, useNotification } from '../../hooks';
|
||||
import { useNavigatorContext } from './NavigatorContext';
|
||||
import { CanCreateRoomEventEvent, CantConnectMessageParser, DoorbellMessageEvent, FlatAccessDeniedMessageEvent, FlatCreatedEvent, FollowFriendMessageComposer, GenericErrorEvent, GetGuestRoomMessageComposer, GetGuestRoomResultEvent, GetUserEventCatsMessageComposer, GetUserFlatCatsMessageComposer, HabboWebTools, LegacyExternalInterface, NavigatorCategoryDataParser, NavigatorEventCategoryDataParser, NavigatorHomeRoomEvent, NavigatorMetadataEvent, NavigatorOpenRoomCreatorEvent, NavigatorSearchEvent, NavigatorSearchResultSet, NavigatorTopLevelContext, RoomDataParser, RoomDoorbellAcceptedEvent, RoomEnterErrorEvent, RoomEntryInfoMessageEvent, RoomForwardEvent, RoomScoreEvent, RoomSettingsUpdatedEvent, SecurityLevel, UserEventCatsEvent, UserFlatCatsEvent, UserInfoEvent, UserPermissionsEvent } from '@nitrots/nitro-renderer';
|
||||
import { useState } from 'react';
|
||||
import { useBetween } from 'use-between';
|
||||
import { CreateLinkEvent, CreateRoomSession, DoorStateType, GetConfiguration, GetSessionDataManager, INavigatorData, LocalizeText, NotificationAlertType, SendMessageComposer, TryVisitRoom, VisitDesktop } from '../../api';
|
||||
import { useMessageEvent } from '../events';
|
||||
import { useNotification } from '../notification';
|
||||
|
||||
export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
const useNavigatorState = () =>
|
||||
{
|
||||
const { setCategories = null, setEventCategories = null, setTopLevelContext = null, topLevelContexts = null, setTopLevelContexts = null, setNavigatorData = null, setDoorData = null, setSearchResult = null } = useNavigatorContext();
|
||||
const [ categories, setCategories ] = useState<NavigatorCategoryDataParser[]>(null);
|
||||
const [ eventCategories, setEventCategories ] = useState<NavigatorEventCategoryDataParser[]>(null);
|
||||
const [ topLevelContext, setTopLevelContext ] = useState<NavigatorTopLevelContext>(null);
|
||||
const [ topLevelContexts, setTopLevelContexts ] = useState<NavigatorTopLevelContext[]>(null);
|
||||
const [ doorData, setDoorData ] = useState<{ roomInfo: RoomDataParser, state: number }>({ roomInfo: null, state: DoorStateType.NONE });
|
||||
const [ searchResult, setSearchResult ] = useState<NavigatorSearchResultSet>(null);
|
||||
const [ navigatorData, setNavigatorData ] = useState<INavigatorData>({
|
||||
settingsReceived: false,
|
||||
homeRoomId: 0,
|
||||
enteredGuestRoom: null,
|
||||
currentRoomOwner: false,
|
||||
currentRoomId: 0,
|
||||
currentRoomIsStaffPick: false,
|
||||
createdFlatId: 0,
|
||||
avatarId: 0,
|
||||
roomPicker: false,
|
||||
eventMod: false,
|
||||
currentRoomRating: 0,
|
||||
canRate: true
|
||||
});
|
||||
const { simpleAlert = null } = useNotification();
|
||||
|
||||
const onRoomSettingsUpdatedEvent = useCallback((event: RoomSettingsUpdatedEvent) =>
|
||||
useMessageEvent<RoomSettingsUpdatedEvent>(RoomSettingsUpdatedEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
SendMessageComposer(new GetGuestRoomMessageComposer(parser.roomId, false, false));
|
||||
}, []);
|
||||
});
|
||||
|
||||
useMessageEvent(RoomSettingsUpdatedEvent, onRoomSettingsUpdatedEvent);
|
||||
|
||||
const onCanCreateRoomEventEvent = useCallback((event: CanCreateRoomEventEvent) =>
|
||||
useMessageEvent<CanCreateRoomEventEvent>(CanCreateRoomEventEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -30,17 +48,15 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
}
|
||||
|
||||
simpleAlert(LocalizeText(`navigator.cannotcreateevent.error.${ parser.errorCode }`), null, null, null, LocalizeText('navigator.cannotcreateevent.title'));
|
||||
}, [ simpleAlert ]);
|
||||
});
|
||||
|
||||
useMessageEvent(CanCreateRoomEventEvent, onCanCreateRoomEventEvent);
|
||||
|
||||
const onUserInfoEvent = useCallback((event: UserInfoEvent) =>
|
||||
useMessageEvent<UserInfoEvent>(UserInfoEvent, event =>
|
||||
{
|
||||
SendMessageComposer(new GetUserFlatCatsMessageComposer());
|
||||
SendMessageComposer(new GetUserEventCatsMessageComposer());
|
||||
}, []);
|
||||
});
|
||||
|
||||
const onUserPermissionsEvent = useCallback((event: UserPermissionsEvent) =>
|
||||
useMessageEvent<UserPermissionsEvent>(UserPermissionsEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -53,16 +69,16 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
|
||||
return newValue;
|
||||
});
|
||||
}, [ setNavigatorData ]);
|
||||
});
|
||||
|
||||
const onRoomForwardEvent = useCallback((event: RoomForwardEvent) =>
|
||||
useMessageEvent<RoomForwardEvent>(RoomForwardEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
TryVisitRoom(parser.roomId);
|
||||
}, []);
|
||||
});
|
||||
|
||||
const onRoomEntryInfoMessageEvent = useCallback((event: RoomEntryInfoMessageEvent) =>
|
||||
useMessageEvent<RoomEntryInfoMessageEvent>(RoomEntryInfoMessageEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -84,9 +100,9 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
SendMessageComposer(new GetGuestRoomMessageComposer(parser.roomId, true, false));
|
||||
|
||||
if(LegacyExternalInterface.available) LegacyExternalInterface.call('legacyTrack', 'navigator', 'private', [ parser.roomId ]);
|
||||
}, [ setNavigatorData ]);
|
||||
});
|
||||
|
||||
const onGetGuestRoomResultEvent = useCallback((event: GetGuestRoomResultEvent) =>
|
||||
useMessageEvent<GetGuestRoomResultEvent>(GetGuestRoomResultEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -165,9 +181,9 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
return newValue;
|
||||
});
|
||||
}
|
||||
}, [ setNavigatorData, setDoorData ]);
|
||||
});
|
||||
|
||||
const onRoomScoreEvent = useCallback((event: RoomScoreEvent) =>
|
||||
useMessageEvent<RoomScoreEvent>(RoomScoreEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -180,9 +196,9 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
|
||||
return newValue;
|
||||
});
|
||||
}, [ setNavigatorData ]);
|
||||
});
|
||||
|
||||
const onRoomDoorbellEvent = useCallback((event: DoorbellMessageEvent) =>
|
||||
useMessageEvent<DoorbellMessageEvent>(DoorbellMessageEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -197,9 +213,9 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
return newValue;
|
||||
});
|
||||
}
|
||||
}, [ setDoorData ]);
|
||||
});
|
||||
|
||||
const onRoomDoorbellAcceptedEvent = useCallback((event: RoomDoorbellAcceptedEvent) =>
|
||||
useMessageEvent<RoomDoorbellAcceptedEvent>(RoomDoorbellAcceptedEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -214,9 +230,9 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
return newValue;
|
||||
});
|
||||
}
|
||||
}, [ setDoorData ]);
|
||||
});
|
||||
|
||||
const onRoomDoorbellRejectedEvent = useCallback((event: FlatAccessDeniedMessageEvent) =>
|
||||
useMessageEvent<FlatAccessDeniedMessageEvent>(FlatAccessDeniedMessageEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -231,9 +247,9 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
return newValue;
|
||||
});
|
||||
}
|
||||
}, [ setDoorData ]);
|
||||
});
|
||||
|
||||
const onGenericErrorEvent = useCallback((event: GenericErrorEvent) =>
|
||||
useMessageEvent<GenericErrorEvent>(GenericErrorEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -266,17 +282,17 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
|
||||
return;
|
||||
}
|
||||
}, [ setDoorData, simpleAlert ]);
|
||||
});
|
||||
|
||||
const onNavigatorMetadataEvent = useCallback((event: NavigatorMetadataEvent) =>
|
||||
useMessageEvent<NavigatorMetadataEvent>(NavigatorMetadataEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
setTopLevelContexts(parser.topLevelContexts);
|
||||
setTopLevelContext(parser.topLevelContexts.length ? parser.topLevelContexts[0] : null);
|
||||
}, [ setTopLevelContexts, setTopLevelContext ]);
|
||||
});
|
||||
|
||||
const onNavigatorSearchEvent = useCallback((event: NavigatorSearchEvent) =>
|
||||
useMessageEvent<NavigatorSearchEvent>(NavigatorSearchEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -309,30 +325,30 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
});
|
||||
|
||||
setSearchResult(parser.result);
|
||||
}, [ topLevelContexts, setTopLevelContext, setSearchResult ]);
|
||||
});
|
||||
|
||||
const onNavigatorCategoriesEvent = useCallback((event: UserFlatCatsEvent) =>
|
||||
useMessageEvent<UserFlatCatsEvent>(UserFlatCatsEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
setCategories(parser.categories);
|
||||
}, [ setCategories ]);
|
||||
});
|
||||
|
||||
const onNavigatorEventCategoriesEvent = (event: UserEventCatsEvent) =>
|
||||
useMessageEvent<UserEventCatsEvent>(UserEventCatsEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
setEventCategories(parser.categories);
|
||||
}
|
||||
});
|
||||
|
||||
const onRoomCreatedEvent = useCallback((event: FlatCreatedEvent) =>
|
||||
useMessageEvent<FlatCreatedEvent>(FlatCreatedEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
CreateRoomSession(parser.roomId);
|
||||
}, []);
|
||||
});
|
||||
|
||||
const onNavigatorHomeRoomEvent = useCallback((event: NavigatorHomeRoomEvent) =>
|
||||
useMessageEvent<NavigatorHomeRoomEvent>(NavigatorHomeRoomEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -389,9 +405,9 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
CreateRoomSession(parser.homeRoomId);
|
||||
}
|
||||
}
|
||||
}, [ setNavigatorData ]);
|
||||
});
|
||||
|
||||
const onRoomEnterErrorEvent = useCallback((event: RoomEnterErrorEvent) =>
|
||||
useMessageEvent<RoomEnterErrorEvent>(RoomEnterErrorEvent, event =>
|
||||
{
|
||||
const parser = event.getParser();
|
||||
|
||||
@ -416,31 +432,11 @@ export const NavigatorMessageHandler: FC<{}> = props =>
|
||||
}
|
||||
|
||||
VisitDesktop();
|
||||
}, [ simpleAlert ]);
|
||||
});
|
||||
|
||||
const onRoomCreatorEvent = useCallback((event: NavigatorOpenRoomCreatorEvent) =>
|
||||
{
|
||||
CreateLinkEvent('navigator/show');
|
||||
}, []);
|
||||
useMessageEvent<NavigatorOpenRoomCreatorEvent>(NavigatorOpenRoomCreatorEvent, event => CreateLinkEvent('navigator/show'));
|
||||
|
||||
useMessageEvent(UserInfoEvent, onUserInfoEvent);
|
||||
useMessageEvent(UserPermissionsEvent, onUserPermissionsEvent);
|
||||
useMessageEvent(RoomForwardEvent, onRoomForwardEvent);
|
||||
useMessageEvent(RoomEntryInfoMessageEvent, onRoomEntryInfoMessageEvent);
|
||||
useMessageEvent(GetGuestRoomResultEvent, onGetGuestRoomResultEvent);
|
||||
useMessageEvent(RoomScoreEvent, onRoomScoreEvent);
|
||||
useMessageEvent(DoorbellMessageEvent, onRoomDoorbellEvent);
|
||||
useMessageEvent(RoomDoorbellAcceptedEvent, onRoomDoorbellAcceptedEvent);
|
||||
useMessageEvent(FlatAccessDeniedMessageEvent, onRoomDoorbellRejectedEvent);
|
||||
useMessageEvent(GenericErrorEvent, onGenericErrorEvent);
|
||||
useMessageEvent(NavigatorMetadataEvent, onNavigatorMetadataEvent);
|
||||
useMessageEvent(NavigatorSearchEvent, onNavigatorSearchEvent);
|
||||
useMessageEvent(UserFlatCatsEvent, onNavigatorCategoriesEvent);
|
||||
useMessageEvent(UserEventCatsEvent, onNavigatorEventCategoriesEvent);
|
||||
useMessageEvent(FlatCreatedEvent, onRoomCreatedEvent);
|
||||
useMessageEvent(NavigatorHomeRoomEvent, onNavigatorHomeRoomEvent);
|
||||
useMessageEvent(RoomEnterErrorEvent, onRoomEnterErrorEvent);
|
||||
useMessageEvent(NavigatorOpenRoomCreatorEvent, onRoomCreatorEvent);
|
||||
|
||||
return null;
|
||||
return { categories, doorData, setDoorData, topLevelContext, topLevelContexts, searchResult, navigatorData };
|
||||
}
|
||||
|
||||
export const useNavigator = () => useBetween(useNavigatorState);
|
@ -1,23 +0,0 @@
|
||||
import { useState } from 'react';
|
||||
import { useBetween } from 'use-between';
|
||||
import { INavigatorData } from '../../api';
|
||||
|
||||
const useNavigatorData = () =>
|
||||
{
|
||||
return useState<INavigatorData>({
|
||||
settingsReceived: false,
|
||||
homeRoomId: 0,
|
||||
enteredGuestRoom: null,
|
||||
currentRoomOwner: false,
|
||||
currentRoomId: 0,
|
||||
currentRoomIsStaffPick: false,
|
||||
createdFlatId: 0,
|
||||
avatarId: 0,
|
||||
roomPicker: false,
|
||||
eventMod: false,
|
||||
currentRoomRating: 0,
|
||||
canRate: true
|
||||
});
|
||||
}
|
||||
|
||||
export const useSharedNavigatorData = () => useBetween(useNavigatorData);
|
Loading…
Reference in New Issue
Block a user