From 01566a0cc79aa4fad80b847406b18db011ea24ce Mon Sep 17 00:00:00 2001 From: anuveyatsu Date: Wed, 24 Jun 2020 12:32:44 +0600 Subject: [PATCH] [home page][xs]: integrate with Apollo. --- components/home/Recent.tsx | 39 ++++++++++++++++++++++++++++++++++++-- pages/index.tsx | 22 ++++++++++----------- 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/components/home/Recent.tsx b/components/home/Recent.tsx index 37f9f4a2..8177a185 100644 --- a/components/home/Recent.tsx +++ b/components/home/Recent.tsx @@ -1,11 +1,46 @@ import Link from 'next/link'; +import ErrorMessage from '../Error'; +import { useQuery } from '@apollo/react-hooks'; +import gql from 'graphql-tag'; + +export const QUERY = gql` + query search($q: String, $sort: String) { + search(q: $q, sort: $sort) + @rest(type: "Search", path: "package_search?{args}") { + result { + results { + name + title + organization { + name + title + description + } + } + } + } + } +`; + +function Recent() { + const { loading, error, data } = useQuery(QUERY, { + sort: 'sort=metadata_created%20desc', + // Setting this value to true will make the component rerender when + // the "networkStatus" changes, so we are able to know if it is fetching + // more data + notifyOnNetworkStatusChange: true, + }); + + if (error) return ; + if (loading) return
Loading
; + + const { result } = data.search; -function Recent({ datapackages }) { return (

Recent Datasets

- {datapackages.map((resource, index) => ( + {result.results.map((resource, index) => (
- + ); } export const getServerSideProps: GetServerSideProps = async (context) => { - const res = await fetch( - `${config.get( - 'DMS' - )}/api/3/action/package_search?sort=metadata_created%20desc` - ); - const ckanResult = (await res.json()).result; - const datapackages = ckanResult.results; + const apolloClient = initializeApollo(); + + await apolloClient.query({ + query: QUERY, + }); + return { props: { - datapackages, + initialApolloState: apolloClient.cache.extract(), }, }; };