2023-08-23 18:11:42 +03:00
|
|
|
import { useCallback, useLayoutEffect, useState } from 'react';
|
2023-09-05 00:23:53 +03:00
|
|
|
import { useLocation } from 'react-router-dom';
|
2023-08-23 18:11:42 +03:00
|
|
|
|
2023-09-05 00:23:53 +03:00
|
|
|
import { useConceptNavigation } from '../../context/NagivationContext';
|
2023-08-24 14:23:17 +03:00
|
|
|
import { useConceptTheme } from '../../context/ThemeContext';
|
2023-08-23 18:11:42 +03:00
|
|
|
import { HelpTopic } from '../../utils/models';
|
|
|
|
import TopicsList from './TopicsList';
|
|
|
|
import ViewTopic from './ViewTopic';
|
|
|
|
|
|
|
|
function ManualsPage() {
|
2023-09-05 00:23:53 +03:00
|
|
|
const { navigateTo } = useConceptNavigation();
|
2023-08-23 18:11:42 +03:00
|
|
|
const search = useLocation().search;
|
2023-08-24 14:23:17 +03:00
|
|
|
const { mainHeight } = useConceptTheme();
|
2023-08-23 18:11:42 +03:00
|
|
|
const [activeTopic, setActiveTopic] = useState<HelpTopic>(HelpTopic.MAIN);
|
|
|
|
|
2023-09-05 00:23:53 +03:00
|
|
|
const navigateTopic = useCallback(
|
2023-08-23 18:11:42 +03:00
|
|
|
(newTopic: HelpTopic) => {
|
2023-09-05 00:23:53 +03:00
|
|
|
navigateTo(`/manuals?topic=${newTopic}`);
|
|
|
|
}, [navigateTo]);
|
2023-08-23 18:11:42 +03:00
|
|
|
|
|
|
|
|
|
|
|
function onSelectTopic(newTopic: HelpTopic) {
|
2023-09-05 00:23:53 +03:00
|
|
|
navigateTopic(newTopic);
|
2023-08-23 18:11:42 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
useLayoutEffect(() => {
|
|
|
|
const topic = new URLSearchParams(search).get('topic') as HelpTopic;
|
|
|
|
if (!Object.values(HelpTopic).includes(topic)) {
|
2023-09-05 00:23:53 +03:00
|
|
|
navigateTopic(HelpTopic.MAIN);
|
2023-08-23 18:11:42 +03:00
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
setActiveTopic(topic);
|
|
|
|
}
|
2023-09-05 00:23:53 +03:00
|
|
|
}, [search, setActiveTopic, navigateTopic]);
|
2023-08-23 18:11:42 +03:00
|
|
|
|
|
|
|
return (
|
2023-08-24 14:23:17 +03:00
|
|
|
<div className='flex w-full gap-2 justify-stretch' style={{minHeight: mainHeight}}>
|
2023-08-23 18:11:42 +03:00
|
|
|
<TopicsList
|
|
|
|
activeTopic={activeTopic}
|
|
|
|
onChangeTopic={topic => onSelectTopic(topic)}
|
|
|
|
/>
|
2023-08-23 18:50:49 +03:00
|
|
|
<ViewTopic
|
|
|
|
topic={activeTopic}
|
|
|
|
/>
|
2023-08-23 18:11:42 +03:00
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default ManualsPage;
|