import { getQueries } from '@/api/cache/query'; import initializeApollo from '@/apollo/client'; import * as Admin from '@/Components/Admin'; import { Error } from '@/Components/Common/Error'; import { getPageTitle } from '@/utils/page'; import { makeGetUserType } from '@/utils/user'; import { dehydrate, QueryClient } from '@tanstack/react-query'; import Head from 'next/head'; function Content() { return ( {getPageTitle('Управление кэшем')} ); } export default function Page(props) { if (props.statusCode !== 200) return ; return ; } /** @type {import('next').GetServerSideProps} */ export async function getServerSideProps({ req }) { const { cookie = '' } = req.headers; const queryClient = new QueryClient(); const apolloClient = initializeApollo(); const getUserType = makeGetUserType({ apolloClient, queryClient }); try { const user = await getUserType({ cookie }); if (!user.admin) { return { props: { initialQueryState: dehydrate(queryClient), statusCode: 403, }, }; } await queryClient.prefetchQuery(['admin', 'cache', 'queries'], ({ signal }) => getQueries({ signal }) ); return { props: { calculation: {}, initialApolloState: apolloClient.cache.extract(), initialQueryState: dehydrate(queryClient), statusCode: 200, user, }, }; } catch (error) { return { props: { error: JSON.stringify(error), initialQueryState: dehydrate(queryClient), statusCode: 500, }, }; } }