Correct tag link for gallery and images tags (#1221)

This commit is contained in:
WithoutPants
2021-03-24 11:03:52 +11:00
committed by GitHub
parent 68d4a4fe42
commit b39fe3ed2b
6 changed files with 39 additions and 9 deletions

View File

@@ -47,7 +47,7 @@ export const GalleryCard: React.FC<IProps> = (props) => {
if (props.gallery.tags.length <= 0) return; if (props.gallery.tags.length <= 0) return;
const popoverContent = props.gallery.tags.map((tag) => ( const popoverContent = props.gallery.tags.map((tag) => (
<TagLink key={tag.id} tag={tag} /> <TagLink key={tag.id} tag={tag} tagType="gallery" />
)); ));
return ( return (

View File

@@ -25,7 +25,7 @@ export const GalleryDetailPanel: React.FC<IGalleryDetailProps> = (props) => {
function renderTags() { function renderTags() {
if (!props.gallery.tags || props.gallery.tags.length === 0) return; if (!props.gallery.tags || props.gallery.tags.length === 0) return;
const tags = props.gallery.tags.map((tag) => ( const tags = props.gallery.tags.map((tag) => (
<TagLink key={tag.id} tag={tag} /> <TagLink key={tag.id} tag={tag} tagType="gallery" />
)); ));
return ( return (
<> <>

View File

@@ -42,7 +42,7 @@ export const ImageCard: React.FC<IImageCardProps> = (
if (props.image.tags.length <= 0) return; if (props.image.tags.length <= 0) return;
const popoverContent = props.image.tags.map((tag) => ( const popoverContent = props.image.tags.map((tag) => (
<TagLink key={tag.id} tag={tag} /> <TagLink key={tag.id} tag={tag} tagType="image" />
)); ));
return ( return (

View File

@@ -14,7 +14,7 @@ export const ImageDetailPanel: React.FC<IImageDetailProps> = (props) => {
function renderTags() { function renderTags() {
if (props.image.tags.length === 0) return; if (props.image.tags.length === 0) return;
const tags = props.image.tags.map((tag) => ( const tags = props.image.tags.map((tag) => (
<TagLink key={tag.id} tag={tag} /> <TagLink key={tag.id} tag={tag} tagType="image" />
)); ));
return ( return (
<> <>

View File

@@ -14,7 +14,7 @@ import { NavUtils, TextUtils } from "src/utils";
interface IProps { interface IProps {
tag?: Partial<TagDataFragment>; tag?: Partial<TagDataFragment>;
tagType?: "performer" | "scene"; tagType?: "performer" | "scene" | "gallery" | "image";
performer?: Partial<PerformerDataFragment>; performer?: Partial<PerformerDataFragment>;
marker?: Partial<SceneMarkerDataFragment>; marker?: Partial<SceneMarkerDataFragment>;
movie?: Partial<MovieDataFragment>; movie?: Partial<MovieDataFragment>;
@@ -27,10 +27,20 @@ export const TagLink: React.FC<IProps> = (props: IProps) => {
let link: string = "#"; let link: string = "#";
let title: string = ""; let title: string = "";
if (props.tag) { if (props.tag) {
if (!props.tagType || props.tagType === "scene") { switch (props.tagType) {
link = NavUtils.makeTagScenesUrl(props.tag); case "scene":
} else { case undefined:
link = NavUtils.makeTagPerformersUrl(props.tag); link = NavUtils.makeTagScenesUrl(props.tag);
break;
case "performer":
link = NavUtils.makeTagPerformersUrl(props.tag);
break;
case "gallery":
link = NavUtils.makeTagGalleriesUrl(props.tag);
break;
case "image":
link = NavUtils.makeTagImagesUrl(props.tag);
break;
} }
title = props.tag.name || ""; title = props.tag.name || "";
} else if (props.performer) { } else if (props.performer) {

View File

@@ -94,6 +94,24 @@ const makeTagSceneMarkersUrl = (tag: Partial<GQL.TagDataFragment>) => {
return `/scenes/markers?${filter.makeQueryParameters()}`; return `/scenes/markers?${filter.makeQueryParameters()}`;
}; };
const makeTagGalleriesUrl = (tag: Partial<GQL.TagDataFragment>) => {
if (!tag.id) return "#";
const filter = new ListFilterModel(FilterMode.Galleries);
const criterion = new TagsCriterion("tags");
criterion.value = [{ id: tag.id, label: tag.name || `Tag ${tag.id}` }];
filter.criteria.push(criterion);
return `/galleries?${filter.makeQueryParameters()}`;
};
const makeTagImagesUrl = (tag: Partial<GQL.TagDataFragment>) => {
if (!tag.id) return "#";
const filter = new ListFilterModel(FilterMode.Images);
const criterion = new TagsCriterion("tags");
criterion.value = [{ id: tag.id, label: tag.name || `Tag ${tag.id}` }];
filter.criteria.push(criterion);
return `/images?${filter.makeQueryParameters()}`;
};
const makeSceneMarkerUrl = ( const makeSceneMarkerUrl = (
sceneMarker: Partial<GQL.SceneMarkerDataFragment> sceneMarker: Partial<GQL.SceneMarkerDataFragment>
) => { ) => {
@@ -108,6 +126,8 @@ export default {
makeTagSceneMarkersUrl, makeTagSceneMarkersUrl,
makeTagScenesUrl, makeTagScenesUrl,
makeTagPerformersUrl, makeTagPerformersUrl,
makeTagGalleriesUrl,
makeTagImagesUrl,
makeSceneMarkerUrl, makeSceneMarkerUrl,
makeMovieScenesUrl, makeMovieScenesUrl,
makeChildStudiosUrl, makeChildStudiosUrl,