Add support for favorite Studios (#4675)

* Backend changes
* Add favorite icon to studio cards
* Add favorite button to studio page
* Add studio favorite filtering
This commit is contained in:
WithoutPants
2024-03-14 11:17:44 +11:00
committed by GitHub
parent e5929389b4
commit 8c454582c7
25 changed files with 185 additions and 52 deletions

View File

@@ -1,14 +1,26 @@
import { BooleanCriterion, BooleanCriterionOption } from "./criterion";
export const FavoriteCriterionOption = new BooleanCriterionOption(
export const FavoritePerformerCriterionOption = new BooleanCriterionOption(
"favourite",
"filter_favorites",
() => new FavoriteCriterion()
() => new FavoritePerformerCriterion()
);
export class FavoriteCriterion extends BooleanCriterion {
export class FavoritePerformerCriterion extends BooleanCriterion {
constructor() {
super(FavoriteCriterionOption);
super(FavoritePerformerCriterionOption);
}
}
export const FavoriteStudioCriterionOption = new BooleanCriterionOption(
"favourite",
"favorite",
() => new FavoriteStudioCriterion()
);
export class FavoriteStudioCriterion extends BooleanCriterion {
constructor() {
super(FavoriteStudioCriterionOption);
}
}

View File

@@ -6,7 +6,7 @@ import {
createDateCriterionOption,
createMandatoryTimestampCriterionOption,
} from "./criteria/criterion";
import { FavoriteCriterionOption } from "./criteria/favorite";
import { FavoritePerformerCriterionOption } from "./criteria/favorite";
import { GenderCriterionOption } from "./criteria/gender";
import { CircumcisedCriterionOption } from "./criteria/circumcised";
import { PerformerIsMissingCriterionOption } from "./criteria/is-missing";
@@ -81,7 +81,7 @@ const stringCriteria: CriterionType[] = [
];
const criterionOptions = [
FavoriteCriterionOption,
FavoritePerformerCriterionOption,
GenderCriterionOption,
CircumcisedCriterionOption,
PerformerIsMissingCriterionOption,

View File

@@ -5,6 +5,7 @@ import {
createStringCriterionOption,
createMandatoryTimestampCriterionOption,
} from "./criteria/criterion";
import { FavoriteStudioCriterionOption } from "./criteria/favorite";
import { StudioIsMissingCriterionOption } from "./criteria/is-missing";
import { RatingCriterionOption } from "./criteria/rating";
import { StashIDCriterionOption } from "./criteria/stash-ids";
@@ -36,6 +37,7 @@ const sortByOptions = ["name", "random", "rating"]
const displayModeOptions = [DisplayMode.Grid, DisplayMode.Tagger];
const criterionOptions = [
FavoriteStudioCriterionOption,
createMandatoryStringCriterionOption("name"),
createStringCriterionOption("details"),
ParentStudiosCriterionOption,

View File

@@ -135,6 +135,7 @@ export type CriterionType =
| "audio_codec"
| "duration"
| "filter_favorites"
| "favorite"
| "has_markers"
| "is_missing"
| "tags"