import { DeleteBadgeMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { FaTrashAlt } from 'react-icons/fa'; import { LocalizeBadgeName, LocalizeText, SendMessageComposer, UnseenItemCategory } from '../../../../api'; import { LayoutBadgeImageView } from '../../../../common'; import { useInventoryBadges, useInventoryUnseenTracker, useNotification } from '../../../../hooks'; import { InfiniteGrid, NitroButton } from '../../../../layout'; import { InventoryBadgeItemView } from './InventoryBadgeItemView'; export const InventoryBadgeView: FC<{ filteredBadgeCodes?: string[] }> = props => { const { filteredBadgeCodes = null } = props; const [ isVisible, setIsVisible ] = useState(false); const { badgeCodes = [], activeBadgeCodes = [], selectedBadgeCode = null, isWearingBadge = null, canWearBadges = null, toggleBadge = null, getBadgeId = null, activate = null, deactivate = null } = useInventoryBadges(); const { isUnseen = null, removeUnseen = null } = useInventoryUnseenTracker(); const { showConfirm = null } = useNotification(); const displayCodes = (filteredBadgeCodes !== null ? filteredBadgeCodes : badgeCodes); const attemptDeleteBadge = () => { if(!selectedBadgeCode) return; showConfirm( LocalizeText('inventory.delete.confirm_delete.info', [ 'furniname', 'amount' ], [ LocalizeBadgeName(selectedBadgeCode), '1' ]), () => SendMessageComposer(new DeleteBadgeMessageComposer(selectedBadgeCode)), null, null, null, LocalizeText('inventory.delete.confirm_delete.title') ); }; useEffect(() => { if(!selectedBadgeCode || !isUnseen(UnseenItemCategory.BADGE, getBadgeId(selectedBadgeCode))) return; removeUnseen(UnseenItemCategory.BADGE, getBadgeId(selectedBadgeCode)); }, [ selectedBadgeCode, isUnseen, removeUnseen, getBadgeId ]); useEffect(() => { if(!isVisible) return; const id = activate(); return () => deactivate(id); }, [ isVisible, activate, deactivate ]); useEffect(() => { setIsVisible(true); return () => setIsVisible(false); }, []); return (
columnCount={ 5 } estimateSize={ 50 } itemRender={ item => } items={ displayCodes.filter(code => !isWearingBadge(code)) } />
{ LocalizeText('inventory.badges.activebadges') } columnCount={ 3 } estimateSize={ 50 } itemRender={ item => } items={ activeBadgeCodes } />
{ !!selectedBadgeCode &&
{ LocalizeBadgeName(selectedBadgeCode) }
toggleBadge(selectedBadgeCode) }> { LocalizeText(isWearingBadge(selectedBadgeCode) ? 'inventory.badges.clearbadge' : 'inventory.badges.wearbadge') }
}
); };