import React, { FC } from 'react'; import { NodeLayout } from '~/layouts/NodeLayout'; import { RouteComponentProps } from 'react-router'; import { useScrollToTop } from '~/utils/hooks/useScrollToTop'; import { useFullNode } from '~/utils/hooks/node/useFullNode'; import { useImageModal } from '~/utils/hooks/useImageModal'; import { useNodeComments } from '~/utils/hooks/node/useNodeComments'; import { useUser } from '~/utils/hooks/user/userUser'; import { useNodeTags } from '~/utils/hooks/node/useNodeTags'; import { NodeContextProvider } from '~/utils/context/NodeContextProvider'; import { CommentContextProvider } from '~/utils/context/CommentContextProvider'; import { TagsContextProvider } from '~/utils/context/TagsContextProvider'; import { useNodePermissions } from '~/utils/hooks/node/useNodePermissions'; import { NodeRelatedProvider } from '~/utils/providers/NodeRelatedProvider'; import { useGetNode } from '~/utils/hooks/data/useGetNode'; type Props = RouteComponentProps<{ id: string }> & {}; const NodePage: FC = ({ match: { params: { id }, }, }) => { const { node, isLoading } = useGetNode(parseInt(id, 10)); const { isLoadingComments, comments, commentsCount, lastSeenCurrent } = useFullNode(id); const onShowImageModal = useImageModal(); const { onLoadMoreComments, onDelete: onDeleteComment } = useNodeComments(parseInt(id, 10)); const { onDelete: onTagDelete, onChange: onTagsChange, onClick: onTagClick } = useNodeTags( parseInt(id, 10) ); const user = useUser(); const [canEdit] = useNodePermissions(node); useScrollToTop([id, isLoadingComments]); if (!node) { // TODO: do something here return null; } return ( ); }; export default NodePage;