Applying tag filters to URL.

This commit is contained in:
2020-05-27 01:40:10 +02:00
parent 86377fec5f
commit 88a88227c4
16 changed files with 210 additions and 96 deletions

View File

@@ -1,5 +1,6 @@
import { graphql, get } from '../api';
import {
releaseFields,
releasePosterFragment,
releaseActorsFragment,
releaseTagsFragment,
@@ -8,13 +9,19 @@ import { curateActor, curateRelease } from '../curate';
import getDateRange from '../get-date-range';
function initActorActions(store, _router) {
async function fetchActorById({ _commit }, { actorId, limit = 100, range = 'latest' }) {
async function fetchActorById({ _commit }, {
actorId,
limit = 10,
pageNumber = 1,
range = 'latest',
}) {
const { before, after, orderBy } = getDateRange(range);
const { actor } = await graphql(`
const { actor, connection: { releases, totalCount } } = await graphql(`
query Actor(
$actorId: Int!
$limit:Int = 1000,
$limit:Int = 10,
$offset:Int = 0,
$after:Date = "1900-01-01",
$before:Date = "2100-01-01",
$orderBy:[ReleasesActorsOrderBy!]
@@ -123,7 +130,7 @@ function initActorActions(store, _router) {
name
slug
}
releases: releasesActors(
releasesConnection: releasesActorsConnection(
filter: {
release: {
date: {
@@ -140,45 +147,80 @@ function initActorActions(store, _router) {
}
}
}
},
first: $limit,
}
first: $limit
offset: $offset
orderBy: $orderBy
) {
release {
id
url
title
date
slug
${releaseActorsFragment}
${releaseTagsFragment}
${releasePosterFragment}
site {
id
name
slug
url
network {
id
name
slug
url
}
}
}
releases: nodes {
release {
id
url
title
date
slug
${releaseActorsFragment}
${releaseTagsFragment}
${releasePosterFragment}
site {
id
name
slug
url
network {
id
name
slug
url
}
}
}
}
}
}
connection: releasesActorsConnection(
first: $limit
offset: $offset
orderBy: $orderBy
filter: {
actorId: {
equalTo: $actorId
}
or: [
{
release: {
date: {
lessThan: $before,
greaterThan: $after
}
}
},
]
}
) {
releases: nodes {
release {
${releaseFields}
}
}
totalCount
}
}
`, {
actorId,
limit,
offset: Math.max(0, (pageNumber - 1)) * limit,
after,
before,
orderBy: orderBy === 'DATE_DESC' ? 'RELEASE_BY_RELEASE_ID__DATE_DESC' : 'RELEASE_BY_RELEASE_ID__DATE_ASC',
exclude: store.state.ui.filter,
});
return curateActor(actor, null, curateRelease);
return {
actor: curateActor(actor, null, curateRelease),
releases: releases.map(release => curateRelease(release.release)),
totalCount,
};
}
async function fetchActors({ _commit }, {