import { AddLinkEventTracker, ILinkEventTracker, RemoveLinkEventTracker, } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { AchievementUtilities, LocalizeText } from '../../api'; import { Column, LayoutImage, LayoutProgressBar, Text } from '../../common'; import { useAchievements } from '../../hooks'; import { NitroCard } from '../../layout'; import { AchievementCategoryView } from './AchievementCategoryView'; import { AchievementsCategoryListView } from './category-list'; export const AchievementsView: FC<{}> = (props) => { const [isVisible, setIsVisible] = useState(false); const { achievementCategories = [], selectedCategoryCode = null, setSelectedCategoryCode = null, achievementScore = 0, getProgress = 0, getMaxProgress = 0, selectedCategory = null, } = useAchievements(); useEffect(() => { const linkTracker: ILinkEventTracker = { linkReceived: (url: string) => { const parts = url.split('/'); if(parts.length < 2) return; switch(parts[1]) { case 'show': setIsVisible(true); return; case 'hide': setIsVisible(false); return; case 'toggle': setIsVisible((prevValue) => !prevValue); return; } }, eventUrlPrefix: 'achievements/', }; AddLinkEventTracker(linkTracker); return () => RemoveLinkEventTracker(linkTracker); }, []); if(!isVisible) return null; return ( setIsVisible(false)} /> {selectedCategory && (
setSelectedCategoryCode(null)} /> {LocalizeText( `quests.${selectedCategory.code}.name` )} {LocalizeText( 'achievements.details.categoryprogress', ['progress', 'limit'], [ selectedCategory.getProgress().toString(), selectedCategory .getMaxProgress() .toString(), ] )}
)} {!selectedCategory && ( <>
{LocalizeText( 'achievements.categories.score', ['score'], [achievementScore.toString()] )}
)} {selectedCategory && ( )}
); };