Studio Performers page (#1405)

* Refactor performer filter
* Add performer studio criterion
* Add Studio Performers page
This commit is contained in:
WithoutPants
2021-05-22 17:07:03 +10:00
committed by GitHub
parent 586d146fdb
commit 33999d3e93
11 changed files with 548 additions and 142 deletions

View File

@@ -9,9 +9,17 @@ import { TagsCriterion } from "src/models/list-filter/criteria/tags";
import { ListFilterModel } from "src/models/list-filter/filter";
import { FilterMode } from "src/models/list-filter/types";
import { MoviesCriterion } from "src/models/list-filter/criteria/movies";
import { Criterion } from "src/models/list-filter/criteria/criterion";
function addExtraCriteria(dest: Criterion[], src?: Criterion[]) {
if (src && src.length > 0) {
dest.push(...src);
}
}
const makePerformerScenesUrl = (
performer: Partial<GQL.PerformerDataFragment>
performer: Partial<GQL.PerformerDataFragment>,
extraCriteria?: Criterion[]
) => {
if (!performer.id) return "#";
const filter = new ListFilterModel(FilterMode.Scenes);
@@ -20,11 +28,13 @@ const makePerformerScenesUrl = (
{ id: performer.id, label: performer.name || `Performer ${performer.id}` },
];
filter.criteria.push(criterion);
addExtraCriteria(filter.criteria, extraCriteria);
return `/scenes?${filter.makeQueryParameters()}`;
};
const makePerformerImagesUrl = (
performer: Partial<GQL.PerformerDataFragment>
performer: Partial<GQL.PerformerDataFragment>,
extraCriteria?: Criterion[]
) => {
if (!performer.id) return "#";
const filter = new ListFilterModel(FilterMode.Images);
@@ -33,11 +43,13 @@ const makePerformerImagesUrl = (
{ id: performer.id, label: performer.name || `Performer ${performer.id}` },
];
filter.criteria.push(criterion);
addExtraCriteria(filter.criteria, extraCriteria);
return `/images?${filter.makeQueryParameters()}`;
};
const makePerformerGalleriesUrl = (
performer: Partial<GQL.PerformerDataFragment>
performer: Partial<GQL.PerformerDataFragment>,
extraCriteria?: Criterion[]
) => {
if (!performer.id) return "#";
const filter = new ListFilterModel(FilterMode.Galleries);
@@ -46,6 +58,7 @@ const makePerformerGalleriesUrl = (
{ id: performer.id, label: performer.name || `Performer ${performer.id}` },
];
filter.criteria.push(criterion);
addExtraCriteria(filter.criteria, extraCriteria);
return `/galleries?${filter.makeQueryParameters()}`;
};