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;
const popoverContent = props.gallery.tags.map((tag) => (
<TagLink key={tag.id} tag={tag} />
<TagLink key={tag.id} tag={tag} tagType="gallery" />
));
return (

View File

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

View File

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

View File

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

View File

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

View File

@@ -94,6 +94,24 @@ const makeTagSceneMarkersUrl = (tag: Partial<GQL.TagDataFragment>) => {
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 = (
sceneMarker: Partial<GQL.SceneMarkerDataFragment>
) => {
@@ -108,6 +126,8 @@ export default {
makeTagSceneMarkersUrl,
makeTagScenesUrl,
makeTagPerformersUrl,
makeTagGalleriesUrl,
makeTagImagesUrl,
makeSceneMarkerUrl,
makeMovieScenesUrl,
makeChildStudiosUrl,