2019-12-16 04:30:25 +00:00
|
|
|
import { graphql, get } from '../api';
|
|
|
|
import {
|
2020-05-14 02:26:05 +00:00
|
|
|
releaseFields,
|
2019-12-16 04:30:25 +00:00
|
|
|
} from '../fragments';
|
2020-09-09 02:22:43 +00:00
|
|
|
import { curateTag, curateRelease } from '../curate';
|
2020-05-08 23:10:07 +00:00
|
|
|
import getDateRange from '../get-date-range';
|
2019-11-11 04:18:28 +00:00
|
|
|
|
2019-11-15 04:10:59 +00:00
|
|
|
function initTagsActions(store, _router) {
|
2020-09-09 02:22:43 +00:00
|
|
|
async function fetchTagBySlug({ _commit }, {
|
|
|
|
tagSlug,
|
|
|
|
pageNumber = 1,
|
|
|
|
limit = 100,
|
|
|
|
range = 'latest',
|
|
|
|
}) {
|
2020-05-14 02:26:05 +00:00
|
|
|
const { before, after, orderBy } = getDateRange(range);
|
2020-05-08 23:10:07 +00:00
|
|
|
|
2020-05-14 02:26:05 +00:00
|
|
|
const { tagBySlug } = await graphql(`
|
2020-01-08 23:23:37 +00:00
|
|
|
query Tag(
|
|
|
|
$tagSlug:String!
|
2020-09-09 02:22:43 +00:00
|
|
|
$offset: Int = 0,
|
2020-01-08 23:23:37 +00:00
|
|
|
$limit:Int = 1000,
|
2020-07-16 13:55:03 +00:00
|
|
|
$after:Datetime = "1900-01-01",
|
|
|
|
$before:Datetime = "2100-01-01",
|
2020-09-09 02:22:43 +00:00
|
|
|
$orderBy: [ReleasesOrderBy!],
|
2020-01-30 22:44:18 +00:00
|
|
|
$exclude: [String!]
|
2020-01-08 23:23:37 +00:00
|
|
|
) {
|
2019-12-16 04:30:25 +00:00
|
|
|
tagBySlug(slug:$tagSlug) {
|
|
|
|
id
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
description
|
|
|
|
group {
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
}
|
2019-12-19 03:42:50 +00:00
|
|
|
poster: tagsPosterByTagId {
|
|
|
|
media {
|
|
|
|
id
|
|
|
|
thumbnail
|
2020-12-29 19:02:26 +00:00
|
|
|
lazy
|
2019-12-19 03:42:50 +00:00
|
|
|
path
|
|
|
|
comment
|
2021-03-07 03:05:25 +00:00
|
|
|
entity {
|
|
|
|
id
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
type
|
|
|
|
independent
|
|
|
|
parent {
|
|
|
|
id
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
type
|
|
|
|
independent
|
|
|
|
}
|
|
|
|
}
|
2020-03-23 00:43:49 +00:00
|
|
|
sfw: sfwMedia {
|
|
|
|
id
|
|
|
|
thumbnail
|
2020-12-29 19:02:26 +00:00
|
|
|
lazy
|
2020-03-23 00:43:49 +00:00
|
|
|
path
|
|
|
|
comment
|
|
|
|
}
|
2019-12-19 03:42:50 +00:00
|
|
|
}
|
2019-12-16 04:30:25 +00:00
|
|
|
}
|
2020-09-05 00:57:24 +00:00
|
|
|
photos: tagsPhotos(orderBy: MEDIA_BY_MEDIA_ID__INDEX_ASC) {
|
2019-12-19 03:42:50 +00:00
|
|
|
media {
|
|
|
|
id
|
|
|
|
thumbnail
|
2020-04-08 12:50:43 +00:00
|
|
|
lazy
|
2019-12-19 03:42:50 +00:00
|
|
|
path
|
|
|
|
comment
|
2021-03-07 03:05:25 +00:00
|
|
|
entity {
|
|
|
|
id
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
type
|
|
|
|
independent
|
|
|
|
parent {
|
|
|
|
id
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
type
|
|
|
|
independent
|
|
|
|
}
|
|
|
|
}
|
2020-03-23 00:43:49 +00:00
|
|
|
sfw: sfwMedia {
|
|
|
|
id
|
|
|
|
thumbnail
|
2020-04-08 12:50:43 +00:00
|
|
|
lazy
|
2020-03-23 00:43:49 +00:00
|
|
|
path
|
|
|
|
comment
|
|
|
|
}
|
2019-12-19 03:42:50 +00:00
|
|
|
}
|
2019-12-16 04:30:25 +00:00
|
|
|
}
|
2020-09-09 02:22:43 +00:00
|
|
|
scenesConnection(
|
2020-01-08 23:23:37 +00:00
|
|
|
filter: {
|
2020-09-09 02:22:43 +00:00
|
|
|
date: {
|
|
|
|
lessThan: $before,
|
|
|
|
greaterThan: $after,
|
|
|
|
},
|
|
|
|
releasesTagsConnection: {
|
|
|
|
none: {
|
|
|
|
tag: {
|
|
|
|
slug: {
|
|
|
|
in: $exclude
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-01-08 23:23:37 +00:00
|
|
|
},
|
|
|
|
first: $limit,
|
|
|
|
orderBy: $orderBy,
|
2020-09-09 02:22:43 +00:00
|
|
|
offset: $offset
|
2020-01-08 23:23:37 +00:00
|
|
|
) {
|
2020-09-09 02:22:43 +00:00
|
|
|
releases: nodes {
|
|
|
|
${releaseFields}
|
|
|
|
}
|
|
|
|
totalCount
|
|
|
|
}
|
2019-12-16 04:30:25 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
`, {
|
2020-05-14 02:26:05 +00:00
|
|
|
tagSlug,
|
|
|
|
limit,
|
|
|
|
after,
|
|
|
|
before,
|
2021-02-24 12:55:40 +00:00
|
|
|
orderBy,
|
2020-09-09 02:22:43 +00:00
|
|
|
offset: Math.max(0, (pageNumber - 1)) * limit,
|
2021-01-03 21:53:51 +00:00
|
|
|
exclude: store.state.ui.tagFilter.filter(tagFilter => tagFilter !== tagSlug),
|
2020-05-14 02:26:05 +00:00
|
|
|
});
|
2019-12-16 04:30:25 +00:00
|
|
|
|
2020-09-09 02:22:43 +00:00
|
|
|
return {
|
|
|
|
tag: curateTag(tagBySlug, null, curateRelease),
|
|
|
|
releases: tagBySlug.scenesConnection.releases.map(release => curateRelease(release)),
|
|
|
|
totalCount: tagBySlug.scenesConnection.totalCount,
|
|
|
|
};
|
2020-05-14 02:26:05 +00:00
|
|
|
}
|
2019-12-16 04:30:25 +00:00
|
|
|
|
2020-05-14 02:26:05 +00:00
|
|
|
async function fetchTags({ _commit }, {
|
|
|
|
limit = 100,
|
|
|
|
slugs = [],
|
|
|
|
_group,
|
|
|
|
_priority,
|
|
|
|
}) {
|
|
|
|
const { tags } = await graphql(`
|
2020-01-08 23:23:37 +00:00
|
|
|
query Tags(
|
|
|
|
$slugs: [String!] = [],
|
|
|
|
$limit: Int = 100
|
|
|
|
) {
|
|
|
|
tags(
|
|
|
|
filter: { slug: { in: $slugs } },
|
|
|
|
first: $limit
|
|
|
|
) {
|
|
|
|
id
|
2019-12-16 04:30:25 +00:00
|
|
|
name
|
|
|
|
slug
|
2020-01-08 23:23:37 +00:00
|
|
|
poster: tagsPosterByTagId {
|
|
|
|
media {
|
|
|
|
thumbnail
|
2020-03-28 03:37:04 +00:00
|
|
|
comment
|
2020-04-08 12:50:43 +00:00
|
|
|
lazy
|
2021-03-07 03:05:25 +00:00
|
|
|
entity {
|
|
|
|
id
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
type
|
|
|
|
independent
|
|
|
|
parent {
|
|
|
|
id
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
type
|
|
|
|
independent
|
|
|
|
}
|
|
|
|
}
|
2020-03-23 00:43:49 +00:00
|
|
|
sfw: sfwMedia {
|
|
|
|
thumbnail
|
2020-03-28 03:37:04 +00:00
|
|
|
comment
|
2020-04-08 12:50:43 +00:00
|
|
|
lazy
|
2020-03-23 00:43:49 +00:00
|
|
|
}
|
2020-01-08 23:23:37 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
group {
|
|
|
|
name
|
|
|
|
slug
|
|
|
|
}
|
2019-12-16 04:30:25 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
`, {
|
2020-05-14 02:26:05 +00:00
|
|
|
slugs,
|
|
|
|
limit,
|
|
|
|
});
|
2019-12-16 04:30:25 +00:00
|
|
|
|
2020-05-14 02:26:05 +00:00
|
|
|
return tags.map(tag => curateTag(tag, store.state.ui.sfw));
|
|
|
|
}
|
2019-11-11 04:18:28 +00:00
|
|
|
|
2020-05-14 02:26:05 +00:00
|
|
|
async function fetchTagReleases({ _commit }, tagId) {
|
|
|
|
const releases = await get(`/tags/${tagId}/releases`, {
|
|
|
|
filter: store.state.ui.filter,
|
|
|
|
after: store.getters.after,
|
|
|
|
before: store.getters.before,
|
|
|
|
});
|
2019-11-11 04:18:28 +00:00
|
|
|
|
2020-05-14 02:26:05 +00:00
|
|
|
return releases;
|
|
|
|
}
|
2019-11-11 04:18:28 +00:00
|
|
|
|
2020-05-14 02:26:05 +00:00
|
|
|
return {
|
|
|
|
fetchTagBySlug,
|
|
|
|
fetchTags,
|
|
|
|
fetchTagReleases,
|
|
|
|
};
|
2019-11-11 04:18:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export default initTagsActions;
|