[dataset page][xl]: refactor to work with Apollo.

This commit is contained in:
anuveyatsu
2020-06-19 18:14:22 +06:00
parent 04afb487c7
commit 9ae654dc71
4 changed files with 152 additions and 27 deletions

View File

@@ -1,39 +1,59 @@
import { GetServerSideProps } from 'next';
import { useQuery } from '@apollo/react-hooks';
import { initializeApollo } from '../../../lib/apolloClient';
import config from '../../../config';
import utils from '../../../utils';
import Head from 'next/head';
import Nav from '../../../components/home/Nav';
import About from '../../../components/dataset/About';
import Org from '../../../components/dataset/Org';
import Resources from '../../../components/dataset/Resources';
import Resources, {
DEFAULT_DATASET_QUERY,
} from '../../../components/dataset/Resources';
function Dataset({ variables }) {
const {
data: {
dataset: { result },
},
} = useQuery(DEFAULT_DATASET_QUERY, { variables });
function Dataset({ datapackage }) {
return (
<>
<Head>
<title>Portal | {datapackage.title || datapackage.name}</title>
<title>Portal | {result.title || result.name}</title>
<link rel="icon" href="/favicon.ico" />
</Head>
<Nav />
<main className="p-6">
<h1 className="text-3xl font-semibold text-primary mb-2">
{datapackage.title || datapackage.name}
{result.title || result.name}
</h1>
<Org org={datapackage.organization} />
<About datapackage={datapackage} />
<Resources datapackage={datapackage} />
<Org variables={variables} />
<About variables={variables} />
<Resources variables={variables} />
</main>
</>
);
}
export const getServerSideProps: GetServerSideProps = async (context) => {
const res = await fetch(
`${config.get('DMS')}/api/3/action/package_show?id=${context.query.dataset}`
);
const ckanResult = (await res.json()).result;
const datapackage = utils.ckanToDataPackage(ckanResult);
return { props: { datapackage } };
const apolloClient = initializeApollo();
const variables = {
id: context.query.dataset,
};
const apolloResponse = await apolloClient.query({
query: DEFAULT_DATASET_QUERY,
variables,
});
return {
props: {
initialApolloState: apolloClient.cache.extract(),
variables,
},
};
};
export default Dataset;