Update catalog

This commit is contained in:
Bill 2021-08-25 23:06:42 -04:00
parent ed2cc49253
commit f55664c157
13 changed files with 55 additions and 55 deletions

View File

@ -1,4 +1,4 @@
import { GetCatalogIndexComposer, GetCatalogPageComposer, GetGiftWrappingConfigurationComposer, ICatalogPageData, ILinkEventTracker, RoomPreviewer } from '@nitrots/nitro-renderer'; import { GetCatalogIndexComposer, GetCatalogPageComposer, GetGiftWrappingConfigurationComposer, ILinkEventTracker, INodeData, RoomPreviewer } from '@nitrots/nitro-renderer';
import { FC, useCallback, useEffect, useReducer, useState } from 'react'; import { FC, useCallback, useEffect, useReducer, useState } from 'react';
import { AddEventLinkTracker, GetRoomEngine, LocalizeText, RemoveLinkEventTracker } from '../../api'; import { AddEventLinkTracker, GetRoomEngine, LocalizeText, RemoveLinkEventTracker } from '../../api';
import { CatalogEvent } from '../../events'; import { CatalogEvent } from '../../events';
@ -18,10 +18,10 @@ export const CatalogView: FC<CatalogViewProps> = props =>
const [ isVisible, setIsVisible ] = useState(false); const [ isVisible, setIsVisible ] = useState(false);
const [ roomPreviewer, setRoomPreviewer ] = useState<RoomPreviewer>(null); const [ roomPreviewer, setRoomPreviewer ] = useState<RoomPreviewer>(null);
const [ pendingPageLookup, setPendingPageLookup ] = useState<{ value: string, isOffer: boolean }>(null); const [ pendingPageLookup, setPendingPageLookup ] = useState<{ value: string, isOffer: boolean }>(null);
const [ pendingTree, setPendingTree ] = useState<ICatalogPageData[]>(null); const [ pendingTree, setPendingTree ] = useState<INodeData[]>(null);
const [ pendingOpenTree, setPendingOpenTree ] = useState<ICatalogPageData[]>(null); const [ pendingOpenTree, setPendingOpenTree ] = useState<INodeData[]>(null);
const [ catalogState, dispatchCatalogState ] = useReducer(CatalogReducer, initialCatalog); const [ catalogState, dispatchCatalogState ] = useReducer(CatalogReducer, initialCatalog);
const [ currentTab, setCurrentTab ] = useState<ICatalogPageData>(null); const [ currentTab, setCurrentTab ] = useState<INodeData>(null);
const { root = null, pageParser = null, activeOffer = null, searchResult = null } = catalogState; const { root = null, pageParser = null, activeOffer = null, searchResult = null } = catalogState;
const saveActivePages = useCallback(() => const saveActivePages = useCallback(() =>
@ -124,7 +124,7 @@ export const CatalogView: FC<CatalogViewProps> = props =>
if(pendingPageLookup !== null || pendingOpenTree) if(pendingPageLookup !== null || pendingOpenTree)
{ {
let tree: ICatalogPageData[] = []; let tree: INodeData[] = [];
if(pendingPageLookup !== null) if(pendingPageLookup !== null)
{ {

View File

@ -1,14 +1,14 @@
import { CatalogPageMessageOfferData, ICatalogPageData, ICatalogPageParser, IFurnitureData, SellablePetPaletteData } from '@nitrots/nitro-renderer'; import { CatalogPageMessageOfferData, CatalogPageMessageParser, IFurnitureData, INodeData, SellablePetPaletteData } from '@nitrots/nitro-renderer';
import { GetConfiguration, GetProductDataForLocalization, GetRoomEngine } from '../../../api'; import { GetConfiguration, GetProductDataForLocalization, GetRoomEngine } from '../../../api';
export interface ICatalogOffers export interface ICatalogOffers
{ {
[key: string]: ICatalogPageData[]; [key: string]: INodeData[];
} }
export interface ICatalogSearchResult export interface ICatalogSearchResult
{ {
page: ICatalogPageData; page: INodeData;
furniture: IFurnitureData[]; furniture: IFurnitureData[];
} }
@ -21,10 +21,10 @@ export function GetOfferName(offer: CatalogPageMessageOfferData): string
return offer.localizationId; return offer.localizationId;
} }
export function GetOfferNodes(offers: ICatalogOffers, offerId: number): ICatalogPageData[] export function GetOfferNodes(offers: ICatalogOffers, offerId: number): INodeData[]
{ {
const pages = offers[offerId.toString()]; const pages = offers[offerId.toString()];
const allowedPages: ICatalogPageData[] = []; const allowedPages: INodeData[] = [];
if(pages && pages.length) if(pages && pages.length)
{ {
@ -39,7 +39,7 @@ export function GetOfferNodes(offers: ICatalogOffers, offerId: number): ICatalog
return allowedPages; return allowedPages;
} }
export function SetOffersToNodes(offers: ICatalogOffers, pageData: ICatalogPageData): void export function SetOffersToNodes(offers: ICatalogOffers, pageData: INodeData): void
{ {
if(pageData.offerIds && pageData.offerIds.length) if(pageData.offerIds && pageData.offerIds.length)
{ {
@ -66,7 +66,7 @@ export function SetOffersToNodes(offers: ICatalogOffers, pageData: ICatalogPageD
} }
} }
export function GetCatalogPageImage(page: ICatalogPageParser, index: number = 0): string export function GetCatalogPageImage(page: CatalogPageMessageParser, index: number = 0): string
{ {
const imageName = page.localization.images && page.localization.images[index]; const imageName = page.localization.images && page.localization.images[index];
@ -79,7 +79,7 @@ export function GetCatalogPageImage(page: ICatalogPageParser, index: number = 0)
return assetUrl; return assetUrl;
} }
export function GetCatalogPageText(page: ICatalogPageParser, index: number = 0): string export function GetCatalogPageText(page: CatalogPageMessageParser, index: number = 0): string
{ {
let message = (page.localization.texts[index] || ''); let message = (page.localization.texts[index] || '');
@ -150,7 +150,7 @@ export function GetPetAvailableColors(petIndex: number, palettes: SellablePetPal
} }
} }
export function GetCatalogPageTreeByName(page: ICatalogPageData, lookup: string, tree: ICatalogPageData[]) export function GetCatalogPageTreeByName(page: INodeData, lookup: string, tree: INodeData[])
{ {
if(page.pageName === lookup) return page; if(page.pageName === lookup) return page;
@ -167,7 +167,7 @@ export function GetCatalogPageTreeByName(page: ICatalogPageData, lookup: string,
} }
} }
export function GetCatalogPageTreeById(page: ICatalogPageData, lookup: number, tree: ICatalogPageData[]) export function GetCatalogPageTreeById(page: INodeData, lookup: number, tree: INodeData[])
{ {
if(page.pageId === lookup) return page; if(page.pageId === lookup) return page;
@ -184,7 +184,7 @@ export function GetCatalogPageTreeById(page: ICatalogPageData, lookup: number, t
} }
} }
export function GetCatalogPageTreeByOfferId(page: ICatalogPageData, lookup: number, tree: ICatalogPageData[]) export function GetCatalogPageTreeByOfferId(page: INodeData, lookup: number, tree: INodeData[])
{ {
if(page.offerIds.indexOf(lookup) >= 0) return page; if(page.offerIds.indexOf(lookup) >= 0) return page;
@ -201,9 +201,9 @@ export function GetCatalogPageTreeByOfferId(page: ICatalogPageData, lookup: numb
} }
} }
export function BuildCatalogPageTree(page: ICatalogPageData, lookup: string, isOffer: boolean = false) export function BuildCatalogPageTree(page: INodeData, lookup: string, isOffer: boolean = false)
{ {
const pageTree: ICatalogPageData[] = []; const pageTree: INodeData[] = [];
if(isOffer) if(isOffer)
{ {

View File

@ -1,4 +1,5 @@
import { CatalogGroupData, CatalogPageMessageOfferData, ClubOfferData, GiftWrappingConfigurationParser, ICatalogPageData, ICatalogPageParser } from '@nitrots/nitro-renderer'; import { CatalogPageMessageOfferData, CatalogPageMessageParser, ClubOfferData, GiftWrappingConfigurationParser, INodeData } from '@nitrots/nitro-renderer';
import { HabboGroupEntryData } from '@nitrots/nitro-renderer/src/nitro/communication/messages/parser/user/HabboGroupEntryData';
import { Reducer } from 'react'; import { Reducer } from 'react';
import { CatalogPetPalette } from '../common/CatalogPetPalette'; import { CatalogPetPalette } from '../common/CatalogPetPalette';
import { ICatalogOffers, ICatalogSearchResult, SetOffersToNodes } from '../common/CatalogUtilities'; import { ICatalogOffers, ICatalogSearchResult, SetOffersToNodes } from '../common/CatalogUtilities';
@ -7,13 +8,13 @@ import { SubscriptionInfo } from '../common/SubscriptionInfo';
export interface ICatalogState export interface ICatalogState
{ {
root: ICatalogPageData; root: INodeData;
offerRoot: ICatalogOffers; offerRoot: ICatalogOffers;
currentTab: ICatalogPageData; currentTab: INodeData;
pageParser: ICatalogPageParser; pageParser: CatalogPageMessageParser;
activeOffer: CatalogPageMessageOfferData; activeOffer: CatalogPageMessageOfferData;
searchResult: ICatalogSearchResult; searchResult: ICatalogSearchResult;
groups: CatalogGroupData[]; groups: HabboGroupEntryData[];
petPalettes: CatalogPetPalette[]; petPalettes: CatalogPetPalette[];
clubOffers: ClubOfferData[]; clubOffers: ClubOfferData[];
subscriptionInfo: SubscriptionInfo; subscriptionInfo: SubscriptionInfo;
@ -24,13 +25,13 @@ export interface ICatalogAction
{ {
type: string; type: string;
payload: { payload: {
root?: ICatalogPageData; root?: INodeData;
offerRoot?: ICatalogOffers; offerRoot?: ICatalogOffers;
currentTab?: ICatalogPageData; currentTab?: INodeData;
pageParser?: ICatalogPageParser; pageParser?: CatalogPageMessageParser;
activeOffer?: CatalogPageMessageOfferData; activeOffer?: CatalogPageMessageOfferData;
searchResult?: ICatalogSearchResult; searchResult?: ICatalogSearchResult;
groups?: CatalogGroupData[]; groups?: HabboGroupEntryData[];
petPalette?: CatalogPetPalette; petPalette?: CatalogPetPalette;
clubOffers?: ClubOfferData[]; clubOffers?: ClubOfferData[];
subscriptionInfo?: SubscriptionInfo; subscriptionInfo?: SubscriptionInfo;
@ -88,7 +89,7 @@ export const CatalogReducer: Reducer<ICatalogState, ICatalogAction> = (state, ac
return { ...state, currentTab, searchResult }; return { ...state, currentTab, searchResult };
} }
case CatalogActions.SET_CATALOG_PAGE_PARSER: { case CatalogActions.SET_CATALOG_PAGE_PARSER: {
let pageParser = (Object.create(action.payload.pageParser) as ICatalogPageParser); let pageParser = (Object.create(action.payload.pageParser) as CatalogPageMessageParser);
let activeOffer = null; let activeOffer = null;
if(pageParser.layoutCode === 'single_bundle') if(pageParser.layoutCode === 'single_bundle')

View File

@ -1,10 +1,10 @@
import { ICatalogPageData } from '@nitrots/nitro-renderer'; import { INodeData } from '@nitrots/nitro-renderer';
import { FC, useEffect } from 'react'; import { FC, useEffect } from 'react';
import { CatalogSearchView } from '../search/CatalogSearchView'; import { CatalogSearchView } from '../search/CatalogSearchView';
import { CatalogNavigationViewProps } from './CatalogNavigationView.types'; import { CatalogNavigationViewProps } from './CatalogNavigationView.types';
import { CatalogNavigationSetView } from './set/CatalogNavigationSetView'; import { CatalogNavigationSetView } from './set/CatalogNavigationSetView';
export let ACTIVE_PAGES: ICatalogPageData[] = []; export let ACTIVE_PAGES: INodeData[] = [];
export const CatalogNavigationView: FC<CatalogNavigationViewProps> = props => export const CatalogNavigationView: FC<CatalogNavigationViewProps> = props =>
{ {

View File

@ -1,9 +1,9 @@
import { ICatalogPageData } from '@nitrots/nitro-renderer'; import { INodeData } from '@nitrots/nitro-renderer';
import { Dispatch, SetStateAction } from 'react'; import { Dispatch, SetStateAction } from 'react';
export interface CatalogNavigationViewProps export interface CatalogNavigationViewProps
{ {
page: ICatalogPageData; page: INodeData;
pendingTree: ICatalogPageData[]; pendingTree: INodeData[];
setPendingTree: Dispatch<SetStateAction<ICatalogPageData[]>>; setPendingTree: Dispatch<SetStateAction<INodeData[]>>;
} }

View File

@ -1,4 +1,4 @@
import { GetCatalogPageComposer, ICatalogPageData } from '@nitrots/nitro-renderer'; import { GetCatalogPageComposer, INodeData } from '@nitrots/nitro-renderer';
import { FC, useCallback, useEffect, useState } from 'react'; import { FC, useCallback, useEffect, useState } from 'react';
import { SendMessageHook } from '../../../../../hooks/messages/message-event'; import { SendMessageHook } from '../../../../../hooks/messages/message-event';
import { CatalogMode } from '../../../CatalogView.types'; import { CatalogMode } from '../../../CatalogView.types';
@ -12,7 +12,7 @@ export const CatalogNavigationItemView: FC<CatalogNavigationItemViewProps> = pro
const { page = null, isActive = false, pendingTree = null, setPendingTree = null, setActiveChild = null } = props; const { page = null, isActive = false, pendingTree = null, setPendingTree = null, setActiveChild = null } = props;
const [ isExpanded, setIsExpanded ] = useState(false); const [ isExpanded, setIsExpanded ] = useState(false);
const select = useCallback((selectPage: ICatalogPageData, expand: boolean = false) => const select = useCallback((selectPage: INodeData, expand: boolean = false) =>
{ {
if(!selectPage) return; if(!selectPage) return;

View File

@ -1,11 +1,11 @@
import { ICatalogPageData } from '@nitrots/nitro-renderer'; import { INodeData } from '@nitrots/nitro-renderer';
import { Dispatch, SetStateAction } from 'react'; import { Dispatch, SetStateAction } from 'react';
export interface CatalogNavigationItemViewProps export interface CatalogNavigationItemViewProps
{ {
page: ICatalogPageData; page: INodeData;
isActive: boolean; isActive: boolean;
pendingTree: ICatalogPageData[]; pendingTree: INodeData[];
setPendingTree: Dispatch<SetStateAction<ICatalogPageData[]>>; setPendingTree: Dispatch<SetStateAction<INodeData[]>>;
setActiveChild: Dispatch<SetStateAction<ICatalogPageData>>; setActiveChild: Dispatch<SetStateAction<INodeData>>;
} }

View File

@ -1,4 +1,4 @@
import { ICatalogPageData } from '@nitrots/nitro-renderer'; import { INodeData } from '@nitrots/nitro-renderer';
import { FC, useEffect, useState } from 'react'; import { FC, useEffect, useState } from 'react';
import { CatalogNavigationItemView } from '../item/CatalogNavigationItemView'; import { CatalogNavigationItemView } from '../item/CatalogNavigationItemView';
import { CatalogNavigationSetViewProps } from './CatalogNavigationSetView.types'; import { CatalogNavigationSetViewProps } from './CatalogNavigationSetView.types';
@ -6,7 +6,7 @@ import { CatalogNavigationSetViewProps } from './CatalogNavigationSetView.types'
export const CatalogNavigationSetView: FC<CatalogNavigationSetViewProps> = props => export const CatalogNavigationSetView: FC<CatalogNavigationSetViewProps> = props =>
{ {
const { page = null, isFirstSet = false, pendingTree = null, setPendingTree = null } = props; const { page = null, isFirstSet = false, pendingTree = null, setPendingTree = null } = props;
const [ activeChild, setActiveChild ] = useState<ICatalogPageData>(null); const [ activeChild, setActiveChild ] = useState<INodeData>(null);
useEffect(() => useEffect(() =>
{ {

View File

@ -1,10 +1,10 @@
import { ICatalogPageData } from '@nitrots/nitro-renderer'; import { INodeData } from '@nitrots/nitro-renderer';
import { Dispatch, SetStateAction } from 'react'; import { Dispatch, SetStateAction } from 'react';
export interface CatalogNavigationSetViewProps export interface CatalogNavigationSetViewProps
{ {
page: ICatalogPageData; page: INodeData;
isFirstSet?: boolean; isFirstSet?: boolean;
pendingTree: ICatalogPageData[]; pendingTree: INodeData[];
setPendingTree: Dispatch<SetStateAction<ICatalogPageData[]>>; setPendingTree: Dispatch<SetStateAction<INodeData[]>>;
} }

View File

@ -1,7 +1,7 @@
import { ICatalogPageParser, RoomPreviewer } from '@nitrots/nitro-renderer'; import { CatalogPageMessageParser, RoomPreviewer } from '@nitrots/nitro-renderer';
export interface CatalogLayoutProps export interface CatalogLayoutProps
{ {
roomPreviewer: RoomPreviewer; roomPreviewer: RoomPreviewer;
pageParser?: ICatalogPageParser; pageParser?: CatalogPageMessageParser;
} }

View File

@ -1,4 +1,4 @@
import { ICatalogPageParser, RoomPreviewer } from '@nitrots/nitro-renderer'; import { CatalogPageMessageParser, RoomPreviewer } from '@nitrots/nitro-renderer';
import { CatalogLayoutBadgeDisplayView } from './badge-display/CatalogLayoutBadgeDisplayView'; import { CatalogLayoutBadgeDisplayView } from './badge-display/CatalogLayoutBadgeDisplayView';
import { CatalogLayoutDefaultView } from './default/CatalogLayoutDefaultView'; import { CatalogLayoutDefaultView } from './default/CatalogLayoutDefaultView';
import { CatalogLayoutFrontpage4View } from './frontpage4/CatalogLayoutFrontpage4View'; import { CatalogLayoutFrontpage4View } from './frontpage4/CatalogLayoutFrontpage4View';
@ -13,7 +13,7 @@ import { CatalogLayoutSpacesView } from './spaces-new/CatalogLayoutSpacesView';
import { CatalogLayoutTrophiesView } from './trophies/CatalogLayoutTrophiesView'; import { CatalogLayoutTrophiesView } from './trophies/CatalogLayoutTrophiesView';
import { CatalogLayoutVipBuyView } from './vip-buy/CatalogLayoutVipBuyView'; import { CatalogLayoutVipBuyView } from './vip-buy/CatalogLayoutVipBuyView';
export const GetCatalogLayout = (pageParser: ICatalogPageParser, roomPreviewer: RoomPreviewer) => export const GetCatalogLayout = (pageParser: CatalogPageMessageParser, roomPreviewer: RoomPreviewer) =>
{ {
switch(pageParser.layoutCode) switch(pageParser.layoutCode)
{ {

View File

@ -1,4 +1,4 @@
import { ICatalogPageData, IFurnitureData } from '@nitrots/nitro-renderer'; import { IFurnitureData, INodeData } from '@nitrots/nitro-renderer';
import { FC, useCallback, useEffect, useState } from 'react'; import { FC, useCallback, useEffect, useState } from 'react';
import { GetSessionDataManager, LocalizeText } from '../../../../api'; import { GetSessionDataManager, LocalizeText } from '../../../../api';
import { GetOfferNodes } from '../../common/CatalogUtilities'; import { GetOfferNodes } from '../../common/CatalogUtilities';
@ -44,7 +44,7 @@ export const CatalogSearchView: FC<CatalogSearchViewProps> = props =>
if(!furnitureData) return; if(!furnitureData) return;
const foundPages: ICatalogPageData[] = []; const foundPages: INodeData[] = [];
const foundFurniture: IFurnitureData[] = []; const foundFurniture: IFurnitureData[] = [];
for(const furniture of furnitureData) for(const furniture of furnitureData)
@ -71,7 +71,7 @@ export const CatalogSearchView: FC<CatalogSearchViewProps> = props =>
return (self.indexOf(value) === index); return (self.indexOf(value) === index);
}); });
const catalogPage: ICatalogPageData = { const catalogPage: INodeData = {
visible: true, visible: true,
icon: 0, icon: 0,
pageId: -1, pageId: -1,

View File

@ -18,7 +18,6 @@ export const InventoryBadgeView: FC<InventoryBadgeViewProps> = props =>
{ {
if(needsBadgeUpdate) if(needsBadgeUpdate)
{ {
console.log('yee')
dispatchBadgeState({ dispatchBadgeState({
type: InventoryBadgeActions.SET_NEEDS_UPDATE, type: InventoryBadgeActions.SET_NEEDS_UPDATE,
payload: { payload: {