import { ILinkEventTracker } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { AddEventLinkTracker, LocalizeText, RemoveLinkEventTracker, ReportState } from '../../api'; import { Base, Column, Grid, NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../common'; import { useHelp } from '../../hooks'; import { DescribeReportView } from './views/DescribeReportView'; import { HelpIndexView } from './views/HelpIndexView'; import { NameChangeView } from './views/name-change/NameChangeView'; import { ReportSummaryView } from './views/ReportSummaryView'; import { SanctionSatusView } from './views/SanctionStatusView'; import { SelectReportedChatsView } from './views/SelectReportedChatsView'; import { SelectReportedUserView } from './views/SelectReportedUserView'; import { SelectTopicView } from './views/SelectTopicView'; export const HelpView: FC<{}> = props => { const [ isVisible, setIsVisible ] = useState(false); const { activeReport = null, setActiveReport = null, report = null } = useHelp(); const onClose = () => { setActiveReport(null); setIsVisible(false); } 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; case 'tour': // todo: launch tour return; case 'report': if((parts.length >= 5) && (parts[2] === 'room')) { const roomId = parseInt(parts[3]); const unknown = unescape(parts.splice(4).join('/')); //this.reportRoom(roomId, unknown, ""); } return; } }, eventUrlPrefix: 'help/' }; AddEventLinkTracker(linkTracker); return () => RemoveLinkEventTracker(linkTracker); }, []); useEffect(() => { if(!activeReport) return; setIsVisible(true); }, [ activeReport ]); if(!isVisible && !activeReport) return null; const CurrentStepView = () => { if(activeReport) { switch(activeReport.currentStep) { case ReportState.SELECT_USER: return ; case ReportState.SELECT_CHATS: return ; case ReportState.SELECT_TOPICS: return ; case ReportState.INPUT_REPORT_MESSAGE: return ; case ReportState.REPORT_SUMMARY: return ; } } return ; } return ( <> ); }