From 3818cd6141c1bb7e717018c644e3b8916a6de16c Mon Sep 17 00:00:00 2001 From: goon-foss Date: Fri, 14 Aug 2026 12:41:07 +0200 Subject: [PATCH] fix(tags): wlasna lista tagow dla wertykalow + bez tagow z zerem scen Trzy rzeczy, jedna rodzina bledu "klikniecie prowadzi donikad". 1. Ekran Tags nie znal wertykalu, wiec z zakladki Anime i JAV pokazywal slownictwo GLOWNEGO katalogu. Backend liczyl to poprawnie od dawna (parametr ?vertical=), tylko apka go nie przekazywala. Po zmianie Anime dostaje swoje 3380 tagow (Schoolgirl, Rape, Uncensored, Harem) zamiast zachodnich, ktore w tej sekcji nie maja pokrycia. Tag otwarty z tej listy niesie wertykal dalej. 2. Lista i filtr przestaja pokazywac tagi z zerem scen: 33 427 z 208 822. To glownie slownictwo animacji i JAV, bo `tags.scene_count` z zalozenia nie liczy scen wertykalowych. Widac je bylo przy WYSZUKIWANIU (sortowanie po popularnosci trzymalo je na koncu listy), a kazdy taki tag konczyl sie pustym ekranem. 3. Znaczniki jakosci zniknely wczesniej po stronie danych, wpis w changelogu. Zakres swiadomie zatrzymany: `/performers` nie ma wsparcia dla wertykalu, wiec przycisk Performers na zakladce Anime nadal pokazuje zachodnia obsade. To wymaga zmiany backendu i jest osobnym zadaniem. Co-Authored-By: Claude Opus 5 --- mobile/src/changelog.ts | 9 +++++++++ mobile/src/navigation.tsx | 4 +++- mobile/src/screens/ScenesFilterModal.tsx | 8 +++++--- mobile/src/screens/ScenesScreen.tsx | 2 +- mobile/src/screens/TagsScreen.tsx | 21 +++++++++++++++++---- 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/mobile/src/changelog.ts b/mobile/src/changelog.ts index 1026dab..6751f2d 100644 --- a/mobile/src/changelog.ts +++ b/mobile/src/changelog.ts @@ -16,6 +16,15 @@ export type ChangelogEntry = { }; export const CHANGELOG: ChangelogEntry[] = [ + { + id: '2026-08-14d', + date: 'August 2026', + items: [ + 'The Anime and JAV sections now have their own tag list. Opening Tags from those tabs used to show the main catalogue vocabulary, where almost every tag led to an empty screen.', + 'Tags that have no scenes are no longer listed or offered in filters. Searching the tag list used to turn up thousands of dead entries, mostly character names from animation.', + 'Quality tags (HD, 4k, 720p) are gone. They were a claim by the site rather than a fact, and the app already works out real quality from the video sources.', + ], + }, { id: '2026-08-14c', date: 'August 2026', diff --git a/mobile/src/navigation.tsx b/mobile/src/navigation.tsx index 8d984fd..a2eeaaf 100644 --- a/mobile/src/navigation.tsx +++ b/mobile/src/navigation.tsx @@ -59,7 +59,9 @@ export type RootStackParamList = { // StudioMovies: `slug` do filter movies `studio_slugs`, `studioId` (UUID) do favorite. StudioMovies: { slug: string; name: string; studioId: string }; Favorites: undefined; - Tags: undefined; + // `vertical` przynoszony z zakladki (Anime/JAV). Bez niego lista tagow pokazywala + // slownictwo GLOWNEGO feedu, wiec z Anime kazdy tag prowadzil donikad. + Tags: { vertical?: string } | undefined; TagScenes: { slug: string; name: string; vertical?: string | null }; AppLockSettings: undefined; Blacklist: undefined; diff --git a/mobile/src/screens/ScenesFilterModal.tsx b/mobile/src/screens/ScenesFilterModal.tsx index f3dc1d0..7cc7e21 100644 --- a/mobile/src/screens/ScenesFilterModal.tsx +++ b/mobile/src/screens/ScenesFilterModal.tsx @@ -89,9 +89,11 @@ export function ScenesFilterModal({ q: tagQ || undefined, per_page: 200, vertical, - // Wertykał liczy tagi na żywo i zwraca tylko swoje; w głównym feedzie - // zostawiamy dotychczasowe zachowanie. - only_with_content: vertical ? true : undefined, + // Zawsze, w obu trybach. Tag z zerem scen w danej sekcji nic nie odfiltruje, + // wiec oferowanie go w filtrze to obietnica bez pokrycia. W glownym feedzie + // takich tagow bylo 33 427 z 208 822 (cale slownictwo animacji i JAV, bo + // `tags.scene_count` z zalozenia nie liczy scen wertykalowych). + only_with_content: true, }), enabled: visible, }); diff --git a/mobile/src/screens/ScenesScreen.tsx b/mobile/src/screens/ScenesScreen.tsx index e533efe..c644ee3 100644 --- a/mobile/src/screens/ScenesScreen.tsx +++ b/mobile/src/screens/ScenesScreen.tsx @@ -219,7 +219,7 @@ export function ScenesScreen() { navigation.navigate('Tags')} + onPress={() => navigation.navigate('Tags', verticalKey ? { vertical: verticalKey } : undefined)} > Tags diff --git a/mobile/src/screens/TagsScreen.tsx b/mobile/src/screens/TagsScreen.tsx index 92a54b6..db5372c 100644 --- a/mobile/src/screens/TagsScreen.tsx +++ b/mobile/src/screens/TagsScreen.tsx @@ -1,6 +1,7 @@ // Lista tagów + tap → TagScenes. Domyślny order: popular (po liczbie scen desc). // Layout: chip-grid, bo nazwy tagów są krótkie i upacking ich w listę marnuje miejsce. -import { useNavigation } from '@react-navigation/native'; +import { useNavigation, useRoute } from '@react-navigation/native'; +import type { RouteProp } from '@react-navigation/native'; import { formatCount } from '../lib/formatCount'; import type { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { useQuery } from '@tanstack/react-query'; @@ -25,6 +26,8 @@ export function TagsScreen() { const client = useClient(); const navigation = useNavigation>(); + const route = useRoute>(); + const vertical = route.params?.vertical; const [q, setQ] = useState(''); const [debouncedQ, setDebouncedQ] = useState(''); const [order, setOrder] = useState('popular'); @@ -36,8 +39,18 @@ export function TagsScreen() { }, [q]); const { data, isLoading, error, refetch, isRefetching } = useQuery({ - queryKey: ['tags', debouncedQ, order], - queryFn: () => client.listTags({ q: debouncedQ || undefined, order, per_page: 500 }), + queryKey: ['tags', debouncedQ, order, vertical ?? null], + queryFn: () => + client.listTags({ + q: debouncedQ || undefined, + order, + per_page: 500, + vertical, + // Tag z zerem scen prowadzi do pustego ekranu, wiec nie ma go po co pokazywac. + // W glownym feedzie bylo takich 33 427 z 208 822, w tym cale slownictwo + // animacji i JAV (licznik `tags.scene_count` z zalozenia pomija wertykaly). + only_with_content: true, + }), }); const total = data?.items.length ?? 0; @@ -88,7 +101,7 @@ export function TagsScreen() { - navigation.navigate('TagScenes', { slug: item.slug, name: item.name }) + navigation.navigate('TagScenes', { slug: item.slug, name: item.name, vertical }) } /> )}