From e8ae9d76ed610348f6f2e48189f78d65a0e031dd Mon Sep 17 00:00:00 2001 From: dank074 Date: Fri, 7 Jan 2022 00:40:53 -0600 Subject: [PATCH] fix issue closed handler --- .../views/page/layout/GetCatalogLayout.tsx | 5 +- .../CatalogLayoutColorGroupingView.tsx | 83 ++++++++++++++++++- src/views/help/HelpMessageHandler.tsx | 2 +- 3 files changed, 84 insertions(+), 6 deletions(-) diff --git a/src/views/catalog/views/page/layout/GetCatalogLayout.tsx b/src/views/catalog/views/page/layout/GetCatalogLayout.tsx index d5411cf0..3d4d6e06 100644 --- a/src/views/catalog/views/page/layout/GetCatalogLayout.tsx +++ b/src/views/catalog/views/page/layout/GetCatalogLayout.tsx @@ -1,6 +1,5 @@ import { CatalogPageMessageParser, RoomPreviewer } from '@nitrots/nitro-renderer'; import { CatalogLayoutBadgeDisplayView } from './badge-display/CatalogLayoutBadgeDisplayView'; -import { CatalogLayoutColorGroupingView } from './color-grouping/CatalogLayoutColorGroupingView'; import { CatalogLayoutDefaultView } from './default/CatalogLayoutDefaultView'; import { CatalogLayoutFrontpage4View } from './frontpage4/CatalogLayoutFrontpage4View'; import { CatalogLayouGuildCustomFurniView } from './guild-custom-furni/CatalogLayoutGuildCustomFurniView'; @@ -58,8 +57,8 @@ export const GetCatalogLayout = (pageParser: CatalogPageMessageParser, roomPrevi return ; case 'badge_display': return ; - case 'default_3x3_color_grouping': - return ; + //case 'default_3x3_color_grouping': + //return ; case 'bots': case 'default_3x3': default: diff --git a/src/views/catalog/views/page/layout/color-grouping/CatalogLayoutColorGroupingView.tsx b/src/views/catalog/views/page/layout/color-grouping/CatalogLayoutColorGroupingView.tsx index 258893fe..45307324 100644 --- a/src/views/catalog/views/page/layout/color-grouping/CatalogLayoutColorGroupingView.tsx +++ b/src/views/catalog/views/page/layout/color-grouping/CatalogLayoutColorGroupingView.tsx @@ -1,4 +1,9 @@ -import { FC } from 'react'; +import { CatalogPageMessageOfferData, IFurnitureData } from '@nitrots/nitro-renderer'; +import { FC, useMemo, useState } from 'react'; +import { GetSessionDataManager } from '../../../../../../api'; +import { NitroLayoutGrid, NitroLayoutGridColumn } from '../../../../../../layout'; +import { ProductTypeEnum } from '../../../../common/ProductTypeEnum'; +import { CatalogPageOffersView } from '../../offers/CatalogPageOffersView'; import { CatalogLayoutProps } from '../CatalogLayout.types'; export interface CatalogLayoutColorGroupViewProps extends CatalogLayoutProps @@ -8,5 +13,79 @@ export interface CatalogLayoutColorGroupViewProps extends CatalogLayoutProps export const CatalogLayoutColorGroupingView : FC = props => { - return null; + const { roomPreviewer = null, pageParser = null } = props; + const [ colorableItems, setColorableItems ] = useState>(new Map()); + + const offers = useMemo(() => + { + const offers: CatalogPageMessageOfferData[] = []; + const addedColorableItems = new Map(); + + pageParser.offers.forEach(offer => + { + const product = offer.products[0]; + if(!product) return; + + let furniData: IFurnitureData = null; + + if(product.productType === ProductTypeEnum.FLOOR) + { + furniData = GetSessionDataManager().getFloorItemData(product.furniClassId); + } + else if(product.productType === ProductTypeEnum.WALL) + { + furniData = GetSessionDataManager().getWallItemData(product.furniClassId); + } + + if(((!(furniData)) || ((furniData.fullName.indexOf('*') === -1)))) + { + offers.push(offer); + } + else + { + const name = furniData.fullName.split('*')[0]; + const colorIndex = parseInt(furniData.fullName.split('*')[1]); + + if(!colorableItems[name]) + { + colorableItems[name] = []; + } + + let selectedColor = 0; + if(furniData.colors) + { + for(let color of furniData.colors) + { + if(color !== 0xFFFFFF) + { + selectedColor = color; + } + } + if(colorableItems[name].indexOf(selectedColor) === -1) + { + colorableItems[name][colorIndex] = selectedColor; + } + } + + if(!addedColorableItems.has(name)) + { + offers.push(offer); + addedColorableItems.set(name, true); + } + } + }); + console.log(colorableItems); + return offers; + }, [colorableItems, pageParser.offers]); + + return ( + + + + + + + + + ); } diff --git a/src/views/help/HelpMessageHandler.tsx b/src/views/help/HelpMessageHandler.tsx index 047dd512..1febee73 100644 --- a/src/views/help/HelpMessageHandler.tsx +++ b/src/views/help/HelpMessageHandler.tsx @@ -39,7 +39,7 @@ export const HelpMessageHandler: FC<{}> = props => { const parser = event.getParser(); - const message = LocalizeText('help.cfh.closed.' + GetCloseReasonKey(parser.closeReason)) + const message = parser.messageText.length === 0 ? LocalizeText('help.cfh.closed.' + GetCloseReasonKey(parser.closeReason)) : parser.messageText; NotificationUtilities.simpleAlert(message, NotificationAlertType.MODERATION, null, null, LocalizeText('mod.alert.title')); }, []);