AlbumPages is now using useQuery hook instead of <Query> component
This commit is contained in:
parent
9e1a3464eb
commit
f76c3e4e0d
|
@ -1,8 +1,7 @@
|
||||||
import React, { useCallback, useState, useEffect } from 'react'
|
import React, { useCallback, useState, useEffect } from 'react'
|
||||||
import ReactRouterPropTypes from 'react-router-prop-types'
|
import ReactRouterPropTypes from 'react-router-prop-types'
|
||||||
import { useLocation } from 'react-router-dom'
|
import { useLocation } from 'react-router-dom'
|
||||||
import { gql } from '@apollo/client'
|
import { useQuery, gql } from '@apollo/client'
|
||||||
import { Query } from '@apollo/client/react/components'
|
|
||||||
import AlbumGallery from '../../components/albumGallery/AlbumGallery'
|
import AlbumGallery from '../../components/albumGallery/AlbumGallery'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import Layout from '../../Layout'
|
import Layout from '../../Layout'
|
||||||
|
@ -80,7 +79,7 @@ function AlbumPage({ match }) {
|
||||||
)
|
)
|
||||||
|
|
||||||
const toggleFavorites = useCallback(
|
const toggleFavorites = useCallback(
|
||||||
(onlyFavorites, refetch) => {
|
onlyFavorites => {
|
||||||
if (
|
if (
|
||||||
(refetchNeededAll && !onlyFavorites) ||
|
(refetchNeededAll && !onlyFavorites) ||
|
||||||
(refetchNeededFavorites && onlyFavorites)
|
(refetchNeededFavorites && onlyFavorites)
|
||||||
|
@ -97,7 +96,7 @@ function AlbumPage({ match }) {
|
||||||
setOnlyFavorites(onlyFavorites)
|
setOnlyFavorites(onlyFavorites)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[setOnlyFavorites]
|
[setOnlyFavorites, refetch]
|
||||||
)
|
)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -107,44 +106,31 @@ function AlbumPage({ match }) {
|
||||||
history.replaceState({}, '', pathName + '?' + queryString)
|
history.replaceState({}, '', pathName + '?' + queryString)
|
||||||
}, [onlyFavorites, ordering])
|
}, [onlyFavorites, ordering])
|
||||||
|
|
||||||
return (
|
const { loading, error, data, refetch } = useQuery(albumQuery, {
|
||||||
<Query
|
variables: {
|
||||||
query={albumQuery}
|
id: albumId,
|
||||||
variables={{
|
onlyFavorites,
|
||||||
id: albumId,
|
mediaOrderBy: ordering.orderBy,
|
||||||
onlyFavorites,
|
mediaOrderDirection: ordering.orderDirection,
|
||||||
mediaOrderBy: ordering.orderBy,
|
},
|
||||||
mediaOrderDirection: ordering.orderDirection,
|
})
|
||||||
}}
|
|
||||||
>
|
|
||||||
{({ loading, error, data, refetch }) => {
|
|
||||||
const setOnlyFavorites = useCallback(
|
|
||||||
checked => {
|
|
||||||
toggleFavorites(checked, refetch)
|
|
||||||
},
|
|
||||||
[toggleFavorites, refetch]
|
|
||||||
)
|
|
||||||
|
|
||||||
if (error) return <div>Error</div>
|
if (error) return <div>Error</div>
|
||||||
return (
|
|
||||||
<Layout title={data ? data.album.title : 'Loading album'}>
|
return (
|
||||||
<AlbumGallery
|
<Layout title={data ? data.album.title : 'Loading album'}>
|
||||||
album={data && data.album}
|
<AlbumGallery
|
||||||
loading={loading}
|
album={data && data.album}
|
||||||
showFavoritesToggle
|
loading={loading}
|
||||||
setOnlyFavorites={setOnlyFavorites}
|
showFavoritesToggle
|
||||||
onlyFavorites={onlyFavorites}
|
setOnlyFavorites={toggleFavorites}
|
||||||
onFavorite={() =>
|
onlyFavorites={onlyFavorites}
|
||||||
(refetchNeededAll = refetchNeededFavorites = true)
|
onFavorite={() => (refetchNeededAll = refetchNeededFavorites = true)}
|
||||||
}
|
showFilter
|
||||||
showFilter
|
setOrdering={setOrderingCallback}
|
||||||
setOrdering={setOrderingCallback}
|
ordering={ordering}
|
||||||
ordering={ordering}
|
/>
|
||||||
/>
|
</Layout>
|
||||||
</Layout>
|
|
||||||
)
|
|
||||||
}}
|
|
||||||
</Query>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue