Add routing, cast API conversion, and filters
Introduce client-side routing and cast API support. Key changes: - Add react-router-dom dependency and wire BrowserRouter in App. - Convert App to route-based structure (/, /media/:id, /cast, /cast/:id, /add, /import) with MediaDetailRoute and CastDetailRoute helpers. - Extend API types for cast items and add convertApiCastToStaff; fetchAllCast now returns Staff[] (mapped via converter). - Update components to use react-router hooks (useNavigate, useParams, useLocation, Link/NavLink): Header links, DetailView, CastDetailView, AddMediaView, ImporterView and others now navigate via routes. - Enhance CastView: fetch cast list, loading state, persistent search/sort/filter controls, filtering by occupations/media types and enabled categories, improved pagination and UI controls. - Update stashapp importer: add configurable blacklist check to skip scenes, increase per_page for queries. These changes consolidate navigation, improve cast data handling from the API, and add richer filtering and importer controls.
This commit is contained in:
48
src/types.ts
48
src/types.ts
@@ -40,14 +40,58 @@ export interface Episode {
|
||||
export interface Staff {
|
||||
id: string;
|
||||
name: string;
|
||||
cleanname?: string;
|
||||
role: string;
|
||||
photo: string;
|
||||
characterName: string;
|
||||
characterImage: string;
|
||||
characterName?: string;
|
||||
characterImage?: string;
|
||||
mediaId?: string;
|
||||
mediaTitle?: string;
|
||||
bio?: string;
|
||||
birthDate?: string;
|
||||
birthPlace?: string;
|
||||
occupations?: string[];
|
||||
createdAt?: string;
|
||||
updatedAt?: string;
|
||||
bust_size?: number | null;
|
||||
cup_size?: string | null;
|
||||
waist_size?: number | null;
|
||||
hip_size?: number | null;
|
||||
height?: number | null;
|
||||
weight?: number | null;
|
||||
hair_color?: string | null;
|
||||
eye_color?: string | null;
|
||||
ethnicity?: string | null;
|
||||
filmography?: CastMediaItem[];
|
||||
media_types?: string[];
|
||||
adult_specifics?: AdultSpecifics;
|
||||
}
|
||||
|
||||
export interface CastMediaItem {
|
||||
id: number;
|
||||
title: string;
|
||||
year: number;
|
||||
poster: string | null;
|
||||
category: string | null;
|
||||
type: string;
|
||||
role: string;
|
||||
characterName?: string | null;
|
||||
}
|
||||
|
||||
export interface AdultSpecifics {
|
||||
id: number;
|
||||
cast_id: number;
|
||||
bust_size?: number | null;
|
||||
cup_size?: string | null;
|
||||
waist_size?: number | null;
|
||||
hip_size?: number | null;
|
||||
height?: number | null;
|
||||
weight?: number | null;
|
||||
hair_color?: string | null;
|
||||
eye_color?: string | null;
|
||||
ethnicity?: string | null;
|
||||
tattoos?: string | null;
|
||||
piercings?: string | null;
|
||||
measurements?: string | null;
|
||||
shoe_size?: number | null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user