From 936595d4b211f787d15c6c1082e5208e14497009 Mon Sep 17 00:00:00 2001 From: duckietm Date: Fri, 3 May 2024 11:35:06 +0200 Subject: [PATCH] Update: Room Settings --- .../navigator/views/NavigatorRoomInfoView.tsx | 159 +++++++----------- 1 file changed, 65 insertions(+), 94 deletions(-) diff --git a/src/components/navigator/views/NavigatorRoomInfoView.tsx b/src/components/navigator/views/NavigatorRoomInfoView.tsx index 89f2e4f..b6aa5ad 100644 --- a/src/components/navigator/views/NavigatorRoomInfoView.tsx +++ b/src/components/navigator/views/NavigatorRoomInfoView.tsx @@ -1,10 +1,10 @@ -import { AddFavouriteRoomMessageComposer, DeleteFavouriteRoomMessageComposer, GetCustomRoomFilterMessageComposer, NavigatorSearchComposer, RoomMuteComposer, RoomSettingsComposer, SecurityLevel, ToggleStaffPickMessageComposer, UpdateHomeRoomMessageComposer } from '@nitrots/nitro-renderer'; +import { GetCustomRoomFilterMessageComposer, NavigatorSearchComposer, RemoveOwnRoomRightsRoomMessageComposer, RoomControllerLevel, RoomMuteComposer, RoomSettingsComposer, SecurityLevel, ToggleStaffPickMessageComposer, UpdateHomeRoomMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; -import { CreateLinkEvent, DispatchUiEvent, GetConfiguration, GetGroupInformation, GetSessionDataManager, GetUserProfile, LocalizeText, ReportType, SendMessageComposer } from '../../../api'; -import { Base, Button, Column, Flex, LayoutBadgeImageView, LayoutRoomThumbnailView, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text, UserProfileIconView, classNames } from '../../../common'; - +import { FaLink, FaSignOutAlt } from 'react-icons/fa'; +import { CreateLinkEvent, DispatchUiEvent, GetGroupInformation, GetSessionDataManager, LocalizeText, ReportType, SendMessageComposer } from '../../../api'; +import { Button, Column, Flex, LayoutBadgeImageView, LayoutRoomThumbnailView, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text, UserProfileIconView, classNames } from '../../../common'; import { RoomWidgetThumbnailEvent } from '../../../events'; -import { useHelp, useNavigator } from '../../../hooks'; +import { useHelp, useNavigator, useRoom } from '../../../hooks'; export class NavigatorRoomInfoViewProps { @@ -16,9 +16,9 @@ export const NavigatorRoomInfoView: FC = props => const { onCloseClick = null } = props; const [ isRoomPicked, setIsRoomPicked ] = useState(false); const [ isRoomMuted, setIsRoomMuted ] = useState(false); - const [ isOpenLink, setIsOpenLink ] = useState(false); const { report = null } = useHelp(); const { navigatorData = null } = useNavigator(); + const { roomSession = null } = useRoom(); const hasPermission = (permission: string) => { @@ -28,6 +28,10 @@ export const NavigatorRoomInfoView: FC = props => return (GetSessionDataManager().userId === navigatorData.enteredGuestRoom.ownerId || GetSessionDataManager().isModerator); case 'staff_pick': return GetSessionDataManager().securityLevel >= SecurityLevel.COMMUNITY; + case 'floor': + return roomSession?.controllerLevel >= RoomControllerLevel.GUEST; + case 'guest': + return roomSession?.controllerLevel === RoomControllerLevel.GUEST; default: return false; } } @@ -39,14 +43,14 @@ export const NavigatorRoomInfoView: FC = props => switch(action) { case 'set_home_room': - let newRoomId = -1; + let newRoomId = 0; if(navigatorData.homeRoomId !== navigatorData.enteredGuestRoom.roomId) { newRoomId = navigatorData.enteredGuestRoom.roomId; } - if(newRoomId > 0) SendMessageComposer(new UpdateHomeRoomMessageComposer(newRoomId)); + SendMessageComposer(new UpdateHomeRoomMessageComposer(newRoomId)); return; case 'navigator_search_tag': CreateLinkEvent(`navigator/search/${ value }`); @@ -54,14 +58,15 @@ export const NavigatorRoomInfoView: FC = props => return; case 'open_room_thumbnail_camera': DispatchUiEvent(new RoomWidgetThumbnailEvent(RoomWidgetThumbnailEvent.TOGGLE_THUMBNAIL)); - onCloseClick(); return; case 'open_group_info': GetGroupInformation(navigatorData.enteredGuestRoom.habboGroupId); return; + case 'toggle_room_link': + CreateLinkEvent('navigator/toggle-room-link'); + return; case 'open_room_settings': SendMessageComposer(new RoomSettingsComposer(navigatorData.enteredGuestRoom.roomId)); - onCloseClick(); return; case 'toggle_pick': setIsRoomPicked(value => !value); @@ -73,21 +78,15 @@ export const NavigatorRoomInfoView: FC = props => return; case 'room_filter': SendMessageComposer(new GetCustomRoomFilterMessageComposer(navigatorData.enteredGuestRoom.roomId)); - onCloseClick(); return; case 'open_floorplan_editor': CreateLinkEvent('floor-editor/toggle'); - onCloseClick(); return; case 'report_room': report(ReportType.ROOM, { roomId: navigatorData.enteredGuestRoom.roomId, roomName: navigatorData.enteredGuestRoom.roomName }); - onCloseClick(); return; - case 'set_favourite_room': - SendMessageComposer(new AddFavouriteRoomMessageComposer(navigatorData.enteredGuestRoom.roomId)); - return; - case 'set_unfavourite_room': - SendMessageComposer(new DeleteFavouriteRoomMessageComposer(navigatorData.enteredGuestRoom.roomId)); + case 'remove_rights': + SendMessageComposer(new RemoveOwnRoomRightsRoomMessageComposer(navigatorData.enteredGuestRoom.roomId)); return; case 'close': onCloseClick(); @@ -108,111 +107,83 @@ export const NavigatorRoomInfoView: FC = props => if(!navigatorData.enteredGuestRoom) return null; return ( - + processAction('close') } /> { navigatorData.enteredGuestRoom && <> + + + { hasPermission('settings') && processAction('open_room_thumbnail_camera') } /> } + + { (navigatorData.enteredGuestRoom.tags.length > 0) && + + { navigatorData.enteredGuestRoom.tags.map((tag, index) => + { + return processAction('navigator_search_tag', tag) }>#{ tag } + }) } + } + - - - { navigatorData.enteredGuestRoom.roomName } - - processAction('set_home_room') } className={ classNames('flex-shrink-0 icon icon-house-small', ((navigatorData.homeRoomId !== navigatorData.enteredGuestRoom.roomId) && 'cursor-pointer'), ((navigatorData.homeRoomId !== navigatorData.enteredGuestRoom.roomId) && 'gray')) } /> - { /* - { (navigatorData.enteredGuestRoom.ownerId !== GetSessionDataManager().userId) && - processAction('set_favourite_room') } className={ classNames('flex-shrink-0 icon icon-favourite-room-active cursor-pointer') } /> - processAction('set_unfavourite_room') } className={ classNames('flex-shrink-0 icon icon-favourite-room-inactive cursor-pointer') } /> - } - */ } - - + + { navigatorData.enteredGuestRoom.roomName } { navigatorData.enteredGuestRoom.showOwner && - GetUserProfile(navigatorData.enteredGuestRoom.ownerId) }> - { LocalizeText('navigator.roomownercaption') } + + { LocalizeText('navigator.roomownercaption') } - { navigatorData.enteredGuestRoom.ownerName } + { navigatorData.enteredGuestRoom.ownerName } - - } + } - { LocalizeText('navigator.roomrating') } - { navigatorData.currentRoomRating } + { LocalizeText('navigator.roomrating') } + { navigatorData.currentRoomRating } + + + + + processAction('set_home_room') } className={ classNames('flex-shrink-0 icon icon-house-small cursor-pointer', ((navigatorData.homeRoomId !== navigatorData.enteredGuestRoom.roomId) && 'gray')) } /> + { hasPermission('settings') && + processAction('open_room_settings') } /> } + CreateLinkEvent('navigator/toggle-room-link') } /> + { hasPermission('guest') && processAction('remove_rights') } /> } - { (navigatorData.enteredGuestRoom.tags.length > 0) && - - { navigatorData.enteredGuestRoom.tags.map(tag => - { - return processAction('navigator_search_tag', tag) }>#{ tag } - }) } - - } - { navigatorData.enteredGuestRoom.description } - - - { hasPermission('settings') && processAction('open_room_thumbnail_camera') } /> } - - + { navigatorData.enteredGuestRoom.description } { (navigatorData.enteredGuestRoom.habboGroupId > 0) && - processAction('open_group_info') }> + processAction('open_group_info') }> - + { LocalizeText('navigator.guildbase', [ 'groupName' ], [ navigatorData.enteredGuestRoom.groupName ]) } - - } - setIsOpenLink(prevValue => !prevValue) }> - - { LocalizeText('navigator.embed.caption') } - - { (isOpenLink) && - - { LocalizeText('navigator.embed.info') } - ('url.prefix', '')) } /> - - } + } { hasPermission('staff_pick') && - - } - { hasPermission('settings') && - <> - - - - - } - + } { hasPermission('settings') && + <> - } - - - + } + { hasPermission('floor') && } + - - } + }